Fix "Could not resolve keysym" errors
authorRan Benita <ran234@gmail.com>
Sat, 3 Mar 2012 21:42:44 +0000 (23:42 +0200)
committerRan Benita <ran234@gmail.com>
Sat, 3 Mar 2012 22:04:04 +0000 (00:04 +0200)
On many layouts, the following error appears:
Internal error:   Could not resolve keysym 10005b0
(Which is like the trademark of libxkbcommon now, and makes
unicode-heavy symbol files pretty useless).

This occurs when a keysym string (in this case, 10005b0) is passed to
xkb_string_to_keysym, but cannot be resolved.
This in turn happens because the parser passes on hexadecimal keysym
strings without the leading "0x", thus leaving the resolving function
without a way to disambiguate it as a number.

Therefore, make sure to pass on the "0x". The file symbols.c in xkbcomp
project does the same; it probably got lost in translation.

Signed-off-by: Ran Benita <ran234@gmail.com>
src/xkbcomp/xkbparse.y

index 5a6e45f..d08408a 100644 (file)
@@ -731,7 +731,7 @@ KeySym              :       IDENT   { $$= strdup(scanBuf); }
                            }
                            else {
                                $$= malloc(17);
-                               snprintf($$, 17, "%x", $1);
+                               snprintf($$, 17, "0x%x", $1);
                            }
                        }
                ;