From cbfcbf72ad85be34b48e74350b7b9c07b93d245c Mon Sep 17 00:00:00 2001 From: Ilya Zhuravlev Date: Fri, 18 Dec 2020 22:55:48 -0500 Subject: [PATCH] keyboard_widget: auto-select next key after changing the mapping --- src/main/python/keyboard_container.py | 2 ++ src/main/python/keyboard_widget.py | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/main/python/keyboard_container.py b/src/main/python/keyboard_container.py index f48d3a5..e6b07c2 100644 --- a/src/main/python/keyboard_container.py +++ b/src/main/python/keyboard_container.py @@ -111,6 +111,8 @@ class KeyboardContainer(QWidget): else: self.set_key_matrix(keycode) + self.container.select_next() + def set_key_encoder(self, keycode): l, i, d = self.current_layer, self.container.active_key.desc.encoder_idx,\ self.container.active_key.desc.encoder_dir diff --git a/src/main/python/keyboard_widget.py b/src/main/python/keyboard_widget.py index ac278c7..2bba805 100644 --- a/src/main/python/keyboard_widget.py +++ b/src/main/python/keyboard_widget.py @@ -224,6 +224,18 @@ class KeyboardWidget(QWidget): self.clicked.emit() self.update() + def select_next(self): + """ Selects next key based on their order in the keymap """ + # TODO: this almost certainly needs changes after multilayout support lands + + keys_looped = self.keys + [self.keys[0]] + for x, key in enumerate(keys_looped): + if key == self.active_key: + self.active_key = keys_looped[x + 1] + self.active_mask = False + self.clicked.emit() + return + def deselect(self): if self.active_key is not None: self.active_key = None