Warten, bis keine Taste gedrückt

Guybrush Threepwood

Top Contributor
Hi,
ich stehe gerade auf dem Schlauch. Wie man einen Tastendruck abfragt weiß ich. Nun die umgekehrte Aufgabenstellen: Wie kann ich ein Programm so lange warten lassen, bis keine Taste mehr gedrückt ist?

Danke,
Guybrush
 
Wie das mit den KeyListenern funktioniert weiß ich schon. Aber gibt es eine globale Möglichkeitsicherzustellen, ob Tasten gedrückt sind? Der KeyPressed-Event wird ja dann ausgelöst, wenn eine Taste gedrückt wird. Nun kann es ja sein, dass die Taste bereits gedrückt ist, wenn der Programmcode abgearbeitet wird.
 
Wie das mit den KeyListenern funktioniert weiß ich schon. Aber gibt es eine globale Möglichkeitsicherzustellen, ob Tasten gedrückt sind? Der KeyPressed-Event wird ja dann ausgelöst, wenn eine Taste gedrückt wird. Nun kann es ja sein, dass die Taste bereits gedrückt ist, wenn der Programmcode abgearbeitet wird.

Nicht vermuten, sondern Doku und Tutorial lesen und verstehen.
Aus der API Doku zum KeyEvent:
"Key pressed" and "key released" events are lower-level and depend on the platform and keyboard layout. They are generated whenever a key is pressed or released, and are the only way to find out about keys that don't generate character input (e.g., action keys, modifier keys, etc.). The key being pressed or released is indicated by the getKeyCode method, which returns a virtual key code.
 
Lass gut sein, die Doku und die API kenne ich: Man kann abfangen, wenn ein Key (rein-)gedrückt oder losgelassen wird. Ich suche aber nach einer Methode, die mir die Abfrage ermöglicht, ob irgend eine Taste gehalten wird.
 
hätte es jetzt auch so gelöst wie im Link von VfL_Freak.


keyPressed(KeyEvent) wird allerdings mehrfach aufgerufen, keyReleased(KeyEvent) nur einmal.
Denke ersteres ist von der Betriebssystemeinstellung abhängig wie schnell da die Wiederholrate ist (nur eine Vermutung).

Magst du uns verraten was du vor hast? Vielleicht gibts dann noch andere Ansätze.
 
Hi,
ich stehe gerade auf dem Schlauch. Wie man einen Tastendruck abfragt weiß ich. Nun die umgekehrte Aufgabenstellen: Wie kann ich ein Programm so lange warten lassen, bis keine Taste mehr gedrückt ist?

Danke,
Guybrush

Lass gut sein, die Doku und die API kenne ich: Man kann abfangen, wenn ein Key (rein-)gedrückt oder losgelassen wird. Ich suche aber nach einer Methode, die mir die Abfrage ermöglicht, ob irgend eine Taste gehalten wird.

"Bis keine Taste mehr gedrück ist" ist ein wenig was anderes als "ob irgend eine Taste gehalten wird".

Ich sehe es auch so: sag mal genau was du machen willst, vermutlich bist du mit dem Ansatz auf dem Holzweg.
 
Hallo FArt,
ja, ich denke Du hast recht. Ich muss es konzeptionell anders angehen. Es handelt sich um ein Reaktionszeitexperiment, genauer gesagt der Stroop-Effekt. Es müssen Tasten gedrückt werden und ich will abfangen, wenn jemand eine Taste gedrückt hält. Vermutlich werde ich einen weiteren Thread einbauen, der bestimmte Phasen des Ablaufs für kurze Zeit anhält, und es geht erst weiter, wenn einige Zeit (50 ms oder so) keine KeyEvents gefeuert werden.
Vielen Dank Euch allen für die Tipps!

Ciao,
Guybrush
 
Aaaaaaarrrrrgggghhhh!!!! Es war soooo einfach! Ich rufe schlicht und einfach in meinem KeyListener die aktuelle Systemzeit ab und lasse dann an der entsprechenden Stelle den Thread pausieren, solange, in den letzten 200 ms ein KeyEvent auftrat. Manchmal denkt man einfach in die falsche Richtung!
 

Zurück
Oben