Come ottenere Maiusc + X / Alt + X chiavi in ??Maledizioni?
Domanda
Attualmente sto usando questo codice per afferrare chiave colpi, ma mi manca per esempio Maiusc / Alt tasti come Ctrl + Maiusc + S , Ctrl + Maiusc + ? , Alt + S , ecc.
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
C'è un modo per catturarli tutti?
Inoltre: come posso distinguere Ctrl + J / Ctrl + M da Ctrl + Invio / Invio , che danno gli stessi codici-chiave (10
/ 13
)?
Soluzione
anche: come si può distinguere ctrl + j / Ctrl + m dal CTR + entrare / entrare, che danno gli stessi codici-chiave (10/13)
Lunga storia breve - non si può. Il terminale quasi certamente produrrà gli stessi byte per ciascun. Si prega di leggere
http://www.leonerd.org.uk/hacks/fixterms/
Detto questo, se vi sentite particolarmente coraggiosi, si può provare il mio libtermkey
http://www.leonerd.org.uk/code/libtermkey/
che sarà cose almeno analizzare correttamente come Ctrl-arrow
. Non ha (ancora) hanno associazione di un rubino, ma la presenza di entrambi i quelli Perl e Python suggerirebbe che dovrebbe essere abbastanza facile da una scrittura.
Infine, se ti senti anche più coraggioso è possibile eseguire l'ho scritto terminale, pangoterm
, che ha un modo generico per codificare eventuali chiavi Unicode arbitrariamente modificati, in modo che possa distinguere Ctrl-m dal Enter, ecc ...
https://launchpad.net/pangoterm
Tuttavia, al di fuori di questi, i resti rispondere "non si può".