macro: allow assigning macro keycodes
parent
7242138f76
commit
94ba5df315
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue