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>
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);
}
}
;