2011-01-13 38 views
1

我目前使用此代碼來抓取關鍵筆劃,但我缺少例如移位/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) ?

回答

4

也:如何從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

但是,除此之外,答案仍然是「你不能」。