1

SHIFTおよびCTRL修飾子が押されている場合と押されていない場合で、矢印キーが押されたことを検出できません。

私は次のテストコードを持っています:

WINDOW * mainwin = initscr();
keypad(mainwin, TRUE);
int c = wgetch(mainwin);

これにより、矢印キー(修飾子付き)が押され、端末のTERM設定が「xterm」に設定されている場合、「c」に異なる値が正常に返されます。端末のTERM設定が「linux」に設定されている場合は機能しません。'c'で得られるのは、ShiftキーまたはCtrlキーを押した状態で27です。

Linuxターミナルタイプを使用して動作させたいです。助言がありますか?

4

1 に答える 1

3

Linux コンソールは、変更されたカーソル キーをまったく表示できません。または状態は送信されないためShift、このコンソールでは検出できません。CtrlAlt

本物の xterm または十分に互換性のあるクローン (そしてほとんどが最近のもの) では、それを検出できますが、それをncurses理解せず、生成された拡張エスケープ シーケンスによって混乱する十分に新しい機能です。

その場合のために、最新の端末機能を処理するように特別に設計されたキーボード入力処理ライブラリを作成しました。その中には拡張キーのサポートがあります。

cursesの代わりにそれを使用してみてくださいgetch()

于 2012-04-05T13:10:15.963 に答える