Как получить сдвиг+x / alt+x клавиши в проклятиях?
Вопрос
В настоящее время я использую этот код для захвата ключей, но мне не хватает, например, Сдвиг/Альт Ключи, какCtrl+Сдвиг+С, Ctrl+Сдвиг+↑, Альт+С, так далее.
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+Дж / Ctrl+М из Ctrl+Войти / Войти, которые дают одинаковые ключевые коды (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
. Анкет Это не (пока) не имеет привязки рубины, но наличие как Perl, так и Python предполагает, что его должно быть довольно легко написать.
Наконец, если вы чувствуете себя еще смелым, вы можете запустить терминал, который я написал, pangoterm
, который имеет общие способы кодировать любые произвольно модифицированные клавиши Unicode, поэтому он может отличить Ctrl-M от Enter и т. Д.
https://launchpad.net/pangoterm
Однако вне этого ответ остается «вы не можете».