Fixed GetAsyncKeyState usage. We read the MSB, not the LSB.
This commit is contained in:
parent
1cfdd27184
commit
f57c236373
|
@ -154,6 +154,10 @@ final class WindowsKeyboard {
|
||||||
return (state & 1) == 1;
|
return (state & 1) == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static boolean isKeyPressedAsync(int state) {
|
||||||
|
return (state >>> 31) == 1;
|
||||||
|
}
|
||||||
|
|
||||||
public void handleKey(int virt_key, int scan_code, boolean extended, byte event_state, long millis, boolean repeat) {
|
public void handleKey(int virt_key, int scan_code, boolean extended, byte event_state, long millis, boolean repeat) {
|
||||||
virt_key = translateExtended(virt_key, scan_code, event_state, extended);
|
virt_key = translateExtended(virt_key, scan_code, event_state, extended);
|
||||||
if ( !repeat && isKeyPressed(event_state) == isKeyPressed(virt_key_down_buffer[virt_key]) )
|
if ( !repeat && isKeyPressed(event_state) == isKeyPressed(virt_key_down_buffer[virt_key]) )
|
||||||
|
@ -176,7 +180,7 @@ final class WindowsKeyboard {
|
||||||
|
|
||||||
public void fireLostKeyEvents() {
|
public void fireLostKeyEvents() {
|
||||||
for ( int i = 0; i < virt_key_down_buffer.length; i++ ) {
|
for ( int i = 0; i < virt_key_down_buffer.length; i++ ) {
|
||||||
if ( isKeyPressed(virt_key_down_buffer[i]) && !isKeyPressed(GetAsyncKeyState(i)) )
|
if ( isKeyPressed(virt_key_down_buffer[i]) && !isKeyPressedAsync(GetAsyncKeyState(i)) )
|
||||||
handleKey(i, 0, false, (byte)0, System.currentTimeMillis(), false);
|
handleKey(i, 0, false, (byte)0, System.currentTimeMillis(), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue