From: <eli...@us...> - 2007-07-29 19:43:39
|
Revision: 2862 http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=2862&view=rev Author: elias_naur Date: 2007-07-29 12:43:36 -0700 (Sun, 29 Jul 2007) Log Message: ----------- Windows: Mapped VK_SNAPSHOT to KEY_SYSRQ and added workaround to a windows bug where WM_KEYDOWN is never generated for VK_SNAPSHOT Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsDisplay.java trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsKeyboard.java trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsKeycodes.java Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsDisplay.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsDisplay.java 2007-07-29 19:24:17 UTC (rev 2861) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsDisplay.java 2007-07-29 19:43:36 UTC (rev 2862) @@ -706,7 +706,17 @@ return true; case WM_SYSKEYDOWN: /* Fall through */ case WM_SYSKEYUP: /* Fall through */ - case WM_KEYUP: /* Fall through */ + case WM_KEYUP: + // SysRq apparently only generates WM_KEYUP, so we'll fake a WM_KEYDOWN + if (wParam == WindowsKeycodes.VK_SNAPSHOT && keyboard != null && + !keyboard.isKeyDown(org.lwjgl.input.Keyboard.KEY_SYSRQ)) { + // Set key state to pressed + long fake_lparam = lParam & ~(1 << 31); + // Set key previous state to released + fake_lparam = fake_lparam & ~(1 << 30); + handleKeyButton(wParam, fake_lparam, millis); + } + /* Fall through */ case WM_KEYDOWN: handleKeyButton(wParam, lParam, millis); return false; Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsKeyboard.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsKeyboard.java 2007-07-29 19:24:17 UTC (rev 2861) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsKeyboard.java 2007-07-29 19:43:36 UTC (rev 2862) @@ -74,6 +74,10 @@ public void destroy() { } + boolean isKeyDown(int lwjgl_keycode) { + return key_down_buffer[lwjgl_keycode] == 1; + } + public void grab(boolean grab) { if(grab) { if (!grabbed) { Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsKeycodes.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsKeycodes.java 2007-07-29 19:24:17 UTC (rev 2861) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsKeycodes.java 2007-07-29 19:43:36 UTC (rev 2862) @@ -534,7 +534,7 @@ return Keyboard.KEY_NUMPADCOMMA; case VK_DIVIDE: return Keyboard.KEY_DIVIDE; - case VK_PRINT: + case VK_SNAPSHOT: return Keyboard.KEY_SYSRQ; case VK_RMENU: return Keyboard.KEY_RMENU; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |