2011-01-13 4 views
1

Я в настоящее время использую этот код, чтобы захватить ключевые штрихи, но я отсутствую, например. сдвига/Alt клавиши, как Ctrl + Сдвиг + S, Ctrl + Сдвиг + , Alt + S и т.д.Как получить клавиши Shift + X/Alt + X в Curses?

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 + М из Ctrl + Введите/Введите, которые дают тот же ключ-коды (10/13) ?

ответ

4

также: как отличить Ctrl + J/Ctrl + M от Ctr + введите/войти, , которые дают одни и те же ключевые коды (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-м от Enter, и т.д. ...

https://launchpad.net/pangoterm

Однако, вне их, ответ остается «вы не можете».

Смежные вопросы