From cd30de37276338f9619251fb8247f663f48ee515 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 25 Jan 2024 14:06:52 +0530 Subject: [PATCH] Fix #7055 --- kitty/keys.py | 9 +++++++-- kitty_tests/keys.py | 4 ++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/kitty/keys.py b/kitty/keys.py index 377cb3966..afc6a486f 100644 --- a/kitty/keys.py +++ b/kitty/keys.py @@ -173,10 +173,15 @@ class Mappings: self._push_keyboard_mode(sm) self.debug_print('\n\x1b[35mKeyPress\x1b[m matched sequence prefix, ', end='') else: - mode.sequence_keys.append(ev) if len(final_actions) == 1: self.pop_keyboard_mode() - return self.combine(final_actions[0].definition) + consumed = self.combine(final_actions[0].definition) + if not consumed: + w = self.get_active_window() + if w is not None: + w.send_key_sequence(*mode.sequence_keys) + return consumed + mode.sequence_keys.append(ev) self.debug_print('\n\x1b[35mKeyPress\x1b[m matched sequence prefix, ', end='') mode.keymap.clear() for fa in final_actions: diff --git a/kitty_tests/keys.py b/kitty_tests/keys.py index 05c8685e2..6edae3842 100644 --- a/kitty_tests/keys.py +++ b/kitty_tests/keys.py @@ -578,6 +578,10 @@ class TestKeys(BaseTest): self.ae(tm('ctrl+f', '1'), [True, False]) af(tm.actions) self.ae(len(tm.active_window.key_seqs), 1) # ctrl+f should have been sent to the window + # multi-key mapping that is unmapped should send all keys to child + tm = TM('map kitty_mod+p>f') + self.ae(tm('ctrl+shift+p', 'f'), [True, False]) + self.ae(len(tm.active_window.key_seqs), 1) # unmap tm = TM('map kitty_mod+enter')