move keymap override handling into global util
parent
ec3df5bdd0
commit
fea0dcaa9b
|
|
@ -23,3 +23,7 @@ class KeyWidget(KeyboardWidget):
|
|||
TabbedKeycodes.open_tray(self)
|
||||
else:
|
||||
TabbedKeycodes.close_tray()
|
||||
|
||||
def on_keycode_changed(self, kc):
|
||||
""" Unlike set_keycode, this handles setting masked keycode inside the mask """
|
||||
print(kc)
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
import json
|
||||
|
||||
from PyQt5.QtGui import QPalette
|
||||
from PyQt5.QtWidgets import QHBoxLayout, QLabel, QVBoxLayout, QMessageBox, QApplication
|
||||
from PyQt5.QtWidgets import QHBoxLayout, QLabel, QVBoxLayout, QMessageBox
|
||||
from PyQt5.QtCore import Qt
|
||||
|
||||
from any_keycode_dialog import AnyKeycodeDialog
|
||||
|
|
@ -12,7 +11,7 @@ from keycodes import recreate_keyboard_keycodes, Keycode
|
|||
from keymaps import KEYMAPS
|
||||
from square_button import SquareButton
|
||||
from tabbed_keycodes import TabbedKeycodes
|
||||
from util import tr
|
||||
from util import tr, KeycodeDisplay
|
||||
from vial_device import VialKeyboard
|
||||
|
||||
|
||||
|
|
@ -48,8 +47,6 @@ class KeymapEditor(BasicEditor):
|
|||
|
||||
layout_editor.changed.connect(self.on_layout_changed)
|
||||
|
||||
self.keymap_override = KEYMAPS[0][1]
|
||||
|
||||
self.container.anykey.connect(self.on_any_keycode)
|
||||
|
||||
self.tabbed_keycodes = TabbedKeycodes()
|
||||
|
|
@ -60,6 +57,7 @@ class KeymapEditor(BasicEditor):
|
|||
self.addWidget(self.tabbed_keycodes)
|
||||
|
||||
self.device = None
|
||||
KeycodeDisplay.notify_keymap_override(self)
|
||||
|
||||
def on_container_clicked(self):
|
||||
""" Called when a mouse click event is bubbled up to the editor's container """
|
||||
|
|
@ -135,11 +133,6 @@ class KeymapEditor(BasicEditor):
|
|||
self.keyboard.restore_layout(data)
|
||||
self.refresh_layer_display()
|
||||
|
||||
def set_keymap_override(self, override):
|
||||
self.keymap_override = override
|
||||
self.refresh_layer_display()
|
||||
self.tabbed_keycodes.set_keymap_override(override)
|
||||
|
||||
def on_any_keycode(self):
|
||||
if self.container.active_key is None:
|
||||
return
|
||||
|
|
@ -148,17 +141,6 @@ class KeymapEditor(BasicEditor):
|
|||
if dlg.exec_() and dlg.value >= 0:
|
||||
self.on_keycode_changed(dlg.value)
|
||||
|
||||
def code_is_overriden(self, code):
|
||||
""" Check whether a country-specific keymap overrides a code """
|
||||
key = Keycode.find_outer_keycode(code)
|
||||
return key is not None and key.qmk_id in self.keymap_override
|
||||
|
||||
def get_label(self, code):
|
||||
""" Get label for a specific keycode """
|
||||
if self.code_is_overriden(code):
|
||||
return self.keymap_override[Keycode.find_outer_keycode(code).qmk_id]
|
||||
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)]
|
||||
|
|
@ -177,20 +159,7 @@ class KeymapEditor(BasicEditor):
|
|||
|
||||
for widget in self.container.widgets:
|
||||
code = self.code_for_widget(widget)
|
||||
text = self.get_label(code)
|
||||
tooltip = Keycode.tooltip(code)
|
||||
mask = Keycode.is_mask(code)
|
||||
mask_text = self.get_label(code & 0xFF)
|
||||
if mask:
|
||||
text = text.split("\n")[0]
|
||||
widget.masked = mask
|
||||
widget.setText(text)
|
||||
widget.setMaskText(mask_text)
|
||||
widget.setToolTip(tooltip)
|
||||
if self.code_is_overriden(code):
|
||||
widget.setColor(QApplication.palette().color(QPalette.Link))
|
||||
else:
|
||||
widget.setColor(None)
|
||||
KeycodeDisplay.display_keycode(widget, code)
|
||||
self.container.update()
|
||||
self.container.updateGeometry()
|
||||
|
||||
|
|
@ -245,3 +214,6 @@ class KeymapEditor(BasicEditor):
|
|||
|
||||
self.refresh_layer_display()
|
||||
self.keyboard.set_layout_options(self.layout_editor.pack())
|
||||
|
||||
def on_keymap_override(self):
|
||||
self.refresh_layer_display()
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ from rgb_configurator import RGBConfigurator
|
|||
from tabbed_keycodes import TabbedKeycodes
|
||||
from tap_dance import TapDance
|
||||
from unlocker import Unlocker
|
||||
from util import tr, find_vial_devices, EXAMPLE_KEYBOARDS
|
||||
from util import tr, find_vial_devices, EXAMPLE_KEYBOARDS, KeycodeDisplay
|
||||
from vial_device import VialKeyboard
|
||||
from matrix_test import MatrixTest
|
||||
|
||||
|
|
@ -92,10 +92,10 @@ class MainWindow(QMainWindow):
|
|||
layout.addWidget(self.tabs)
|
||||
layout.addWidget(self.lbl_no_devices)
|
||||
layout.setAlignment(self.lbl_no_devices, Qt.AlignHCenter)
|
||||
self.popup_keycodes = TabbedKeycodes()
|
||||
TabbedKeycodes.set_tray(self.popup_keycodes)
|
||||
layout.addWidget(self.popup_keycodes)
|
||||
self.popup_keycodes.hide()
|
||||
self.tray_keycodes = TabbedKeycodes()
|
||||
self.tray_keycodes.make_tray()
|
||||
layout.addWidget(self.tray_keycodes)
|
||||
self.tray_keycodes.hide()
|
||||
w = QWidget()
|
||||
w.setLayout(layout)
|
||||
self.setCentralWidget(w)
|
||||
|
|
@ -335,7 +335,7 @@ class MainWindow(QMainWindow):
|
|||
|
||||
def change_keyboard_layout(self, index):
|
||||
self.settings.setValue("keymap", KEYMAPS[index][0])
|
||||
self.keymap_editor.set_keymap_override(KEYMAPS[index][1])
|
||||
KeycodeDisplay.set_keymap_override(KEYMAPS[index][1])
|
||||
|
||||
def get_theme(self):
|
||||
return self.settings.value("theme", "Dark")
|
||||
|
|
|
|||
|
|
@ -8,9 +8,8 @@ from constants import KEYCODE_BTN_RATIO
|
|||
from flowlayout import FlowLayout
|
||||
from keycodes import KEYCODES_BASIC, KEYCODES_ISO, KEYCODES_MACRO, KEYCODES_LAYERS, KEYCODES_QUANTUM, \
|
||||
KEYCODES_BACKLIGHT, KEYCODES_MEDIA, KEYCODES_SPECIAL, KEYCODES_SHIFTED, KEYCODES_USER, Keycode
|
||||
from keymaps import KEYMAPS
|
||||
from square_button import SquareButton
|
||||
from util import tr
|
||||
from util import tr, KeycodeDisplay
|
||||
|
||||
|
||||
class TabbedKeycodes(QTabWidget):
|
||||
|
|
@ -21,8 +20,8 @@ class TabbedKeycodes(QTabWidget):
|
|||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
|
||||
self.keymap_override = None
|
||||
self.target = None
|
||||
self.is_tray = False
|
||||
|
||||
self.tab_basic = QScrollArea()
|
||||
self.tab_iso = QScrollArea()
|
||||
|
|
@ -74,7 +73,7 @@ class TabbedKeycodes(QTabWidget):
|
|||
self.layer_keycode_buttons = []
|
||||
self.macro_keycode_buttons = []
|
||||
self.user_keycode_buttons = []
|
||||
self.set_keymap_override(KEYMAPS[0][1])
|
||||
KeycodeDisplay.notify_keymap_override(self)
|
||||
|
||||
def create_buttons(self, layout, keycodes, wordWrap = False):
|
||||
buttons = []
|
||||
|
|
@ -102,15 +101,14 @@ class TabbedKeycodes(QTabWidget):
|
|||
self.widgets += self.layer_keycode_buttons + self.macro_keycode_buttons + self.user_keycode_buttons
|
||||
self.relabel_buttons()
|
||||
|
||||
def set_keymap_override(self, override):
|
||||
self.keymap_override = override
|
||||
def on_keymap_override(self):
|
||||
self.relabel_buttons()
|
||||
|
||||
def relabel_buttons(self):
|
||||
for widget in self.widgets:
|
||||
qmk_id = widget.keycode.qmk_id
|
||||
if qmk_id in self.keymap_override:
|
||||
label = self.keymap_override[qmk_id]
|
||||
if qmk_id in KeycodeDisplay.keymap_override:
|
||||
label = KeycodeDisplay.keymap_override[qmk_id]
|
||||
highlight_color = QApplication.palette().color(QPalette.Link).getRgb()
|
||||
widget.setStyleSheet("QPushButton {color: rgb"+str(highlight_color)+";}")
|
||||
else:
|
||||
|
|
@ -133,4 +131,19 @@ class TabbedKeycodes(QTabWidget):
|
|||
def close_tray(cls):
|
||||
if cls.tray.target is not None:
|
||||
cls.tray.target.deselect()
|
||||
cls.tray.target = None
|
||||
cls.tray.hide()
|
||||
|
||||
def make_tray(self):
|
||||
self.is_tray = True
|
||||
TabbedKeycodes.set_tray(self)
|
||||
|
||||
self.keycode_changed.connect(self.on_tray_keycode_changed)
|
||||
self.anykey.connect(self.on_tray_anykey)
|
||||
|
||||
def on_tray_keycode_changed(self, kc):
|
||||
if self.target is not None:
|
||||
self.target.on_keycode_changed(kc)
|
||||
|
||||
def on_tray_anykey(self):
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -5,9 +5,12 @@ import time
|
|||
from logging.handlers import RotatingFileHandler
|
||||
|
||||
from PyQt5.QtCore import QCoreApplication, QStandardPaths
|
||||
from PyQt5.QtGui import QPalette
|
||||
from PyQt5.QtWidgets import QApplication
|
||||
|
||||
from hidproxy import hid
|
||||
|
||||
from keycodes import Keycode
|
||||
from keymaps import KEYMAPS
|
||||
|
||||
tr = QCoreApplication.translate
|
||||
|
||||
|
|
@ -147,3 +150,50 @@ def init_logger():
|
|||
handler = RotatingFileHandler(path, maxBytes=5 * 1024 * 1024, backupCount=5)
|
||||
handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(module)s:%(lineno)d - %(message)s"))
|
||||
logging.getLogger().addHandler(handler)
|
||||
|
||||
|
||||
class KeycodeDisplay:
|
||||
|
||||
keymap_override = KEYMAPS[0][1]
|
||||
clients = []
|
||||
|
||||
@classmethod
|
||||
def get_label(cls, code):
|
||||
""" Get label for a specific keycode """
|
||||
if cls.code_is_overriden(code):
|
||||
return cls.keymap_override[Keycode.find_outer_keycode(code).qmk_id]
|
||||
return Keycode.label(code)
|
||||
|
||||
@classmethod
|
||||
def code_is_overriden(cls, code):
|
||||
""" Check whether a country-specific keymap overrides a code """
|
||||
key = Keycode.find_outer_keycode(code)
|
||||
return key is not None and key.qmk_id in cls.keymap_override
|
||||
|
||||
@classmethod
|
||||
def display_keycode(cls, widget, code):
|
||||
text = cls.get_label(code)
|
||||
tooltip = Keycode.tooltip(code)
|
||||
mask = Keycode.is_mask(code)
|
||||
mask_text = cls.get_label(code & 0xFF)
|
||||
if mask:
|
||||
text = text.split("\n")[0]
|
||||
widget.masked = mask
|
||||
widget.setText(text)
|
||||
widget.setMaskText(mask_text)
|
||||
widget.setToolTip(tooltip)
|
||||
if cls.code_is_overriden(code):
|
||||
widget.setColor(QApplication.palette().color(QPalette.Link))
|
||||
else:
|
||||
widget.setColor(None)
|
||||
|
||||
@classmethod
|
||||
def set_keymap_override(cls, override):
|
||||
cls.keymap_override = override
|
||||
for client in cls.clients:
|
||||
client.on_keymap_override()
|
||||
|
||||
@classmethod
|
||||
def notify_keymap_override(cls, client):
|
||||
cls.clients.append(client)
|
||||
client.on_keymap_override()
|
||||
|
|
|
|||
Loading…
Reference in New Issue