質問
私は現在、このコードを使用してキーストロークをつかんでいますが、例えば見逃しています シフト/alt のようなキーCtrl+シフト+s, Ctrl+シフト+↑, alt+s, 、など
require 'curses'
Curses.noecho
Curses.raw
Curses.stdscr.keypad(true)
Curse.nonl
count = 0
loop do
count = (count + 1) % 20
key = Curses.getch
break if key == ?\C-c
Curses.setpos(count,0)
Curses.addstr("#{key.inspect} ");
end
それらすべてをキャプチャする方法はありますか?
また、どうすれば区別できますか Ctrl+j / Ctrl+m から Ctrl+入る / 入る, 、同じキーコードを与えます(10
/13
)?
解決
また:Ctrl+J / Ctrl+MをCtr+Enter / Enterを区別するにはどうすればよいですか。
長い話の短い - あなたはできません。端子は、ほぼ確実にそれぞれに対して同じバイトを生成します。読んでください
http://www.leonerd.org.uk/hacks/fixterms/
そうは言っても、あなたが特に勇敢だと感じているなら、あなたは私のことを試すことができます libtermkey
http://www.leonerd.org.uk/code/libtermkey/
これは少なくとも正確には、そのようなものを解析します Ctrl-arrow
. 。 Rubyバインディングはありませんが、PerlとPythonの両方の存在は、書くのが非常に簡単であることを示唆しています。
最後に、あなたが勇敢にさえ感じているなら、あなたは私が書いたターミナルを実行することができます、 pangoterm
, 、任意に変更されたUnicodeキーをエンコードする一般的な方法があるため、Ctrl-MとENTERなどを区別できます...
https://launchpad.net/pangoterm
ただし、これらの外では、答えは「できない」ままです。
所属していません StackOverflow