Ich schreibe eine Simulation einer alten Maschine in Java und ich möchte meine Tastatur behandeln, um die linken und rechten Tasten unabhängig voneinander zu behandeln.Probleme erkennen SHIFT-Tasten in Java auf Windows
Ich habe einen Standard AWT KeyListener
registriert und verarbeiten die KeyPressed()
und KeyReleased()
Methoden. Hier ist das Problem:
1) Press Left-SHIFT
-> get KeyPressed() for VK_SHIFT with location=LEFT ... good!
2) Keep Left-SHIFT held down, press Right-SHIFT too
-> get KeyPressed() for VK_SHIFT with location=RIGHT ... good!
3) Release Right-SHIFT (left-SHIFT still held down)
-> get ... absolutely nothing ... bad!
4) Release Left-SHIFT
-> get KeyReleased() for VK_SHIFT with location=LEFT ... good.
Also, ich verloren habe, die KeyReleased()
Informationen für Rechts- SHIFT. Das scheitert auf diese Weise, wenn es unter Windows läuft, aber unter Linux funktioniert es einwandfrei (ich sehe alle Ereignisse). Irgendwelche Ideen? Ist das nur eine Windows-Anomalie, mit der ich leben muss? Seltsamerweise scheitert es nicht mit den beiden Ctrl Tasten — Ich sehe alle Ereignisse so, wie ich es mir erhoffe.
Es ist einfach, dieses Verhalten mit dem Standard Sun KeyEventDemo.java
Programm zu reproduzieren.
Meine Vermutung ist "Windows-Anomalie". Es könnte eine Registrierungseinstellung geben, die dies betrifft; Als ich meinen Desktop bekam, verhielten sich die beiden Alt-Tasten anders und ich hatte einen guten Grund dafür, dass sie gleich sein sollten, und ich fand, dass ich die Registry reparieren konnte, damit sie funktionierte. Dein Problem ist jedoch ein anderes. – ajb
@ajb, Es ist auch möglich, dies ist eine Eigenart der physischen Tastatur in Frage; Tastaturhersteller machen ziemlich interessante Dinge mit der Art, wie Tasten verkabelt werden, was bewirkt, dass Tastenkombinationen nicht immer wie erwartet funktionieren. Die Tastatur sendet möglicherweise nicht das Signal "Taste losgelassen", weil der Hersteller dachte "Hey, links ist immer noch unten, warum würden wir uns bemühen, das Freigabesignal zu senden?" http://blogs.msdn.com/b/shawnhar/archive/2007/03/28/keyboards-suck.aspx –