私はRubyプログラムでControl-Left、Shift-F10などをトラップしようとしています。通常、getchを使用すると、27,91,50,50,126などのintのリストが得られます。しかし、私はこれらがシステムや端末に依存する可能性があることを恐れています。グーグルで私はuse_extended_names、tigetstrなどについて見つけました。実行時にキーコードを検出するCプログラムを見つけました(Thomas Dickeyによる)。私はそれを実行し、それは拡張されたキーを発見するようだが、同じプログラム内のgetchは、とにかく私が取得しているC-leftの[27,91,53,68]のようなintの通常のリストを与える。私はそれが言及する一つの戻り値を得ると期待しています。拡張キーをトラップするncurses
何が欠けていますか?私はコントロール左を押すと、ここで
が出力されます。
keypress=27
keypress=91
keypress=53
keypress=68
key=kLFT5, code=540
key=kEND5, code=525
key=kHOM5, code=530
key=kHOM3, code=528
key=kUP5, code=561
key=kDN5, code=520
私は540を得ないでしょうか?ここで
がkeytest.cです:不思議なhttps://gist.github.com/1237091
TERM =スクリーンの下で実行している場合、すべてのコードが0を示しています。上記はTERM = xtermです。 (私は端末を使用してOSXを使用しています)
サンプルプログラムを実行すると、3行が表示されます。tigetstr ...これらの行が表示されない場合は、端末の説明に問題があります。どのOSと端末を実行していますか? – Craig