Why isn't key released event sent when two keys are pressed? [message #724036] |
Sat, 10 September 2011 08:38  |
Eclipse User |
|
|
|
The following code works when you press single keys.
@Override public void handleEvent(Event evt) {
switch(evt.type) {
case SWT.KeyDown:
System.out.println(evt.keyCode + " pressed");
break;
case SWT.KeyUp:
System.out.println(evt.keyCode + " released");
break;
}
}
...
widget.addListener(SWT.KeyDown, this);
widget.addListener(SWT.KeyUp, this);
But when you press multiple keys like "A" first then "B", the listener will only receive key up event for "B" and no events for "A". So as a result, ...
switch(evt.type) {
case SWT.KeyDown:
mKeyMap.get(evt.keyCode).isDown = true;
break;
case SWT.KeyUp:
mKeyMap.get(evt.keyCode).isDown = false;
break;
}
The key "A" will always remain true, until you press it again and receive key down event and key up event. This problem doesn't happen with the arrow keys though. You can press multiple arrow keys and it sends key up events correctly.
So, why isn't key released event sent for key "A" when keys "A" and "B" are pressed?
Graphical Example:

Note, my platform is Windows 7 64-bit. Eclipse 3.6.2 (Build: M20110210-1200). SWT 3.7 Final Release (13 June 2011). Tried SWT 3.8 M2 (16 September 2011) as well.
I have tried 5 different keyboards and on my other laptop (which is running Windows 7 64-bit as well). Definitely not a keyboard issue.
More importantly, how do I get over this problem?
.
.
.
Is this a bug?
Thanks a lot!
Attachment: screen.png
(Size: 88.03KB, Downloaded 1016 times)
[Updated on: Fri, 23 September 2011 22:46] by Moderator
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.06970 seconds