From 429aa45e09a8d393b8e8485e8cd45fd84518391e Mon Sep 17 00:00:00 2001 From: nicm Date: Mon, 21 Oct 2024 07:38:06 +0000 Subject: [PATCH] Adjust how Ctrl and Meta keys are sent to use standard representation if available in mode 1, from Stanislav Kljuhhin, GitHub issue 4188. --- usr.bin/tmux/input-keys.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/usr.bin/tmux/input-keys.c b/usr.bin/tmux/input-keys.c index fc6cf7f82d1..85d59d3fdb3 100644 --- a/usr.bin/tmux/input-keys.c +++ b/usr.bin/tmux/input-keys.c @@ -1,4 +1,4 @@ -/* $OpenBSD: input-keys.c,v 1.101 2024/10/03 05:41:59 nicm Exp $ */ +/* $OpenBSD: input-keys.c,v 1.102 2024/10/21 07:38:06 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -543,12 +543,16 @@ input_key_mode1(struct bufferevent *bev, key_code key) log_debug("%s: key in %llx", __func__, key); + /* A regular or shifted key + Meta. */ + if ((key & (KEYC_CTRL | KEYC_META)) == KEYC_META) + return (input_key_vt10x(bev, key)); + /* * As per * https://invisible-island.net/xterm/modified-keys-us-pc105.html. */ onlykey = key & KEYC_MASK_KEY; - if ((key & (KEYC_META | KEYC_CTRL)) == KEYC_CTRL && + if ((key & KEYC_CTRL) && (onlykey == ' ' || onlykey == '/' || onlykey == '@' || @@ -557,13 +561,6 @@ input_key_mode1(struct bufferevent *bev, key_code key) (onlykey >= '@' && onlykey <= '~'))) return (input_key_vt10x(bev, key)); - /* - * A regular key + Meta. In the absence of a standard to back this, we - * mimic what iTerm 2 does. - */ - if ((key & (KEYC_CTRL | KEYC_META)) == KEYC_META) - return (input_key_vt10x(bev, key)); - return (-1); } -- 2.20.1