Commit e4b4d6b0510075fe62234f66185bf619c70fc126

Ran Benita 2012-03-03T23:42:44

Fix "Could not resolve keysym" errors 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>

1
2
3
4
5
6
7
8
9
10
11
12
13
diff --git a/src/xkbcomp/xkbparse.y b/src/xkbcomp/xkbparse.y
index 5a6e45f..d08408a 100644
--- a/src/xkbcomp/xkbparse.y
+++ b/src/xkbcomp/xkbparse.y
@@ -731,7 +731,7 @@ KeySym		:	IDENT	{ $$= strdup(scanBuf); }
 			    }
 			    else {
 				$$= malloc(17);
-				snprintf($$, 17, "%x", $1);
+				snprintf($$, 17, "0x%x", $1);
 			    }
 			}
 		;