2012-01-30 21 views
1

SHIFTキーとCTRLキーを押したままにして、矢印キーを押しても問題がありません。矢印キーと修飾キー付きのNCurses

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

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

矢印キーとき、これが正常に「C」に異なる値を返す - 修飾子とは - 押され、および端末のTERMの設定が「のxterm」に設定されています。ターミナルのTERM設定が'linux'に設定されている場合は動作しません。私が 'c'のために得るのは、シフトまたはCtrlを押したままで27です。

私はそれをLinux端末タイプを使用して動作させたいと思います。助言がありますか?

+0

TERM設定は、実行している端末と一致する必要があります。 "linux"はxtermではLinuxコンソールでのみ動作します。 – Craig

答えて

3

Linuxコンソールは、修正されたカーソルキーをまったく表すことができません。このコンソールにはShiftCtrlまたはAltの状態は送信されないため検出できません。

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

この場合、私はkeyboard input handling libraryを書いて、最新の端末能力を扱うように特別に設計されています。それらの中には拡張されたキーサポートがあります。

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

関連する問題