commit 1c528db8dace5c25f444392d52e455bd25954d23
parent 1c9ab8bf16476e1c2efd06039f3fb9f284b0c7b1
Author: Benno Schulenberg <bensberg@justemail.net>
Date: Mon, 25 Jul 2016 09:33:43 +0200
tweaks: condense three asserts into a single one
Also, when a key string does not denote a Ctrl nor Meta nor Function key,
there is no point in assigning a keycode, because plain characters cannot
be used as a function shortcut.
Diffstat:
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git 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);
+ assert(strlen(keystring) > 1 && (!s->meta || strlen(keystring) > 2));
+
+ if (keystring[0] == '^')
s->keycode = s->keystr[1] - 64;
- } else if (s->meta) {
- assert(strlen(s->keystr) > 2);
+ else if (s->meta)
s->keycode = tolower((int) s->keystr[2]);
- } else if (s->keystr[0] == 'F') {
- assert(strlen(s->keystr) > 1);
+ else if (keystring[0] == 'F')
s->keycode = KEY_F0 + atoi(&s->keystr[1]);
- } else /* RAWINPUT */
- s->keycode = (int) s->keystr[0];
- /* Override some keys which don't bind as easily as we'd like. */
+ /* 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)