Adjust how Ctrl and Meta keys are sent to use standard representation if

available in mode 1, from Stanislav Kljuhhin, GitHub issue 4188.
This commit is contained in:
nicm 2024-10-21 07:38:06 +00:00
parent 71aa4fe767
commit eb04f9314b

View File

@ -543,12 +543,16 @@ input_key_mode1(struct bufferevent *bev, key_code key)
log_debug("%s: key in %llx", __func__, 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 * As per
* https://invisible-island.net/xterm/modified-keys-us-pc105.html. * https://invisible-island.net/xterm/modified-keys-us-pc105.html.
*/ */
onlykey = key & KEYC_MASK_KEY; onlykey = key & KEYC_MASK_KEY;
if ((key & (KEYC_META | KEYC_CTRL)) == KEYC_CTRL && if ((key & KEYC_CTRL) &&
(onlykey == ' ' || (onlykey == ' ' ||
onlykey == '/' || onlykey == '/' ||
onlykey == '@' || onlykey == '@' ||
@ -557,13 +561,6 @@ input_key_mode1(struct bufferevent *bev, key_code key)
(onlykey >= '@' && onlykey <= '~'))) (onlykey >= '@' && onlykey <= '~')))
return (input_key_vt10x(bev, key)); 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); return (-1);
} }