¿Cómo obtener las teclas Shift + X / Alt + X en Curses?

Actualmente estoy usando este código para capturar pulsaciones de teclas, pero faltan, por ejemplo, las teclas Mayús / Alt como Ctrl + Mayús + S , Ctrl + Mayús + , 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 == ?\Cc Curses.setpos(count,0) Curses.addstr("#{key.inspect} "); end 

¿Hay alguna forma de capturarlos a todos?

Además: ¿cómo puedo distinguir Ctrl + J / Ctrl + M de Ctrl + Enter / Enter , que dan los mismos códigos clave ( 13 )?

también: cómo se puede distinguir ctrl + j / ctrl + m de ctr + enter / enter, que dan los mismos códigos clave (10/13)

Larga historia corta: no puedes. El terminal casi seguramente producirá los mismos bytes para cada uno. Por favor lee

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

Dicho esto, si te sientes especialmente valiente, puedes probar mi libtermkey

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

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

Finalmente, si se siente aún más valiente, puede ejecutar el terminal que escribí, pangoterm , que tiene formas genéricas de codificar cualquier clave Unicode modificada arbitrariamente, para que pueda distinguir Ctrl-m de Enter, etc.

https://launchpad.net/pangoterm

Sin embargo, fuera de estos, la respuesta sigue siendo “no puedes”.

    Intereting Posts