diff --git a/kitty/keys.py b/kitty/keys.py index 6722d8eb7..a15928329 100644 --- a/kitty/keys.py +++ b/kitty/keys.py @@ -175,7 +175,7 @@ class Mappings: self._push_keyboard_mode(sm) self.debug_print('\n\x1b[35mKeyPress\x1b[m matched sequence prefix, ', end='') else: - if len(final_actions) == 1: + if len(final_actions) == 1 and not final_actions[0].rest: self.pop_keyboard_mode() consumed = self.combine(final_actions[0].definition) if not consumed: diff --git a/kitty_tests/keys.py b/kitty_tests/keys.py index d8584a9bc..702616ebd 100644 --- a/kitty_tests/keys.py +++ b/kitty_tests/keys.py @@ -610,6 +610,11 @@ class TestKeys(BaseTest): af(tm.actions) self.ae(len(tm.active_window.key_seqs), 1) + # a single multi-key mapping should not prematurely match + tm = TM('map alt+1>2>3') + self.ae(tm('alt+1', '2'), [True, True]) + af(tm.actions) + # changing a multi key mapping tm = TM('map kitty_mod+p>f new_window') self.ae(tm('ctrl+shift+p', 'f'), [True, True])