any_keycode_dialog: pre-fill current keycode
parent
54972955cc
commit
c1ff9f29a1
|
|
@ -7,7 +7,7 @@ from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLineEdit, Q
|
||||||
|
|
||||||
from keycodes import KEYCODES_SPECIAL, KEYCODES_BASIC, KEYCODES_SHIFTED, KEYCODES_ISO, KEYCODES_BACKLIGHT, \
|
from keycodes import KEYCODES_SPECIAL, KEYCODES_BASIC, KEYCODES_SHIFTED, KEYCODES_ISO, KEYCODES_BACKLIGHT, \
|
||||||
KEYCODES_MEDIA, KEYCODES_USER, QK_LCTL, QK_LSFT, QK_LALT, QK_LGUI, QK_RCTL, QK_RSFT, QK_RALT, QK_RGUI, QK_LAYER_TAP, \
|
KEYCODES_MEDIA, KEYCODES_USER, QK_LCTL, QK_LSFT, QK_LALT, QK_LGUI, QK_RCTL, QK_RSFT, QK_RALT, QK_RGUI, QK_LAYER_TAP, \
|
||||||
MOD_MEH, MOD_HYPR
|
MOD_MEH, MOD_HYPR, Keycode
|
||||||
from util import tr
|
from util import tr
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -138,8 +138,8 @@ class AnyKeycode:
|
||||||
|
|
||||||
class AnyKeycodeDialog(QDialog):
|
class AnyKeycodeDialog(QDialog):
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, initial):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__()
|
||||||
|
|
||||||
self.setWindowTitle(tr("AnyKeycodeDialog", "Enter an arbitrary keycode"))
|
self.setWindowTitle(tr("AnyKeycodeDialog", "Enter an arbitrary keycode"))
|
||||||
|
|
||||||
|
|
@ -157,15 +157,15 @@ class AnyKeycodeDialog(QDialog):
|
||||||
self.layout.addWidget(self.buttons)
|
self.layout.addWidget(self.buttons)
|
||||||
self.setLayout(self.layout)
|
self.setLayout(self.layout)
|
||||||
|
|
||||||
self.any = AnyKeycode()
|
self.value = initial
|
||||||
self.value = -1
|
self.txt_entry.setText(Keycode.serialize(initial))
|
||||||
self.on_change()
|
self.on_change()
|
||||||
|
|
||||||
def on_change(self):
|
def on_change(self):
|
||||||
text = self.txt_entry.text()
|
text = self.txt_entry.text()
|
||||||
value = err = None
|
value = err = None
|
||||||
try:
|
try:
|
||||||
value = self.any.decode(text)
|
value = Keycode.deserialize(text)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
err = str(e)
|
err = str(e)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -118,7 +118,10 @@ class KeymapEditor(BasicEditor):
|
||||||
self.tabbed_keycodes.set_keymap_override(override)
|
self.tabbed_keycodes.set_keymap_override(override)
|
||||||
|
|
||||||
def on_any_keycode(self):
|
def on_any_keycode(self):
|
||||||
dlg = AnyKeycodeDialog()
|
if self.container.active_key is None:
|
||||||
|
return
|
||||||
|
current_code = self.code_for_widget(self.container.active_key)
|
||||||
|
dlg = AnyKeycodeDialog(current_code)
|
||||||
if dlg.exec_() and dlg.value >= 0:
|
if dlg.exec_() and dlg.value >= 0:
|
||||||
self.on_keycode_changed(dlg.value)
|
self.on_keycode_changed(dlg.value)
|
||||||
|
|
||||||
|
|
@ -133,6 +136,13 @@ class KeymapEditor(BasicEditor):
|
||||||
return self.keymap_override[Keycode.find_outer_keycode(code).qmk_id]
|
return self.keymap_override[Keycode.find_outer_keycode(code).qmk_id]
|
||||||
return Keycode.label(code)
|
return Keycode.label(code)
|
||||||
|
|
||||||
|
def code_for_widget(self, widget):
|
||||||
|
if widget.desc.row is not None:
|
||||||
|
return self.keyboard.layout[(self.current_layer, widget.desc.row, widget.desc.col)]
|
||||||
|
else:
|
||||||
|
return self.keyboard.encoder_layout[(self.current_layer, widget.desc.encoder_idx,
|
||||||
|
widget.desc.encoder_dir)]
|
||||||
|
|
||||||
def refresh_layer_display(self):
|
def refresh_layer_display(self):
|
||||||
""" Refresh text on key widgets to display data corresponding to current layer """
|
""" Refresh text on key widgets to display data corresponding to current layer """
|
||||||
|
|
||||||
|
|
@ -143,11 +153,7 @@ class KeymapEditor(BasicEditor):
|
||||||
btn.setChecked(idx == self.current_layer)
|
btn.setChecked(idx == self.current_layer)
|
||||||
|
|
||||||
for widget in self.container.widgets:
|
for widget in self.container.widgets:
|
||||||
if widget.desc.row is not None:
|
code = self.code_for_widget(widget)
|
||||||
code = self.keyboard.layout[(self.current_layer, widget.desc.row, widget.desc.col)]
|
|
||||||
else:
|
|
||||||
code = self.keyboard.encoder_layout[(self.current_layer, widget.desc.encoder_idx,
|
|
||||||
widget.desc.encoder_dir)]
|
|
||||||
text = self.get_label(code)
|
text = self.get_label(code)
|
||||||
tooltip = Keycode.tooltip(code)
|
tooltip = Keycode.tooltip(code)
|
||||||
mask = Keycode.is_mask(code)
|
mask = Keycode.is_mask(code)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue