2011-01-13 7 views
1

私は現在、このコードをキーストロークを取得するために使用していますが、抜けています。 はCtrl +Shiftキー + SはCtrl +Shiftキー + Altキー + Sようシフト/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 

ありますか?それらをすべてキャプチャするには?

も:どのように私はCtrlキー + J/を区別することができますCtrlキー + MからはCtrl + /を入力し、同じキーコード(10/13)を得を入力します?

答えて

4

も:どのように入力する入力/ + CTRからCTRL + J/Ctrl + Mキーを区別することができ、 同じキーコード(10/13)を得

かいつまんで - あなたはできません。端末は、それぞれに同じバイトをほぼ確実に生成します。あなたが特に勇敢な感じている場合、あなたは少なくとも正しくCtrl-arrowのようなものを解析する私のlibtermkey

http://www.leonerd.org.uk/code/libtermkey/

を試すことができます、と述べた

http://www.leonerd.org.uk/hacks/fixterms/

をお読みください。 (まだ)Rubyのバインディングはありませんが、PerlとPythonの両方が存在すると、簡単に書くことができるはずです。最後に

など、あなたも勇敢感じている場合は、任意に変更されたUnicodeのキーをエンコードするための一般的な方法があり、私が書いたターミナル、pangotermを、実行することができますので、入力しますから、それはCtrlキーを押しながらMを区別することができます...

しかし、これらの外では、答えは「できません」のままです。

関連する問題