diff --git a/src/main/python/keyboard_container.py b/src/main/python/keyboard_container.py index 8248384..441a366 100644 --- a/src/main/python/keyboard_container.py +++ b/src/main/python/keyboard_container.py @@ -12,8 +12,6 @@ from util import tr class KeyboardContainer(QWidget): - number_layers_changed = pyqtSignal() - def __init__(self, layout_editor): super().__init__() @@ -44,8 +42,6 @@ class KeyboardContainer(QWidget): layout_editor.changed.connect(self.on_layout_changed) def rebuild_layers(self): - self.number_layers_changed.emit() - # delete old layer labels for label in self.layer_labels: label.hide() diff --git a/src/main/python/keycodes.py b/src/main/python/keycodes.py index e489b18..536ee81 100644 --- a/src/main/python/keycodes.py +++ b/src/main/python/keycodes.py @@ -440,8 +440,10 @@ def recreate_keycodes(): KEYCODES_QUANTUM + KEYCODES_BACKLIGHT + KEYCODES_MEDIA + KEYCODES_MACRO) -def recreate_layer_keycodes(layers): - """ Generates layer keycodes based on number of layers a keyboard provides """ +def recreate_keyboard_keycodes(keyboard): + """ Generates keycodes based on information the keyboard provides (e.g. layer keycodes, macros) """ + + layers = keyboard.layers def generate_keycodes_for_mask(label, mask): keycodes = [] @@ -466,6 +468,11 @@ def recreate_layer_keycodes(layers): KEYCODES_LAYERS.append(Keycode(LT(x), "LT({}, kc)".format(x), "LT {}\n(kc)".format(x), "kc on tap, switch to layer {} while held".format(x), masked=True)) + KEYCODES_MACRO.clear() + for x in range(keyboard.macro_count): + lbl = "M{}".format(x) + KEYCODES_MACRO.append(Keycode(0x5F12 + x, lbl, lbl)) + recreate_keycodes() diff --git a/src/main/python/keymap_editor.py b/src/main/python/keymap_editor.py index d653acb..3cf1feb 100644 --- a/src/main/python/keymap_editor.py +++ b/src/main/python/keymap_editor.py @@ -2,7 +2,7 @@ from basic_editor import BasicEditor from keyboard_container import KeyboardContainer -from keycodes import recreate_layer_keycodes +from keycodes import recreate_keyboard_keycodes from tabbed_keycodes import TabbedKeycodes from vial_device import VialKeyboard @@ -13,7 +13,6 @@ class KeymapEditor(BasicEditor): super().__init__() self.keyboard_container = KeyboardContainer(layout_editor) - self.keyboard_container.number_layers_changed.connect(self.on_number_layers_changed) self.tabbed_keycodes = TabbedKeycodes() self.tabbed_keycodes.keycode_changed.connect(self.on_keycode_changed) @@ -23,17 +22,16 @@ class KeymapEditor(BasicEditor): self.device = None - def on_number_layers_changed(self): - recreate_layer_keycodes(self.keyboard_container.keyboard.layers) - self.tabbed_keycodes.recreate_layer_keycode_buttons() - def on_keycode_changed(self, code): self.keyboard_container.set_key(code) def rebuild(self, device): super().rebuild(device) - if isinstance(self.device, VialKeyboard): + if self.valid(): self.keyboard_container.rebuild(device.keyboard) + recreate_keyboard_keycodes(self.keyboard_container.keyboard) + self.tabbed_keycodes.recreate_keycode_buttons() + self.keyboard_container.refresh_layer_display() def valid(self): return isinstance(self.device, VialKeyboard) diff --git a/src/main/python/tabbed_keycodes.py b/src/main/python/tabbed_keycodes.py index 4459030..cd3b9a1 100644 --- a/src/main/python/tabbed_keycodes.py +++ b/src/main/python/tabbed_keycodes.py @@ -37,6 +37,8 @@ class TabbedKeycodes(QTabWidget): layout = FlowLayout() if tab == self.tab_layers: self.layout_layers = layout + elif tab == self.tab_macro: + self.layout_macro = layout self.create_buttons(layout, keycodes) @@ -50,6 +52,7 @@ class TabbedKeycodes(QTabWidget): self.addTab(tab, tr("TabbedKeycodes", label)) self.layer_keycode_buttons = [] + self.macro_keycode_buttons = [] def create_buttons(self, layout, keycodes): buttons = [] @@ -64,8 +67,9 @@ class TabbedKeycodes(QTabWidget): return buttons - def recreate_layer_keycode_buttons(self): - for btn in self.layer_keycode_buttons: + def recreate_keycode_buttons(self): + for btn in self.layer_keycode_buttons + self.macro_keycode_buttons: btn.hide() btn.deleteLater() self.layer_keycode_buttons = self.create_buttons(self.layout_layers, KEYCODES_LAYERS) + self.macro_keycode_buttons = self.create_buttons(self.layout_macro, KEYCODES_MACRO)