In Java, qual è il modo migliore per catturare un battitura?
-
25-09-2019 - |
Domanda
Ho problemi catturando l'
Per dare un po 'di contesto, sto cercando di consentire a un utente di colpire la metà di comando tasto tab per averlo completamento automatico il comando (molto simile si potrebbe fare in una shell bash). Sono aperto a suggerimenti se ci sono meglio approcci al raggiungimento di questo (magari utilizzando System.in.read () non è la migliore angolazione per avvicinarsi a questo?).
Soluzione
Dai un'occhiata alla JLine . Non ho usato io stesso. Esso utilizza un finestre DLL (utilizzando JNI) e possiede supporto Linux per passare la console alla modalità caratteri / raw anziché modalità bufferizzata. Non ho mai usato prima in modo da utilizzare a proprio rischio. Sono, inoltre, non sicuro al 100% se si affronterà il problema, ma vale la pena un colpo:)
Modifica Posso confermare che funziona
ConsoleReader cr = new ConsoleReader();
while (cr.readVirtualKey() != 0x09){
//loop till Tab is pressed
}
EDIT AGAIN: La biblioteca contiene completamento automatico (da scheda premendo) per la linea di comando ... Enjoy:)
Altri suggerimenti
Direi che la shell è scheda cattura e impedendole di raggiungere la vostra applicazione. Non ci può essere qualsiasi cosa si può fare su questo ...
I dati da un InputStream è reso disponibile solo quando l'utente ha premuto invio. Penso che troverete che se si preme entrare dopo scheda, la scheda verrà visualizzato.
Nelle applicazioni c, c'è qualcosa di simile: un guscio imposta la modalità di ingresso grezza dalla cotta, in quanto deve i tasti prime. Readline è la libreria normale utilizzato per questo in Linux. Non sono sicuro di ciò che è comune su Windows. Per quanto mi viene in mente, qualcosa usando JNI è l'unica opzione qui.