summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Reuße <seb@wirrsal.net>2017-05-10 20:16:07 +0200
committerPeter Hutterer <peter.hutterer@who-t.net>2017-05-11 09:26:15 +1000
commit252f276ea9f1a2543a7504857b702b4e50e90508 (patch)
treefd04a06ea9a1b9736cc19c81f984c49f94b2b7e9
parent7f6658af6f1a4e22adddd6fd931edb8870dbafc0 (diff)
downloadxf86-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.c7
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++)