Simplify event to KeySym mapping. Fix #28
This commit is contained in:
parent
a5c4462a3e
commit
40694134ab
|
@ -257,43 +257,19 @@ final class LinuxKeyboard {
|
||||||
private static native long lookupKeysym(long event_ptr, int index);
|
private static native long lookupKeysym(long event_ptr, int index);
|
||||||
private static native long toUpper(long keysym);
|
private static native long toUpper(long keysym);
|
||||||
|
|
||||||
private long mapEventToKeySym(long event_ptr, int event_state) {
|
|
||||||
int group;
|
|
||||||
long keysym;
|
|
||||||
if ((event_state & modeswitch_mask) != 0)
|
|
||||||
group = 1;
|
|
||||||
else
|
|
||||||
group = 0;
|
|
||||||
if ((event_state & numlock_mask) != 0 && isKeypadKeysym(keysym = getKeySym(event_ptr, group, 1))) {
|
|
||||||
if ((event_state & (ShiftMask | shift_lock_mask)) != 0) {
|
|
||||||
return getKeySym(event_ptr, group, 0);
|
|
||||||
} else {
|
|
||||||
return keysym;
|
|
||||||
}
|
|
||||||
} else if ((event_state & (ShiftMask | LockMask)) == 0) {
|
|
||||||
return getKeySym(event_ptr, group, 0);
|
|
||||||
} else if ((event_state & ShiftMask) == 0) {
|
|
||||||
keysym = getKeySym(event_ptr, group, 0);
|
|
||||||
if ((event_state & caps_lock_mask) != 0)
|
|
||||||
keysym = toUpper(keysym);
|
|
||||||
return keysym;
|
|
||||||
} else {
|
|
||||||
keysym = getKeySym(event_ptr, group, 1);
|
|
||||||
if ((event_state & caps_lock_mask) != 0)
|
|
||||||
keysym = toUpper(keysym);
|
|
||||||
return keysym;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private int getKeycode(long event_ptr, int event_state) {
|
private int getKeycode(long event_ptr, int event_state) {
|
||||||
long keysym = mapEventToKeySym(event_ptr, event_state);
|
boolean shift = (event_state & (ShiftMask | shift_lock_mask)) != 0;
|
||||||
int keycode = LinuxKeycodes.mapKeySymToLWJGLKeyCode(keysym);
|
int group = (event_state & modeswitch_mask) != 0 ? 1 : 0;
|
||||||
if (keycode == Keyboard.KEY_NONE) {
|
long keysym;
|
||||||
// Try unshifted keysym mapping
|
if ((event_state & numlock_mask) != 0 && isKeypadKeysym(keysym = getKeySym(event_ptr, group, 1))) {
|
||||||
keysym = lookupKeysym(event_ptr, 0);
|
if ( shift )
|
||||||
keycode = LinuxKeycodes.mapKeySymToLWJGLKeyCode(keysym);
|
keysym = getKeySym(event_ptr, group, 0);
|
||||||
|
} else {
|
||||||
|
keysym = getKeySym(event_ptr, group, 0);
|
||||||
|
if ( shift ^ ((event_state & caps_lock_mask) != 0) )
|
||||||
|
keysym = toUpper(keysym);
|
||||||
}
|
}
|
||||||
return keycode;
|
return LinuxKeycodes.mapKeySymToLWJGLKeyCode(keysym);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static byte getKeyState(int event_type) {
|
private static byte getKeyState(int event_type) {
|
||||||
|
|
Loading…
Reference in New Issue