From 5c3cf2f08b0b10cb245a63ec8e0f5f39629e1f6b Mon Sep 17 00:00:00 2001 From: nicm Date: Fri, 6 Dec 2024 09:07:40 +0000 Subject: [PATCH] Preserve modifiers on backspace. --- input-keys.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/input-keys.c b/input-keys.c index 4cad4f50..3fa38049 100644 --- a/input-keys.c +++ b/input-keys.c @@ -588,9 +588,10 @@ input_key(struct screen *s, struct bufferevent *bev, key_code key) newkey = options_get_number(global_options, "backspace"); if (newkey == KEYC_BSPACE) newkey = '\b'; - log_debug("%s: key 0x%llx is backspace -> 0x%llx", __func__, - key, newkey|(key & KEYC_MASK_FLAGS)); - key = newkey|(key & KEYC_MASK_FLAGS); + newkey |= (key & (KEYC_MASK_FLAGS|KEYC_MASK_MODIFIERS)); + log_debug("%s: key 0x%llx is backspace -> 0x%llx", __func__, key, + newkey); + key = newkey; } /* Is this backtab? */ @@ -645,8 +646,7 @@ input_key(struct screen *s, struct bufferevent *bev, key_code key) if (ike != NULL) { log_debug("%s: found key 0x%llx: \"%s\"", __func__, key, ike->data); - if ((key == KEYC_PASTE_START || key == KEYC_PASTE_END) && - (~s->mode & MODE_BRACKETPASTE)) + if (KEYC_IS_PASTE(key) && (~s->mode & MODE_BRACKETPASTE)) return (0); if ((key & KEYC_META) && (~key & KEYC_IMPLIED_META)) input_key_write(__func__, bev, "\033", 1);