如何在Curses中获得Shift + X/Alt + X键?

问题描述:

我目前使用此代码来抓取关键笔划,但我缺少例如移位/Alt键键等 Ctrl键 + + 小号Ctrl键 + + Alt键 + 小号如何在Curses中获得Shift + X/Alt + X键?

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 

有没有wa Ÿ抓住他们所有?

另外:我怎样才能辨别Ctrl键 + Ĵ/Ctrl键 + 中号Ctrl键 + 输入/输入,这给了相同的键码(10/13) ?

也:如何从CTR区分按Ctrl + J/Ctrl + M键+输入/输入, 这给相同的键码(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从输入等..

https://launchpad.net/pangoterm

但是,除此之外,答案仍然是“你不能”。