key_widget: support changing keycodes

main
Ilya Zhuravlev 2021-07-03 16:16:07 -04:00
parent fea0dcaa9b
commit af311b51c3
2 changed files with 25 additions and 3 deletions

View File

@ -1,6 +1,8 @@
from any_keycode_dialog import AnyKeycodeDialog
from keyboard_widget import KeyboardWidget
from kle_serial import Key
from tabbed_keycodes import TabbedKeycodes
from util import KeycodeDisplay
class KeyWidget(KeyboardWidget):
@ -17,6 +19,8 @@ class KeyWidget(KeyboardWidget):
key.layout_index = key.layout_option = -1
self.set_keys([key], [])
self.anykey.connect(self.on_anykey)
def mousePressEvent(self, ev):
super().mousePressEvent(ev)
if self.active_key is not None:
@ -24,6 +28,23 @@ class KeyWidget(KeyboardWidget):
else:
TabbedKeycodes.close_tray()
def on_keycode_changed(self, kc):
def on_keycode_changed(self, keycode):
""" Unlike set_keycode, this handles setting masked keycode inside the mask """
print(kc)
if self.active_mask:
if keycode > 0xFF:
return
keycode = (self.keycode & 0xFF00) | keycode
self.set_keycode(keycode)
def on_anykey(self):
if self.active_key is None:
return
dlg = AnyKeycodeDialog(self.keycode)
if dlg.exec_() and dlg.value >= 0:
self.set_keycode(dlg.value)
def set_keycode(self, kc):
self.keycode = kc
KeycodeDisplay.display_keycode(self.widgets[0], self.keycode)
self.update()

View File

@ -146,4 +146,5 @@ class TabbedKeycodes(QTabWidget):
self.target.on_keycode_changed(kc)
def on_tray_anykey(self):
pass
if self.target is not None:
self.target.on_anykey()