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): class KeyboardContainer(QWidget):
number_layers_changed = pyqtSignal()
def __init__(self, layout_editor): def __init__(self, layout_editor):
super().__init__() super().__init__()
@ -44,8 +42,6 @@ class KeyboardContainer(QWidget):
layout_editor.changed.connect(self.on_layout_changed) layout_editor.changed.connect(self.on_layout_changed)
def rebuild_layers(self): def rebuild_layers(self):
self.number_layers_changed.emit()
# delete old layer labels # delete old layer labels
for label in self.layer_labels: for label in self.layer_labels:
label.hide() label.hide()

View File

@ -440,8 +440,10 @@ def recreate_keycodes():
KEYCODES_QUANTUM + KEYCODES_BACKLIGHT + KEYCODES_MEDIA + KEYCODES_MACRO) KEYCODES_QUANTUM + KEYCODES_BACKLIGHT + KEYCODES_MEDIA + KEYCODES_MACRO)
def recreate_layer_keycodes(layers): def recreate_keyboard_keycodes(keyboard):
""" Generates layer keycodes based on number of layers a keyboard provides """ """ Generates keycodes based on information the keyboard provides (e.g. layer keycodes, macros) """
layers = keyboard.layers
def generate_keycodes_for_mask(label, mask): def generate_keycodes_for_mask(label, mask):
keycodes = [] 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), 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)) "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() recreate_keycodes()

View File

@ -2,7 +2,7 @@
from basic_editor import BasicEditor from basic_editor import BasicEditor
from keyboard_container import KeyboardContainer from keyboard_container import KeyboardContainer
from keycodes import recreate_layer_keycodes from keycodes import recreate_keyboard_keycodes
from tabbed_keycodes import TabbedKeycodes from tabbed_keycodes import TabbedKeycodes
from vial_device import VialKeyboard from vial_device import VialKeyboard
@ -13,7 +13,6 @@ class KeymapEditor(BasicEditor):
super().__init__() super().__init__()
self.keyboard_container = KeyboardContainer(layout_editor) 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 = TabbedKeycodes()
self.tabbed_keycodes.keycode_changed.connect(self.on_keycode_changed) self.tabbed_keycodes.keycode_changed.connect(self.on_keycode_changed)
@ -23,17 +22,16 @@ class KeymapEditor(BasicEditor):
self.device = None 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): def on_keycode_changed(self, code):
self.keyboard_container.set_key(code) self.keyboard_container.set_key(code)
def rebuild(self, device): def rebuild(self, device):
super().rebuild(device) super().rebuild(device)
if isinstance(self.device, VialKeyboard): if self.valid():
self.keyboard_container.rebuild(device.keyboard) 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): def valid(self):
return isinstance(self.device, VialKeyboard) return isinstance(self.device, VialKeyboard)

View File

@ -37,6 +37,8 @@ class TabbedKeycodes(QTabWidget):
layout = FlowLayout() layout = FlowLayout()
if tab == self.tab_layers: if tab == self.tab_layers:
self.layout_layers = layout self.layout_layers = layout
elif tab == self.tab_macro:
self.layout_macro = layout
self.create_buttons(layout, keycodes) self.create_buttons(layout, keycodes)
@ -50,6 +52,7 @@ class TabbedKeycodes(QTabWidget):
self.addTab(tab, tr("TabbedKeycodes", label)) self.addTab(tab, tr("TabbedKeycodes", label))
self.layer_keycode_buttons = [] self.layer_keycode_buttons = []
self.macro_keycode_buttons = []
def create_buttons(self, layout, keycodes): def create_buttons(self, layout, keycodes):
buttons = [] buttons = []
@ -64,8 +67,9 @@ class TabbedKeycodes(QTabWidget):
return buttons return buttons
def recreate_layer_keycode_buttons(self): def recreate_keycode_buttons(self):
for btn in self.layer_keycode_buttons: for btn in self.layer_keycode_buttons + self.macro_keycode_buttons:
btn.hide() btn.hide()
btn.deleteLater() btn.deleteLater()
self.layer_keycode_buttons = self.create_buttons(self.layout_layers, KEYCODES_LAYERS) self.layer_keycode_buttons = self.create_buttons(self.layout_layers, KEYCODES_LAYERS)
self.macro_keycode_buttons = self.create_buttons(self.layout_macro, KEYCODES_MACRO)