diff options
author | Ulrich Sibiller <uli42@gmx.de> | 2017-03-19 21:59:17 +0100 |
---|---|---|
committer | Ulrich Sibiller <uli42@gmx.de> | 2017-03-19 22:03:16 +0100 |
commit | 7065e0bf25484fe9cf008c934b69eff90600d3d8 (patch) | |
tree | 065ae9f127d6091ea37424f560dc8cbf47d59cc4 /nx-X11/programs/Xserver/hw/nxagent/Keyboard.c | |
parent | 7fd5d934c1e73642e9919aa8dd5124466356fb89 (diff) | |
download | nx-libs-7065e0bf25484fe9cf008c934b69eff90600d3d8.tar.gz nx-libs-7065e0bf25484fe9cf008c934b69eff90600d3d8.tar.bz2 nx-libs-7065e0bf25484fe9cf008c934b69eff90600d3d8.zip |
Keystroke.c: ignore CapsLock and NumLock most of the time
CapsLock and NumLock will only be taken into account for keystrokes
that explicitly require them. This is implemented for convenience and
fixes ArcticaProject/nx-libs#397
Diffstat (limited to 'nx-X11/programs/Xserver/hw/nxagent/Keyboard.c')
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Keyboard.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c index 5fc01c976..02b60bef4 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Keyboard.c @@ -204,8 +204,10 @@ static char *nxagentXkbGetRules(void); unsigned int nxagentAltMetaMask; unsigned int nxagentAltMask; unsigned int nxagentMetaMask; +unsigned int nxagentCapsMask; +unsigned int nxagentNumlockMask; -static void nxagentCheckAltMetaKeys(CARD8, int); +static void nxagentCheckModifierMasks(CARD8, int); CARD8 nxagentCapsLockKeycode = 66; CARD8 nxagentNumLockKeycode = 77; @@ -792,6 +794,8 @@ N/A nxagentAltMetaMask = 0; nxagentAltMask = 0; nxagentMetaMask = 0; + nxagentCapsMask = 0; + nxagentNumlockMask = 0; for (i = 0; i < 256; i++) modmap[i] = 0; @@ -805,7 +809,7 @@ N/A if (keycode > 0) { - nxagentCheckAltMetaKeys(keycode, j); + nxagentCheckModifierMasks(keycode, j); } } XFreeModifiermap(modifier_keymap); @@ -1377,7 +1381,7 @@ int nxagentResetKeyboard(void) } } -void nxagentCheckAltMetaKeys(CARD8 keycode, int j) +void nxagentCheckModifierMasks(CARD8 keycode, int j) { if (keycode == XKeysymToKeycode(nxagentDisplay, XK_Meta_L)) { @@ -1402,6 +1406,18 @@ void nxagentCheckAltMetaKeys(CARD8 keycode, int j) nxagentAltMetaMask |= 1 << j; nxagentAltMask |= 1 << j; } + + if (keycode == XKeysymToKeycode(nxagentDisplay, XK_Num_Lock)) + { + nxagentNumlockMask |= 1 << j; + } + + if (keycode == XKeysymToKeycode(nxagentDisplay, XK_Caps_Lock) || + keycode == XKeysymToKeycode(nxagentDisplay, XK_Shift_Lock) ) + { + nxagentCapsMask |= 1 << j; + } + } void nxagentCheckRemoteKeycodes() |