From f57c236373eafa7df6b6832969822e8122c656c9 Mon Sep 17 00:00:00 2001 From: Ioannis Tsakpinis Date: Mon, 19 Nov 2012 18:49:34 +0200 Subject: [PATCH] Fixed GetAsyncKeyState usage. We read the MSB, not the LSB. --- src/java/org/lwjgl/opengl/WindowsKeyboard.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/java/org/lwjgl/opengl/WindowsKeyboard.java b/src/java/org/lwjgl/opengl/WindowsKeyboard.java index 48e6b5aa..3925ec30 100644 --- a/src/java/org/lwjgl/opengl/WindowsKeyboard.java +++ b/src/java/org/lwjgl/opengl/WindowsKeyboard.java @@ -154,6 +154,10 @@ final class WindowsKeyboard { 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) { virt_key = translateExtended(virt_key, scan_code, event_state, extended); if ( !repeat && isKeyPressed(event_state) == isKeyPressed(virt_key_down_buffer[virt_key]) ) @@ -176,7 +180,7 @@ final class WindowsKeyboard { public void fireLostKeyEvents() { 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); } }