我目前正在使用此代码获取按键笔划,但我缺少例如shift/alt键
Ctrl+Shift+S、Ctrl+Shift++`、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+enter/enter,它们给出相同的键代码(10/13)?

最佳答案

另外:如何区分ctrl+j/ctrl+m和ctr+enter/enter,
提供相同的密钥代码(10/13)
长话短说-你不能。终端几乎肯定会为每个字节产生相同的字节请阅读
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
然而,除此之外,答案仍然是“你不能”。

09-11 05:37
查看更多