From 347fa7c421e3c1397a4eb5fb22d78df205b0ec3b Mon Sep 17 00:00:00 2001 From: Ilya Zhuravlev Date: Fri, 16 Oct 2020 15:26:11 -0400 Subject: [PATCH] minor style refactoring --- src/main/python/constants.py | 3 +++ src/main/python/keyboard.py | 5 +++++ src/main/python/keyboard_container.py | 13 +++++++------ src/main/python/keycodes.py | 4 ++++ src/main/python/kle_serial.py | 9 --------- src/main/python/main_window.py | 4 ++-- src/main/python/util.py | 4 ++++ 7 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/main/python/constants.py b/src/main/python/constants.py index 1a879e8..c38f46e 100644 --- a/src/main/python/constants.py +++ b/src/main/python/constants.py @@ -3,3 +3,6 @@ KEY_HEIGHT = KEY_WIDTH KEY_SPACING = 4 WINDOW_WIDTH, WINDOW_HEIGHT = 1024, 768 + +LAYER_BTN_STYLE = "border: 1px solid black; padding: 5px" +ACTIVE_LAYER_BTN_STYLE = "border: 1px solid black; padding: 5px; background-color: black; color: white" diff --git a/src/main/python/keyboard.py b/src/main/python/keyboard.py index 9b68d68..70cc96d 100644 --- a/src/main/python/keyboard.py +++ b/src/main/python/keyboard.py @@ -14,6 +14,11 @@ class Keyboard: def __init__(self, dev): self.dev = dev + self.rowcol = set() + self.layout = dict() + self.layers = 0 + self.keys = [] + def reload(self): """ Load information about the keyboard: number of layers, physical key layout """ diff --git a/src/main/python/keyboard_container.py b/src/main/python/keyboard_container.py index 19c5ff2..2ed2c7d 100644 --- a/src/main/python/keyboard_container.py +++ b/src/main/python/keyboard_container.py @@ -5,7 +5,7 @@ from PyQt5.QtWidgets import QWidget, QHBoxLayout, QLabel, QVBoxLayout from clickable_label import ClickableLabel from keycodes import keycode_label, keycode_tooltip -from constants import KEY_WIDTH, KEY_SPACING, KEY_HEIGHT +from constants import KEY_WIDTH, KEY_SPACING, KEY_HEIGHT, LAYER_BTN_STYLE, ACTIVE_LAYER_BTN_STYLE from util import tr @@ -39,9 +39,10 @@ class KeyboardContainer(QWidget): self.selected_key = None self.selected_row = -1 self.selected_col = -1 + self.keyboard = None + self.current_layer = 0 def rebuild_layers(self): - self.layers = self.keyboard.layers self.number_layers_changed.emit() # delete old layer labels @@ -50,7 +51,7 @@ class KeyboardContainer(QWidget): self.layer_labels = [] # create new layer labels - for x in range(self.layers): + for x in range(self.keyboard.layers): label = ClickableLabel(str(x)) label.setAlignment(Qt.AlignCenter) label.clicked.connect(lambda idx=x: self.switch_layer(idx)) @@ -105,8 +106,8 @@ class KeyboardContainer(QWidget): """ Refresh text on key widgets to display data corresponding to current layer """ for label in self.layer_labels: - label.setStyleSheet("border: 1px solid black; padding: 5px") - self.layer_labels[self.current_layer].setStyleSheet("border: 1px solid black; padding: 5px; background-color: black; color: white") + label.setStyleSheet(LAYER_BTN_STYLE) + self.layer_labels[self.current_layer].setStyleSheet(ACTIVE_LAYER_BTN_STYLE) for (row, col), widgets in self.rowcol.items(): code = self.keyboard.layout[(self.current_layer, row, col)] @@ -142,4 +143,4 @@ class KeyboardContainer(QWidget): self.selected_row = row self.selected_col = col break - self.refresh_layer_display() \ No newline at end of file + self.refresh_layer_display() diff --git a/src/main/python/keycodes.py b/src/main/python/keycodes.py index 004594f..9d206ba 100644 --- a/src/main/python/keycodes.py +++ b/src/main/python/keycodes.py @@ -211,18 +211,21 @@ KEYCODES = KEYCODES_BASIC + KEYCODES_ISO + KEYCODES_MACRO + KEYCODES_LAYERS + KE K = None + def find_keycode(code): for keycode in KEYCODES: if keycode.code == code: return keycode return None + def keycode_label(code): keycode = find_keycode(code) if keycode is None: return "0x{:X}".format(code) return keycode.label + def keycode_tooltip(code): keycode = find_keycode(code) if keycode is None: @@ -232,6 +235,7 @@ def keycode_tooltip(code): tooltip = "{}: {}".format(tooltip, keycode.tooltip) return tooltip + def recreate_layer_keycodes(layers): """ Generates layer keycodes based on number of layers a keyboard provides """ diff --git a/src/main/python/kle_serial.py b/src/main/python/kle_serial.py index 7511f22..4fddc60 100644 --- a/src/main/python/kle_serial.py +++ b/src/main/python/kle_serial.py @@ -193,12 +193,3 @@ class Serial: # TODO: add tests - - -# serial = Serial() -# data = open("plain60.json", "r").read() -# data = json.loads(data) -# kb = serial.deserialize(data["layouts"]["keymap"]) - -# for key in kb.keys: -# print("{} {}x{}+{}x{}".format(key.labels, key.x, key.y, key.width, key.height)) diff --git a/src/main/python/main_window.py b/src/main/python/main_window.py index 7a979af..a84a79c 100644 --- a/src/main/python/main_window.py +++ b/src/main/python/main_window.py @@ -58,8 +58,8 @@ class MainWindow(QWidget): self.keyboard_container.rebuild(keyboard) def on_number_layers_changed(self): - recreate_layer_keycodes(self.keyboard_container.layers) + recreate_layer_keycodes(self.keyboard_container.keyboard.layers) self.tabbed_keycodes.recreate_layer_keycode_buttons() def on_keycode_changed(self, code): - self.keyboard_container.set_key(code) \ No newline at end of file + self.keyboard_container.set_key(code) diff --git a/src/main/python/util.py b/src/main/python/util.py index 57e2168..7b2cd51 100644 --- a/src/main/python/util.py +++ b/src/main/python/util.py @@ -16,6 +16,7 @@ VIAL_SERIAL_NUMBER_MAGIC = "vial:f64c2b3c" MSG_LEN = 32 + def hid_send(dev, msg): if len(msg) > MSG_LEN: raise RuntimeError("message must be less than 32 bytes") @@ -26,10 +27,12 @@ def hid_send(dev, msg): return bytes(dev.read(MSG_LEN)) + def is_rawhid(dev): # TODO: this is only broken on linux, other platforms should be able to check usage_page return dev["interface_number"] == 1 + def find_vial_keyboards(): filtered = [] for dev in hid.enumerate(): @@ -37,6 +40,7 @@ def find_vial_keyboards(): filtered.append(dev) return filtered + def open_device(desc): # TODO: error handling here dev = hid.device()