diff --git a/kitty/key_encoding.c b/kitty/key_encoding.c index 52c01d7eb..eb69e5fcc 100644 --- a/kitty/key_encoding.c +++ b/kitty/key_encoding.c @@ -296,18 +296,38 @@ is_legacy_ascii_key(uint32_t key) { switch (key) { case 'a' ... 'z': case '0' ... '9': + case '!': + case '@': + case '#': + case '$': + case '%': + case '^': + case '&': + case '*': + case '(': + case ')': case '`': + case '~': case '-': + case '_': case '=': + case '+': case '[': + case '{': case ']': + case '}': case '\\': + case '|': case ';': case ':': case '\'': + case '"': case ',': + case '<': case '.': + case '>': case '/': + case '?': case ' ': return true; default: diff --git a/kitty_tests/keys.py b/kitty_tests/keys.py index c7a6f32c6..23f06c951 100644 --- a/kitty_tests/keys.py +++ b/kitty_tests/keys.py @@ -392,7 +392,8 @@ def a(a, b): # }}} ae(enc(key=ord(':'), shifted_key=ord('/'), mods=shift | alt), '\x1b/') - ae(enc(key=ord(':'), mods=alt), '\x1b:') + for key in '~!@#$%^&*()_+{}|:"<>?': + ae(enc(key=ord(key), mods=alt), '\x1b' + key) ae(enc(key=ord(' ')), ' ') ae(enc(key=ord(' '), mods=ctrl), '\0') ae(enc(key=ord(' '), mods=alt), '\x1b ')