kitty kbd: don't generate release events for plain Enter+Tab+Backspace

From the specification:

    The Enter, Tab and Backspace keys will not have release events
    unless Report all keys as escape codes is also set, so that the
    user can still type reset at a shell prompt when a program that
    sets this mode ends without resetting it.

Closes #1892
This commit is contained in:
Daniel Eklöf 2025-01-01 08:06:52 +01:00
parent e38ec79be1
commit e851d44ac9
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 18 additions and 3 deletions

17
input.c
View file

@ -1236,9 +1236,20 @@ kitty_kbd_protocol(struct seat *seat, struct terminal *term,
if ((mods & ~locked & ~consumed) == 0) {
switch (sym) {
case XKB_KEY_Return: term_to_slave(term, "\r", 1); return true;
case XKB_KEY_BackSpace: term_to_slave(term, "\x7f", 1); return true;
case XKB_KEY_Tab: term_to_slave(term, "\t", 1); return true;
case XKB_KEY_Return:
if (!released)
term_to_slave(term, "\r", 1);
return true;
case XKB_KEY_BackSpace:
if (!released)
term_to_slave(term, "\x7f", 1);
return true;
case XKB_KEY_Tab:
if (!released)
term_to_slave(term, "\t", 1);
return true;
}
}