From eb04f9314bdddecfd0f21c2a367d957cada72aea 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. --- input-keys.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/input-keys.c b/input-keys.c index e690a3a8..dcd68011 100644 --- a/input-keys.c +++ b/input-keys.c @@ -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); }