macro: allow assigning macro keycodes

main
Ilya Zhuravlev 2020-12-25 14:27:28 -05:00
parent 7242138f76
commit 94ba5df315
4 changed files with 20 additions and 15 deletions

View File

@ -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()

View File

@ -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()

View File

@ -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)

View File

@ -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)