From ac8a696acbffa6352da43ad102a555ce6828081b Mon Sep 17 00:00:00 2001 From: xs5871 Date: Sun, 3 Jul 2022 15:32:35 +0000 Subject: [PATCH] fix combos to match new unittest --- kmk/modules/combos.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/kmk/modules/combos.py b/kmk/modules/combos.py index 77a2e8b..fc8c806 100644 --- a/kmk/modules/combos.py +++ b/kmk/modules/combos.py @@ -181,7 +181,7 @@ class Combos(Module): continue # Combo matches, but first key released before timeout. - elif not combo._remaining: + elif not combo._remaining and len(self._matching) == 1: keyboard.cancel_timeout(combo._timeout) self._matching.remove(combo) self.activate(keyboard, combo) @@ -194,6 +194,9 @@ class Combos(Module): combo._remaining.insert(0, key) self._matching.append(combo) + elif not combo._remaining: + continue + # Skip combos that allow tapping. elif combo.fast_reset: continue @@ -202,8 +205,9 @@ class Combos(Module): elif len(combo._remaining) == len(combo.match) - 1: self._matching.remove(combo) self.reset_combo(keyboard, combo) - self.send_key_buffer(keyboard) - self._key_buffer = [] + if not self._matching: + self.send_key_buffer(keyboard) + self._key_buffer = [] # Anything between first and last key released. else: @@ -228,6 +232,10 @@ class Combos(Module): if not combo._remaining: self.activate(keyboard, combo) + # check if the last buffered key event was a release + if self._key_buffer[-1][2] == False: + keyboard._send_hid() + self.deactivate(keyboard, combo) self._key_buffer = [] self.reset(keyboard) else: