From 6183d1b767480b0a96db967e0e1e268317966ce6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Fri, 17 Apr 2026 13:34:17 +0200 Subject: [PATCH] keymap: no reason keypad keys shouldn't map shift I'm guessing, but I'm not sure, that when I initially implemented this, XTerm ignored shift in keypad escapes. Testing again, it doesn't. And regardless of what XTerm does, I don't really see any reason to exclude shift from keypad escapes. Closes #2324 --- CHANGELOG.md | 3 +++ keymap.h | 22 ---------------------- 2 files changed, 3 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7efa126a..675e135f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -94,9 +94,12 @@ * Scrollback search not working correctly when the terminal application has enabled the kitty keyboard protocol with release event reporting ([#2316][2316]). +* Keypad escapes in the legacy keyboard protocol ignoring the shift + modifier ([#2324][2324]). [2307]: https://codeberg.org/dnkl/foot/issues/2307 [2316]: https://codeberg.org/dnkl/foot/issues/2316 +[2324]: https://codeberg.org/dnkl/foot/issues/2324 ### Security diff --git a/keymap.h b/keymap.h index 79d4b8b3..008f0e16 100644 --- a/keymap.h +++ b/keymap.h @@ -310,28 +310,6 @@ static const struct key_data key_f33[] = {{MOD_NONE, CURSOR_KEYS_DONTCARE, KEYPA static const struct key_data key_f34[] = {{MOD_NONE, CURSOR_KEYS_DONTCARE, KEYPAD_DONTCARE, "\033[21;5~"}}; static const struct key_data key_f35[] = {{MOD_NONE, CURSOR_KEYS_DONTCARE, KEYPAD_DONTCARE, "\033[23;5~"}}; -/* Keypad keys don't map shift */ -#undef DEFAULT_MODS_FOR_SINGLE -#undef DEFAULT_MODS_FOR_TILDE - -#define DEFAULT_MODS_FOR_SINGLE(sym) \ - {MOD_ALT, CURSOR_KEYS_DONTCARE, KEYPAD_DONTCARE, "\033[1;3"#sym}, \ - {MOD_CTRL, CURSOR_KEYS_DONTCARE, KEYPAD_DONTCARE, "\033[1;5"#sym}, \ - {MOD_ALT | MOD_CTRL, CURSOR_KEYS_DONTCARE, KEYPAD_DONTCARE, "\033[1;7"#sym}, \ - {MOD_META, CURSOR_KEYS_DONTCARE, KEYPAD_DONTCARE, "\033[1;9"#sym}, \ - {MOD_META | MOD_ALT, CURSOR_KEYS_DONTCARE, KEYPAD_DONTCARE, "\033[1;11"#sym}, \ - {MOD_META | MOD_CTRL, CURSOR_KEYS_DONTCARE, KEYPAD_DONTCARE, "\033[1;13"#sym}, \ - {MOD_META | MOD_ALT | MOD_CTRL, CURSOR_KEYS_DONTCARE, KEYPAD_DONTCARE, "\033[1;15"#sym} - -#define DEFAULT_MODS_FOR_TILDE(sym) \ - {MOD_ALT, CURSOR_KEYS_DONTCARE, KEYPAD_DONTCARE, "\033["#sym";3~"}, \ - {MOD_CTRL, CURSOR_KEYS_DONTCARE, KEYPAD_DONTCARE, "\033["#sym";5~"}, \ - {MOD_ALT | MOD_CTRL, CURSOR_KEYS_DONTCARE, KEYPAD_DONTCARE, "\033["#sym";7~"}, \ - {MOD_META, CURSOR_KEYS_DONTCARE, KEYPAD_DONTCARE, "\033["#sym";9~"}, \ - {MOD_META | MOD_ALT, CURSOR_KEYS_DONTCARE, KEYPAD_DONTCARE, "\033["#sym";11~"}, \ - {MOD_META | MOD_CTRL, CURSOR_KEYS_DONTCARE, KEYPAD_DONTCARE, "\033["#sym";13~"}, \ - {MOD_META | MOD_ALT | MOD_CTRL, CURSOR_KEYS_DONTCARE, KEYPAD_DONTCARE, "\033["#sym";15~"} - static const struct key_data key_kp_up[] = { DEFAULT_MODS_FOR_SINGLE(A), {MOD_ANY, CURSOR_KEYS_NORMAL, KEYPAD_DONTCARE, "\033[A"},