PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [java] kommandozeilen keyListener



marius
04-11-2004, 03:42
moin,

folgendes problem: io streams liefern mir den userinput erst nach einem <enter> aus den tastaturpuffer. ich brauche aber die information ueber die gedrueckte taste sofort nachden sie gedrueckt wurde und das bei einem commandline prog.
ich koennt jetzt natuerlich von component (meiner meinung nach das tiefstmoegliche) erben und nen keylistener verwenden un mir so einen 'live'-stream zu basteln.
natuerlich ist bei einer kommandozeilen anwendung component absoluter overkill!

wie kann ich das schoen loesen? hab mich dumm und daemlich gesucht nach sowas wie einem liveiostream, finde nix.

hat wer ne idee?
bzw. am besten gleich ein sniplett.. :)

danke schon mal
gruss
marius

Lin728
04-11-2004, 07:26
Streams liefern dir die Daten gleich - soweit ich weiß jedenfalls.

Wenn du allerdings die BufferedInputStream.readLine() verwendest, dann ließt er erst zeilenweise.

marius
04-11-2004, 08:38
hi

das waer cool wenns so waere..
kannst du mir mal ein stueck code geben wo du sofort nach nem tastenanschlag die taste ausgeben kannst? und ich mein natuerlich nicht die ausgabe der shell die bei jedem druck kommt, hehe.

gruss
marius

Joghurt
04-11-2004, 17:15
Das Linux-Terminal selbst sendet erst Daten, wenn Enter gedrückt wurde, man muss, wenn man über jeden Tastendruck informiert werden will, den Modus auf nicht-kanonisch (IIRC) umstellen. Mit Java wird das wohl nicht gehen; du könntest natürlich vor dem Start des Java-Programmes mithilfe eines C-Programms die umstellung vornehmen...