summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicm <nicm>2023-12-27 20:23:59 +0000
committernicm <nicm>2023-12-27 20:23:59 +0000
commitf7bf7e9671d89ac8b249ea52b7660ead9f700b03 (patch)
treec8e9ec7e94257fcab2373c14ca4d76fecb9c72d9
parent008ecd45927681c6172ca1561eef1c6f4e7f57be (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.c8
-rw-r--r--tmux.14
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);
diff --git a/tmux.1 b/tmux.1
index 78214518..9ffc90d3 100644
--- a/tmux.1
+++ b/tmux.1
@@ -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