Как получить сдвиг+x / alt+x клавиши в проклятиях?

StackOverflow https://stackoverflow.com/questions/4684739

  •  11-10-2019
  •  | 
  •  

Вопрос

В настоящее время я использую этот код для захвата ключей, но мне не хватает, например, Сдвиг/Альт Ключи, как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

Однако вне этого ответ остается «вы не можете».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top