Récupérer un caractère (sans taper entrée) en mode console.

Utilisateur anonyme - 4 juil. 2004 à 22:58
 Utilisateur anonyme - 5 juil. 2004 à 18:26
Bonjour je voudrais savoir s'il est possible, en mode console, de récupérer un caractère tapé au clavier sans que l'utilisateur soit obligé de le valider avec la touche 'entrée'.
Par exemple, avec le programme suivant:
public class Clavier {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Clavier() {
}
public static void main(String[] args) {
Clavier c = new Clavier();
char mychar;
try {
while (true) {
mychar = (char) c.br.read();
System.out.println(mychar);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Lorsque je lance le programme, je tape "salut", j'obtiens "salut", alors que je voudrais qu'il me fasse "ssaalluutt". (où les lettres d'indices paires sont celles que je tape, et les autres, l'echo donné par le System.out.print)

Je ne suis pas sur que ce soit possible car au niveau du shell les entrées clavier sont buffurisées et flushées lorsque la touche entrée est tapée. Donc:
1) Est ce que quelqu'un aurait la solution au niveau java
2) sinon, quelle est la commande pour flushée l'entrée du shell après chaque caractère (il me semble que c'est avec stty, mais j'ai pas trouvé l'option)

Merci d'avance pour vos réponses !

2 réponses

kaloway Messages postés 358 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 13 avril 2020
5 juil. 2004 à 07:45
kaloway

Tu veus répéter les lettres?
Si, c'est ça tu fais System.out.print(mychar+mychar);
0
Utilisateur anonyme
5 juil. 2004 à 18:26
Non, non, je ne veux pas répéter des lettres, ça c'est juste l'exemple pour pouvoir expliquer de façon simple. En fait ce que je voudrais faire, c'est une classe de complétion automatique pour la console, un peu comme la librairie de readline en c sous unix (c'est pour utiliser dans un client msn en java).
Par exemple, l'utilisateur taperais la commande:
/suppr et <tab> (sans valider par entrée)
et le programme complète avec:
/supprimer
0
Rejoignez-nous