Author: cwittich Date: Wed Jan 16 22:29:09 2008 New Revision: 31831
URL: http://svn.reactos.org/svn/reactos?rev=31831&view=rev Log: fix explorer build
Modified: trunk/reactos/tools/wrc/parser.tab.c
Modified: trunk/reactos/tools/wrc/parser.tab.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/wrc/parser.tab.c?rev=... ============================================================================== --- trunk/reactos/tools/wrc/parser.tab.c (original) +++ trunk/reactos/tools/wrc/parser.tab.c Wed Jan 16 22:29:09 2008 @@ -4937,27 +4937,32 @@
static event_t *add_string_event(string_t *key, int id, int flags, event_t *prev) { - int keycode = 0; + int keycode = 0, keysym = 0; event_t *ev = new_event();
- if(key->type != str_char) - yyerror("Key code must be an ascii string"); - - if((flags & WRC_AF_VIRTKEY) && (!isupper(key->str.cstr[0] & 0xff) && !isdigit(key->str.cstr[0] & 0xff))) + if(key->type == str_char) + keysym = key->str.cstr[0]; + else + keysym = key->str.wstr[0]; + + if((flags & WRC_AF_VIRTKEY) && (!isupper(keysym & 0xff) && !isdigit(keysym & 0xff))) yyerror("VIRTKEY code is not equal to ascii value");
- if(key->str.cstr[0] == '^' && (flags & WRC_AF_CONTROL) != 0) + if(keysym == '^' && (flags & WRC_AF_CONTROL) != 0) { yyerror("Cannot use both '^' and CONTROL modifier"); } - else if(key->str.cstr[0] == '^') + else if(keysym == '^') { - keycode = toupper(key->str.cstr[1]) - '@'; + if(key->type == str_char) + keycode = toupper(key->str.cstr[1]) - '@'; + else + keycode = toupper(key->str.wstr[1]) - '@'; if(keycode >= ' ') yyerror("Control-code out of range"); } else - keycode = key->str.cstr[0]; + keycode = keysym; ev->key = keycode; ev->id = id; ev->flags = flags & ~WRC_AF_ASCII;