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)?

È stato utile?

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ò".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top