XStringToKeysym: Special case for XF86 keysyms

Some XFree86 keysyms were in XKeysymDB as XF86_foo, despite really being
XF86foo.  So, if we get to the bottom of XStringToKeysym and haven't
found our XF86_foo, try it again as XF86foo.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
This commit is contained in:
Daniel Stone 2010-06-15 18:47:37 +01:00
parent 8c2ffce9e5
commit ebd6ef0a4d

View file

@ -152,5 +152,18 @@ XStringToKeysym(_Xconst char *s)
return val;
return val | 0x01000000;
}
/* Stupid inconsistency between the headers and XKeysymDB: the former has
* no separating underscore, while some XF86* syms in the latter did.
* As a last ditch effort, try without. */
if (strncmp(s, "XF86_", 5) == 0) {
KeySym ret;
char *tmp = strdup(s);
memmove(&tmp[4], &tmp[5], strlen(s) - 5 + 1);
ret = XStringToKeysym(tmp);
free(tmp);
return ret;
}
return NoSymbol;
}