Ciao a tutti,

C'è una domanda alla quale non riesco a trovare risposta.
Con questo codice:
codice:
Scanner s = new Scanner(System.in);
if(s.hasNext()){
    char c = s.next().charAt(0);
}
Riesco ad acquisire in input un carattere, ma devo aspettare che l'utente prema invio prima che lo scanner mi restituisca il suo input.

C'è un modo per leggere l'input dell'utente mentre sta digitando, senza dover aspettare che prema "invio"?

Ho provato questo pensando che forse poteva funzionare:
codice:
System.out.println("Inserisci qualcosa: ");
BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
while(!b.ready()){
    try {
        Thread.sleep(100);
    } catch (Exception e) {
    }
}
while(b.ready()){
    char c = (char)b.read();
    System.out.println("Ho letto: "+c);
}
Ma niente, nemmeno questo funziona, aspetta che l'utente prema invio e poi mi stampa uno dopo l'altro i caratteri inseriti.

Altri mi hanno suggerito semplicemente:
codice:
System.out.println("Inserisci qualcosa: ");
while(true){
    char c = (char)System.in.read();
    System.out.println("Ho letto: "+c);
}
Ho da subito pensato che fosse più o meno equivalente al codice che usa il BufferedReader, ma ho comunque provato sperando di sbagliarmi... Il risultato? Niente, fa esattamente la stessa cosa, aspetta che l'utente prema invio e mi stampa tutti i caratteri inseriti, uno dopo l'altro.

C'è modo di catturare l'input sul terminale "live", quindi senza dover aspettare che l'utente prema invio?

Grazie in anticipo, ciao!