質問

私は現在、このコードを使用してキーストロークをつかんでいますが、例えば見逃しています シフト/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

ただし、これらの外では、答えは「できない」ままです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top