wrc: Add support for Unicode accelerator strings.
This commit is contained in:
parent
18828f41fe
commit
cff332fbfd
|
@ -2276,12 +2276,11 @@ static event_t *add_event(int key, int id, int flags, event_t *prev)
|
||||||
|
|
||||||
static event_t *add_string_event(string_t *key, int id, int flags, event_t *prev)
|
static event_t *add_string_event(string_t *key, int id, int flags, event_t *prev)
|
||||||
{
|
{
|
||||||
int keycode = 0;
|
int keycode = 0;
|
||||||
event_t *ev = new_event();
|
event_t *ev = new_event();
|
||||||
|
|
||||||
if(key->type != str_char)
|
|
||||||
yyerror("Key code must be an ascii string");
|
|
||||||
|
|
||||||
|
if(key->type == str_char)
|
||||||
|
{
|
||||||
if((flags & WRC_AF_VIRTKEY) && (!isupper(key->str.cstr[0] & 0xff) && !isdigit(key->str.cstr[0] & 0xff)))
|
if((flags & WRC_AF_VIRTKEY) && (!isupper(key->str.cstr[0] & 0xff) && !isdigit(key->str.cstr[0] & 0xff)))
|
||||||
yyerror("VIRTKEY code is not equal to ascii value");
|
yyerror("VIRTKEY code is not equal to ascii value");
|
||||||
|
|
||||||
|
@ -2297,13 +2296,33 @@ static event_t *add_string_event(string_t *key, int id, int flags, event_t *prev
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
keycode = key->str.cstr[0];
|
keycode = key->str.cstr[0];
|
||||||
ev->key = keycode;
|
}
|
||||||
ev->id = id;
|
else
|
||||||
ev->flags = flags & ~WRC_AF_ASCII;
|
{
|
||||||
ev->prev = prev;
|
if((flags & WRC_AF_VIRTKEY) && !isupperW(key->str.wstr[0]) && !isdigitW(key->str.wstr[0]))
|
||||||
if(prev)
|
yyerror("VIRTKEY code is not equal to ascii value");
|
||||||
prev->next = ev;
|
|
||||||
return ev;
|
if(key->str.wstr[0] == '^' && (flags & WRC_AF_CONTROL) != 0)
|
||||||
|
{
|
||||||
|
yyerror("Cannot use both '^' and CONTROL modifier");
|
||||||
|
}
|
||||||
|
else if(key->str.wstr[0] == '^')
|
||||||
|
{
|
||||||
|
keycode = toupperW(key->str.wstr[1]) - '@';
|
||||||
|
if(keycode >= ' ')
|
||||||
|
yyerror("Control-code out of range");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
keycode = key->str.wstr[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
ev->key = keycode;
|
||||||
|
ev->id = id;
|
||||||
|
ev->flags = flags & ~WRC_AF_ASCII;
|
||||||
|
ev->prev = prev;
|
||||||
|
if(prev)
|
||||||
|
prev->next = ev;
|
||||||
|
return ev;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* MenuEx specific functions */
|
/* MenuEx specific functions */
|
||||||
|
|
Loading…
Reference in New Issue