summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tty-keys.c18
-rw-r--r--xterm-keys.c4
2 files changed, 12 insertions, 10 deletions
diff --git a/tty-keys.c b/tty-keys.c
index 7de5ce59..4492df1e 100644
--- a/tty-keys.c
+++ b/tty-keys.c
@@ -479,6 +479,15 @@ tty_keys_next(struct tty *tty)
goto partial_key;
}
+ /* Look for matching key string and return if found. */
+ tk = tty_keys_find(tty, buf, len, &size);
+ if (tk != NULL) {
+ if (tk->next != NULL)
+ goto partial_key;
+ key = tk->key;
+ goto complete_key;
+ }
+
/* Try to parse a key with an xterm-style modifier. */
switch (xterm_keys_find(buf, len, &size, &key)) {
case 0: /* found */
@@ -489,15 +498,6 @@ tty_keys_next(struct tty *tty)
goto partial_key;
}
- /* Look for matching key string and return if found. */
- tk = tty_keys_find(tty, buf, len, &size);
- if (tk != NULL) {
- if (tk->next != NULL)
- goto partial_key;
- key = tk->key;
- goto complete_key;
- }
-
first_key:
/* Is this a meta key? */
if (len >= 2 && buf[0] == '\033') {
diff --git a/xterm-keys.c b/xterm-keys.c
index 9b5a0a21..0e20165b 100644
--- a/xterm-keys.c
+++ b/xterm-keys.c
@@ -131,7 +131,9 @@ xterm_keys_match(const char *template, const char *buf, size_t len)
pos = 0;
do {
- if (*template != '_' && buf[pos] != *template)
+ if (*template == '_' && buf[pos] >= '1' && buf[pos] <= '8')
+ continue;
+ if (buf[pos] != *template)
return (-1);
} while (*++template != '\0' && ++pos != len);