|
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.
|