diff --git a/src/global.c b/src/global.c index 3ddfc9a2..74f8fab0 100644 --- a/src/global.c +++ b/src/global.c @@ -404,19 +404,16 @@ void assign_keyinfo(sc *s, const char *keystring) s->keystr = (char *)keystring; s->meta = (keystring[0] == 'M'); - if (s->keystr[0] == '^') { - assert(strlen(s->keystr) > 1); - s->keycode = s->keystr[1] - 64; - } else if (s->meta) { - assert(strlen(s->keystr) > 2); - s->keycode = tolower((int) s->keystr[2]); - } else if (s->keystr[0] == 'F') { - assert(strlen(s->keystr) > 1); - s->keycode = KEY_F0 + atoi(&s->keystr[1]); - } else /* RAWINPUT */ - s->keycode = (int) s->keystr[0]; + assert(strlen(keystring) > 1 && (!s->meta || strlen(keystring) > 2)); - /* Override some keys which don't bind as easily as we'd like. */ + if (keystring[0] == '^') + s->keycode = s->keystr[1] - 64; + else if (s->meta) + s->keycode = tolower((int) s->keystr[2]); + else if (keystring[0] == 'F') + s->keycode = KEY_F0 + atoi(&s->keystr[1]); + + /* Catch the strings that don't bind as easily as we'd like. */ if (strcasecmp(s->keystr, "^Space") == 0) s->keycode = 0; else if (strcasecmp(s->keystr, "M-Space") == 0)