From e92efc63acd7b377faa9e534f4bf52aaa86be2a9 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Tue, 27 Jul 2021 11:46:19 +1000 Subject: [PATCH libX11] makekeys: handle the new _EVDEVK xorgproto symbols These keys are all defined through a macro in the form: #define XF86XK_BrightnessAuto _EVDEVK(0x0F4) The _EVDEVK macro is simply an offset of 0x10081000. Let's parse these lines correctly so those keysyms end up in our hashtables. Signed-off-by: Peter Hutterer --- src/util/makekeys.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/util/makekeys.c b/src/util/makekeys.c index e847ef4c..4896cc53 100644 --- a/src/util/makekeys.c +++ b/src/util/makekeys.c @@ -78,6 +78,18 @@ parse_line(const char *buf, char *key, KeySym *val, char *prefix) return 1; } + /* See if we can parse one of the _EVDEVK symbols */ + i = sscanf(buf, "#define %127s _EVDEVK(0x%lx)", key, val); + if (i == 2 && (tmp = strstr(key, "XK_"))) { + memcpy(prefix, key, (size_t)(tmp - key)); + prefix[tmp - key] = '\0'; + tmp += 3; + memmove(key, tmp, strlen(tmp) + 1); + + *val += 0x10081000; + return 1; + } + /* Now try to catch alias (XK_foo XK_bar) definitions, and resolve them * immediately: if the target is in the form XF86XK_foo, we need to * canonicalise this to XF86foo before we do the lookup. */ -- 2.31.1