diff options
author | nicm <nicm> | 2023-12-27 20:23:59 +0000 |
---|---|---|
committer | nicm <nicm> | 2023-12-27 20:23:59 +0000 |
commit | f7bf7e9671d89ac8b249ea52b7660ead9f700b03 (patch) | |
tree | c8e9ec7e94257fcab2373c14ca4d76fecb9c72d9 | |
parent | 008ecd45927681c6172ca1561eef1c6f4e7f57be (diff) |
Remove flags from the prefix before comparing with the received key so
that modifier keys with flags work correctly, GitHub issue 3764.
-rw-r--r-- | server-client.c | 8 | ||||
-rw-r--r-- | tmux.1 | 4 |
2 files changed, 7 insertions, 5 deletions
diff --git a/server-client.c b/server-client.c index 644d69e2..fa8bddfa 100644 --- a/server-client.c +++ b/server-client.c @@ -1867,7 +1867,7 @@ server_client_key_callback(struct cmdq_item *item, void *data) struct key_binding *bd; int xtimeout, flags; struct cmd_find_state fs; - key_code key0; + key_code key0, prefix, prefix2; /* Check the client is good to accept input. */ if (s == NULL || (c->flags & CLIENT_UNATTACHEDFLAGS)) @@ -1939,9 +1939,11 @@ table_changed: * The prefix always takes precedence and forces a switch to the prefix * table, unless we are already there. */ + prefix = (key_code)options_get_number(s->options, "prefix"); + prefix2 = (key_code)options_get_number(s->options, "prefix2"); key0 = (key & (KEYC_MASK_KEY|KEYC_MASK_MODIFIERS)); - if ((key0 == (key_code)options_get_number(s->options, "prefix") || - key0 == (key_code)options_get_number(s->options, "prefix2")) && + if ((key0 == (prefix & (KEYC_MASK_KEY|KEYC_MASK_MODIFIERS)) || + key0 == (prefix2 & (KEYC_MASK_KEY|KEYC_MASK_MODIFIERS))) && strcmp(table->name, "prefix") != 0) { server_client_set_key_table(c, "prefix"); server_status_client(c); @@ -590,8 +590,8 @@ line (the \e and the newline are completely removed). This is called line continuation and applies both inside and outside quoted strings and in comments, but not inside braces. .Pp -Command arguments may be specified as strings surrounded by single (\[aq]) quotes, -double quotes (\[dq]) or braces ({}). +Command arguments may be specified as strings surrounded by single (\[aq]) +quotes, double quotes (\[dq]) or braces ({}). .\" " This is required when the argument contains any special character. Single and double quoted strings cannot span multiple lines except with line |