mirror of
https://github.com/tmate-io/tmate.git
synced 2024-12-23 15:19:06 +01:00
The last fix to xterm keys meant that some keys such as \033OA were
being wrongly treated as partial matches. So both check xterm keys after standard keys and only wildcard the minimum required ('1' to '8'). Problems reported by Ralf Horstmann and Tim van der Molen.
This commit is contained in:
parent
973de5a704
commit
c52548f6fd
18
tty-keys.c
18
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') {
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user