# Mehrere KeyEvents kombinieren



## AMiGA (11. Jul 2005)

Hallo zusammen,

ich habe eine kurze Frage. Wie kann ich mehrere KeyEvents kombinieren, also beispielsweise Alt+Space+N für minimieren. KeyEvent.VK_ALT + KeyEvent.VK_SPACE + KeyEvent.VK_N funktioniert leider nicht.

Gruß,
AMiGA


----------



## KISS (11. Jul 2005)

also funktionstasten kombiniert man mit logischem oder. schaue dir einfach mal KeyStroke an, da ist auch ein tutorial bei


----------



## Bert Brenner (11. Jul 2005)

InputEvent#getModifiersEx() solltest du dir da mal anschauen


----------



## AMiGA (14. Jul 2005)

Das Problem ist, dass ich eine Methode zum Tastendruck habe, die ein KeyEvent als Argument erwartet.

pressKey(KeyEvent.VK_ALT | KeyEvent.VK_SPACE);

funktioniert leider nicht, in diesem Fall wird "2" gedrückt.

Gibt es keine Möglichkeit, zwei Tasten mittels KeyEvent gleichzeitig zu drücken?


----------



## AMiGA (15. Jul 2005)

Hat niemand eine Idee wie das funktionieren könnte?


----------



## Sky (15. Jul 2005)

Guck Dir doch mal KeyEvent#isAltDown an.


----------



## AMiGA (15. Jul 2005)

> Guck Dir doch mal KeyEvent#isAltDown an.



Damit könnte ich doch nur abfragen, ob Alt gedrückt ist. Ist es aber nicht. Da wenn ich Alt und Space via zwei Events drücke, Alt natürlich beim zweiten Event nicht mehr gedrückt ist


----------



## Wildcard (15. Jul 2005)

Dann musst du dir eben merken was gedrückt wurde.


----------



## AMiGA (16. Jul 2005)

> Dann musst du dir eben merken was gedrückt wurde.



Nee, das geht leider nicht. Es geht nicht darum, eine bestimmte Funktionalität beim Auftreten eines KeyEvents auszulösen, sondern darum, tatsächlich ein KeyEvent zu erzeugen, damit in einer anderen Anwendung etwas ausgelöst wird (ich schreibe ein Testwerkzeug, um eine andere GUI-Anwendung zu testen). Das Problem ist wie gesagt, dass ich eine Methode zum Erzeugen eines KeyEvents habe, die aber leider nur KeyEvents als Parameter akzeptiert und ich nicht weiss, ob es ein Event für mehrere Tasten gleichzeitig gibt (konkret will ich Alt+Space und dann N für Minimieren auslösen).


----------



## Wildcard (17. Jul 2005)

AMiGA hat gesagt.:
			
		

> Das Problem ist wie gesagt, dass ich eine Methode zum Erzeugen eines KeyEvents habe, die aber leider nur KeyEvents als Parameter akzeptiert und ich nicht weiss, ob es ein Event für mehrere Tasten gleichzeitig gibt (konkret will ich Alt+Space und dann N für Minimieren auslösen).


Die Anwendung die getestet werden soll muss sich (wenn sie auf solche Tastenkombinationen reagieren soll) die keyTyped-Events merken, und bei keyReleased die Taste wieder löschen. Anders gehts eben nicht. Das heißt du kannst  die keyPressed-Events einfach nacheinander erzeugen, um den Rest muss sich die Anwendung selbst kümmern...


----------



## AMiGA (17. Jul 2005)

Hi Wildcard,

die zu testende Anwendung funktioniert einwandfrei: wenn ich Alt+Space drücke, öffnet sich das Menü, wo man dann per "N" minimieren auswählen kann (Standard-Menü unter Windoof). 

Wenn ich aber nacheinander drei Events für Alt, Space und N generiere, reagiert die Anwendung auch so, als seien die 3 Tasten nacheinander gedrückt worden: Durch Alt wird der erste Punkt im anwendungseigenen Menü aktiviert, Space wählt dann einen Unterpunkt in diesem Menü aus... an das Standard-Menü mit Minimieren-Eintrag komme ich nur, wenn Alt und Space gleichzeitig gedrückt werden.


----------



## MPW (19. Jul 2005)

Wie ist denn diese Testanwendung aufgebaut, über den java.awt.robot? oder über das manuelle auslösen von events?


----------



## AMiGA (19. Jul 2005)

Letzteres... die Events werden in die AWT EventQueue gestellt, nicht auf Systemebene (per Robot) generiert.

Kann es sein, dass dadurch Dinge wie das oben genannte Menü zum Minimieren gar nicht erreicht werden können? Werden die nur durch Systemereignisse erreicht, die gar nicht an die JVM weitergeleitet werden?


----------

