diff --git a/src/java/org/lwjgl/input/Keyboard.java b/src/java/org/lwjgl/input/Keyboard.java index 117054db..ce0f229b 100644 --- a/src/java/org/lwjgl/input/Keyboard.java +++ b/src/java/org/lwjgl/input/Keyboard.java @@ -188,6 +188,10 @@ public class Keyboard { public static final int KEY_APPS = 0xDD; /* AppMenu key */ public static final int KEY_POWER = 0xDE; public static final int KEY_SLEEP = 0xDF; + + public static final int STATE_ON = 0; + public static final int STATE_OFF = 1; + public static final int STATE_UNKNOWN = 2; /** Key names */ private static final String[] keyName = new String[255]; @@ -402,13 +406,13 @@ public class Keyboard { * Checks whether one of the state keys are "active" * * @param key State key to test (KEY_CAPITAL | KEY_NUMLOCK | KEY_SYSRQ) - * @return true if state key is on + * @return STATE_ON if on, STATE_OFF if off and STATE_UNKNOWN if the state is unknown */ - public static boolean isStateKeySet(int key) { + public static int isStateKeySet(int key) { assert created : "The keyboard has not been created."; return nisStateKeySet(key); } - private static native boolean nisStateKeySet(int key); + private static native int nisStateKeySet(int key); /** * Gets a key's name diff --git a/src/java/org/lwjgl/test/input/KeyboardTest.java b/src/java/org/lwjgl/test/input/KeyboardTest.java index 7077b89d..e8c41395 100644 --- a/src/java/org/lwjgl/test/input/KeyboardTest.java +++ b/src/java/org/lwjgl/test/input/KeyboardTest.java @@ -159,15 +159,15 @@ public class KeyboardTest { position.y -= 1; } - if(Keyboard.isStateKeySet(Keyboard.KEY_SCROLL)) { + if(Keyboard.isStateKeySet(Keyboard.KEY_SCROLL) == Keyboard.STATE_ON) { System.out.println("SCROLL lock on"); } - if(Keyboard.isStateKeySet(Keyboard.KEY_CAPITAL)) { + if(Keyboard.isStateKeySet(Keyboard.KEY_CAPITAL) == Keyboard.STATE_ON) { System.out.println("CAPS lock on"); } - if(Keyboard.isStateKeySet(Keyboard.KEY_NUMLOCK)) { + if(Keyboard.isStateKeySet(Keyboard.KEY_NUMLOCK) == Keyboard.STATE_ON) { System.out.println("NUM lock on"); } } diff --git a/src/native/common/org_lwjgl_input_Keyboard.h b/src/native/common/org_lwjgl_input_Keyboard.h index 5c074ceb..de6551e4 100644 --- a/src/native/common/org_lwjgl_input_Keyboard.h +++ b/src/native/common/org_lwjgl_input_Keyboard.h @@ -258,7 +258,16 @@ extern "C" { #define org_lwjgl_input_Keyboard_KEY_POWER 222L #undef org_lwjgl_input_Keyboard_KEY_SLEEP #define org_lwjgl_input_Keyboard_KEY_SLEEP 223L +#undef org_lwjgl_input_Keyboard_STATE_ON +#define org_lwjgl_input_Keyboard_STATE_ON 0L +#undef org_lwjgl_input_Keyboard_STATE_OFF +#define org_lwjgl_input_Keyboard_STATE_OFF 1L +#undef org_lwjgl_input_Keyboard_STATE_UNKNOWN +#define org_lwjgl_input_Keyboard_STATE_UNKNOWN 2L /* Inaccessible static: keyName */ +/* Inaccessible static: keyMap */ +/* Inaccessible static: counter */ +/* Inaccessible static: keyCount */ /* Inaccessible static: created */ /* Inaccessible static: keyDownBuffer */ /* Inaccessible static: readBuffer */ @@ -267,7 +276,8 @@ extern "C" { /* Inaccessible static: character */ /* Inaccessible static: key */ /* Inaccessible static: state */ -/* Inaccessible static: class_00024org_00024lwjgl_00024input_00024Keyboard */ +/* Inaccessible static: class_000240 */ +/* Inaccessible static: class_000241 */ /* * Class: org_lwjgl_input_Keyboard * Method: initIDs @@ -323,13 +333,13 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_input_Keyboard_nEnableTranslation */ JNIEXPORT jint JNICALL Java_org_lwjgl_input_Keyboard_nEnableBuffer (JNIEnv *, jclass); - + /* * Class: org_lwjgl_input_Keyboard * Method: nisStateKeySet - * Signature: (I)Z + * Signature: (I)I */ -JNIEXPORT jboolean JNICALL Java_org_lwjgl_input_Keyboard_nisStateKeySet +JNIEXPORT jint JNICALL Java_org_lwjgl_input_Keyboard_nisStateKeySet (JNIEnv *, jclass, jint); #ifdef __cplusplus diff --git a/src/native/win32/org_lwjgl_input_Keyboard.cpp b/src/native/win32/org_lwjgl_input_Keyboard.cpp index 01b815f9..b33a661c 100644 --- a/src/native/win32/org_lwjgl_input_Keyboard.cpp +++ b/src/native/win32/org_lwjgl_input_Keyboard.cpp @@ -335,13 +335,22 @@ JNIEXPORT jint JNICALL Java_org_lwjgl_input_Keyboard_nEnableBuffer /* * Class: org_lwjgl_input_Keyboard * Method: nisStateKeySet - * Signature: (I)Z + * Signature: (I)I */ -JNIEXPORT jboolean JNICALL Java_org_lwjgl_input_Keyboard_nisStateKeySet(JNIEnv *env, jclass clazz, jint key) +JNIEXPORT jint JNICALL Java_org_lwjgl_input_Keyboard_nisStateKeySet(JNIEnv *env, jclass clazz, jint key) { + int state = org_lwjgl_input_Keyboard_STATE_UNKNOWN; switch(key) { - case org_lwjgl_input_Keyboard_KEY_CAPITAL: return GetKeyState(VK_CAPITAL); - case org_lwjgl_input_Keyboard_KEY_NUMLOCK: return GetKeyState(VK_NUMLOCK); - case org_lwjgl_input_Keyboard_KEY_SCROLL: return GetKeyState(VK_SCROLL); + case org_lwjgl_input_Keyboard_KEY_CAPITAL: + state = GetKeyState(VK_CAPITAL) ? org_lwjgl_input_Keyboard_STATE_ON : org_lwjgl_input_Keyboard_STATE_OFF; + break; + case org_lwjgl_input_Keyboard_KEY_NUMLOCK: + state = GetKeyState(VK_NUMLOCK) ? org_lwjgl_input_Keyboard_STATE_ON : org_lwjgl_input_Keyboard_STATE_OFF; + break; + case org_lwjgl_input_Keyboard_KEY_SCROLL: + state = GetKeyState(VK_SCROLL) ? org_lwjgl_input_Keyboard_STATE_ON : org_lwjgl_input_Keyboard_STATE_OFF; + break; } + + return state; } \ No newline at end of file