minor style refactoring
parent
92a4d6e3f4
commit
347fa7c421
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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 """
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
self.refresh_layer_display()
|
||||
|
|
|
|||
|
|
@ -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 """
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
self.keyboard_container.set_key(code)
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Reference in New Issue