Pregunta

Actualmente estoy usando el código de agarrar clave golpes, pero me falta, por ejemplo, Mayúsculas / Alt teclas como Ctrl + Shift + S , Ctrl + Shift + ? , Alt + S , etc.

  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

¿Hay alguna manera de capturar a todos?

También: ¿Cómo puedo distinguir Ctrl + J / Ctrl + M de Ctrl + Intro / Intro , que dan a las mismas claves códigos (10 / 13)?

¿Fue útil?

Solución

también: ¿cómo se puede distinguir ctrl + j / ctrl + m de ctr + entrar / entrar, que dan las mismas claves-códigos (10/13)

Para acortar una larga historia - no se puede. El terminal será casi ciertamente producir los mismos bytes para cada uno. Por favor, lea

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

Dicho esto, si se siente especialmente valiente, puedes intentar mi libtermkey

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

cosas que tendrá al menos analizar correctamente como Ctrl-arrow. No (aún) tienen un enlace de Ruby, pero la presencia de ambos los Perl y Python sugeriría que debería ser bastante fácil de escribir uno.

Por último, si te sientes valiente incluso se puede ejecutar el terminal de I escribió, pangoterm, que tiene formas genéricas para codificar cualquier claves Unicode arbitrariamente modificados, por lo que puede distinguir Ctrl-m de Enter, etc ...

https://launchpad.net/pangoterm

Sin embargo, fuera de éstos, los restos de respuesta "no se puede".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top