aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2017-05-04 23:08:18 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2017-05-04 23:08:18 +0200
commitf149e36264c31a5b58046b4a38fd2ed6fb29620e (patch)
tree46e4b3a737d0802b3ffda150579eed6027f826c0
parent60d7c02e0ebce704fb78fd6c48c91d90308076de (diff)
parent651d5e5eefdcf1276d0ec3be6717b817dca1aa75 (diff)
downloadnx-libs-f149e36264c31a5b58046b4a38fd2ed6fb29620e.tar.gz
nx-libs-f149e36264c31a5b58046b4a38fd2ed6fb29620e.tar.bz2
nx-libs-f149e36264c31a5b58046b4a38fd2ed6fb29620e.zip
Merge branch 'uli42-pr/fix_keyboard_delay' into 3.6.x
Attributes GH PR #452: https://github.com/ArcticaProject/nx-libs/pull/452
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Events.c21
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Keystroke.c13
2 files changed, 8 insertions, 26 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Events.c b/nx-X11/programs/Xserver/hw/nxagent/Events.c
index e4d031e06..e360d21f6 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Events.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Events.c
@@ -934,7 +934,7 @@ void nxagentDispatchEvents(PredicateFuncPtr predicate)
{
enum HandleEventResult result;
- XlibKeySym *keysym;
+ KeySym keysym;
#ifdef TEST
fprintf(stderr, "nxagentDispatchEvents: Going to handle new KeyPress event.\n");
@@ -1101,17 +1101,12 @@ void nxagentDispatchEvents(PredicateFuncPtr predicate)
* sive delay.
*/
- int keysyms_per_keycode_return;
- keysym = XGetKeyboardMapping(nxagentDisplay,
- X.xkey.keycode,
- 1,
- &keysyms_per_keycode_return);
+ keysym = XKeycodeToKeysym(nxagentDisplay, X.xkey.keycode, 0);
- if (nxagentMonitoredDuplicate(keysym[0]) == 1)
+ if (nxagentMonitoredDuplicate(keysym) == 1)
{
nxagentRemoveDuplicatedKeys(&X);
}
- free(keysym);
if (nxagentOption(ViewOnly) == 0 && nxagentOption(Shadow) == 1 && result == doNothing)
{
@@ -4657,16 +4652,8 @@ void nxagentDumpInputDevicesState(void)
{
if (val & (mask << k))
{
- int keysyms_per_keycode_return;
- XlibKeySym *keysym = XGetKeyboardMapping(nxagentDisplay,
- i * 8 + k,
- 1,
- &keysyms_per_keycode_return);
-
-
fprintf(stderr, "\n\t[%d] [%s]", i * 8 + k,
- XKeysymToString(keysym[0]));
- free(keysym);
+ XKeysymToString(XKeycodeToKeysym(nxagentDisplay, i * 8 + k, 0)));
}
}
}
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keystroke.c b/nx-X11/programs/Xserver/hw/nxagent/Keystroke.c
index ef7b0b27f..1e3ebca8f 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Keystroke.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Keystroke.c
@@ -480,30 +480,25 @@ void nxagentDumpKeystrokes(void)
static enum nxagentSpecialKeystroke find_keystroke(XKeyEvent *X)
{
enum nxagentSpecialKeystroke ret = KEYSTROKE_NOTHING;
- int keysyms_per_keycode_return;
- XlibKeySym *keysym = XGetKeyboardMapping(nxagentDisplay,
- X->keycode,
- 1,
- &keysyms_per_keycode_return);
+ KeySym keysym = XKeycodeToKeysym(nxagentDisplay, X->keycode, 0);
+
#ifdef DEBUG
- fprintf(stderr, "%s: got keysym '%c' (%d)\n", __func__, keysym[0], keysym[0]);
+ fprintf(stderr, "%s: got keysym '%c' (%d)\n", __func__, keysym, keysym);
#endif
for (struct nxagentSpecialKeystrokeMap *cur = map; cur->stroke != KEYSTROKE_END_MARKER; cur++) {
#ifdef DEBUG
fprintf(stderr, "%s: checking keysym '%c' (%d)\n", __func__, cur->keysym, cur->keysym);
#endif
- if (cur->keysym == keysym[0] && modifier_matches(cur->modifierMask, cur->modifierAltMeta, X->state)) {
+ if (cur->keysym == keysym && modifier_matches(cur->modifierMask, cur->modifierAltMeta, X->state)) {
#ifdef DEBUG
fprintf(stderr, "%s: match including modifiers for keysym '%c' (%d), stroke %d (%s)\n", __func__, cur->keysym, cur->keysym, cur->stroke, nxagentSpecialKeystrokeNames[cur->stroke]);
#endif
- free(keysym);
return cur->stroke;
}
}
- free(keysym);
return ret;
}