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
This commit is contained in:
Daniel Eklöf 2026-04-17 13:34:17 +02:00
parent 2c454a71f1
commit 6183d1b767
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 3 additions and 22 deletions

View file

@ -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

View file

@ -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"},