diff options
author | Sebastian Reuße <seb@wirrsal.net> | 2017-05-10 20:16:07 +0200 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2017-05-11 09:26:15 +1000 |
commit | 252f276ea9f1a2543a7504857b702b4e50e90508 (patch) | |
tree | fd04a06ea9a1b9736cc19c81f984c49f94b2b7e9 | |
parent | 7f6658af6f1a4e22adddd6fd931edb8870dbafc0 (diff) | |
download | xf86-input-wacom-252f276ea9f1a2543a7504857b702b4e50e90508.tar.gz |
xsetwacom: use XkbGetMap instead of XkbGetKeyboard
XkbGetMap is more robust in cases where certain keyboard description components
are missing. XkbGetKeyboard will fail when any component cannot be resolved;
since XkbAllComponentsMask is requested, any missing component will result in
the call returning NULL. Since we don’t necessarily need all components (e.g.,
keyboard geometry, keymap names), we use XkbGetMap instead.
Signed-off-by: Sebastian Reuße <seb@wirrsal.net>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r-- | tools/xsetwacom.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/tools/xsetwacom.c b/tools/xsetwacom.c index bbc92f1..834ebde 100644 --- a/tools/xsetwacom.c +++ b/tools/xsetwacom.c @@ -1173,9 +1173,12 @@ static int keysym_to_keycode(Display *dpy, KeySym sym) XkbStateRec state; int kc = 0; - if (!xkb) - xkb = XkbGetKeyboard(dpy, XkbAllComponentsMask, XkbUseCoreKbd); + xkb = XkbGetMap(dpy, XkbAllComponentsMask, XkbUseCoreKbd); + if (!xkb) { + fprintf(stderr, "Warning: failed to query keyboard map\n"); + goto out; + } XkbGetState(dpy, XkbUseCoreKbd, &state); for (kc = xkb->min_key_code; kc <= xkb->max_key_code; kc++) |