X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fxkbcomp%2Fparser.y;h=d4f62c05b1de0f1e2f1987c6348b90109021a4f0;hb=0da68bc648de409b61d691fc9a3c31ada8a00958;hp=87dea65b2b3cfb3d5631db030df36a3ea4fa690e;hpb=397e7e013def98b751bd91eb2a0b8a614dd28e2b;p=platform%2Fupstream%2Flibxkbcommon.git diff --git a/src/xkbcomp/parser.y b/src/xkbcomp/parser.y index 87dea65..d4f62c0 100644 --- a/src/xkbcomp/parser.y +++ b/src/xkbcomp/parser.y @@ -37,6 +37,7 @@ #include "xkbcomp/ast-build.h" #include "xkbcomp/parser-priv.h" #include "scanner-utils.h" +#include "keysym.h" struct parser_param { struct xkb_context *ctx; @@ -735,18 +736,19 @@ KeySym : IDENT | SECTION { $$ = XKB_KEY_section; } | Integer { - if ($1 < 0) { + if ($1 < XKB_KEYSYM_MIN) { parser_warn(param, "unrecognized keysym \"%"PRId64"\"", $1); $$ = XKB_KEY_NoSymbol; } + /* Special case for digits 0..9 */ else if ($1 < 10) { /* XKB_KEY_0 .. XKB_KEY_9 */ $$ = XKB_KEY_0 + (xkb_keysym_t) $1; } else { - char buf[32]; - snprintf(buf, sizeof(buf), "0x%"PRIx64, $1); - if (!resolve_keysym(buf, &$$)) { - parser_warn(param, "unrecognized keysym \"%s\"", buf); + if ($1 <= XKB_KEYSYM_MAX) { + $$ = (xkb_keysym_t) $1; + } else { + parser_warn(param, "unrecognized keysym \"0x%"PRIx64"\"", $1); $$ = XKB_KEY_NoSymbol; } }