otg keymap

This commit is contained in:
Devaev Maxim 2019-09-26 10:26:21 +03:00
parent cbebefc6c9
commit 31c17bb583
6 changed files with 470 additions and 194 deletions

View File

@ -33,9 +33,11 @@ import mako.template
# ===== # =====
@dataclasses.dataclass(frozen=True) @dataclasses.dataclass(frozen=True)
class _KeyMapping: class _KeyMapping:
serial_hid_code: int
serial_hid_key: str
web_key: str web_key: str
serial_code: int
arduino_key: str
otg_code: int
otg_is_modifier: bool
def _read_keymap_in(path: str) -> List[_KeyMapping]: def _read_keymap_in(path: str) -> List[_KeyMapping]:
@ -45,11 +47,13 @@ def _read_keymap_in(path: str) -> List[_KeyMapping]:
line = line.strip() line = line.strip()
if len(line) > 0 and not line.startswith("#"): if len(line) > 0 and not line.startswith("#"):
parts = list(map(str.strip, line.split())) parts = list(map(str.strip, line.split()))
if len(parts) >= 3: if len(parts) >= 5:
keymap.append(_KeyMapping( keymap.append(_KeyMapping(
serial_hid_code=int(parts[0]), web_key=parts[0],
serial_hid_key=parts[1], serial_code=int(parts[1]),
web_key=parts[2], arduino_key=parts[2],
otg_code=int(parts[3], 16),
otg_is_modifier=(parts[4].lower() == "m"),
)) ))
return keymap return keymap

View File

@ -29,8 +29,8 @@
<%! import operator %> <%! import operator %>
INLINE KeyboardKeycode keymap(uint8_t code) { INLINE KeyboardKeycode keymap(uint8_t code) {
switch(code) { switch(code) {
% for km in sorted(keymap, key=operator.attrgetter("serial_hid_key")): % for km in sorted(keymap, key=operator.attrgetter("arduino_key")):
case ${km.serial_hid_code}: return ${km.serial_hid_key}; case ${km.serial_code}: return ${km.arduino_key};
% endfor % endfor
default: return KEY_ERROR_UNDEFINED; default: return KEY_ERROR_UNDEFINED;
} }

181
keymap.in
View File

@ -20,98 +20,99 @@
# ========================================================================== # # ========================================================================== #
# https://github.com/NicoHood/HID/blob/master/src/HID-APIs/ImprovedKeylayouts.h
# https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code # https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code
# https://github.com/NicoHood/HID/blob/master/src/HID-APIs/ImprovedKeylayouts.h
# https://gist.github.com/MightyPork/6da26e382a7ad91b5496ee55fdc73db2
# ---------------------------------- # -----------------------------------------------------------------------------------
# KVMD | Arduino HID | JS # Web | Serial code | Arduino key | OTG code + modifier flag
# ---------------------------------- # -----------------------------------------------------------------------------------
1 KEY_A KeyA KeyA 1 KEY_A 0x04 -
2 KEY_B KeyB KeyB 2 KEY_B 0x05 -
3 KEY_C KeyC KeyC 3 KEY_C 0x06 -
4 KEY_D KeyD KeyD 4 KEY_D 0x07 -
5 KEY_E KeyE KeyE 5 KEY_E 0x08 -
6 KEY_F KeyF KeyF 6 KEY_F 0x09 -
7 KEY_G KeyG KeyG 7 KEY_G 0x0a -
8 KEY_H KeyH KeyH 8 KEY_H 0x0b -
9 KEY_I KeyI KeyI 9 KEY_I 0x0c -
10 KEY_J KeyJ KeyJ 10 KEY_J 0x0d -
11 KEY_K KeyK KeyK 11 KEY_K 0x0e -
12 KEY_L KeyL KeyL 12 KEY_L 0x0f -
13 KEY_M KeyM KeyM 13 KEY_M 0x10 -
14 KEY_N KeyN KeyN 14 KEY_N 0x11 -
15 KEY_O KeyO KeyO 15 KEY_O 0x12 -
16 KEY_P KeyP KeyP 16 KEY_P 0x13 -
17 KEY_Q KeyQ KeyQ 17 KEY_Q 0x14 -
18 KEY_R KeyR KeyR 18 KEY_R 0x15 -
19 KEY_S KeyS KeyS 19 KEY_S 0x16 -
20 KEY_T KeyT KeyT 20 KEY_T 0x17 -
21 KEY_U KeyU KeyU 21 KEY_U 0x18 -
22 KEY_V KeyV KeyV 22 KEY_V 0x19 -
23 KEY_W KeyW KeyW 23 KEY_W 0x1a -
24 KEY_X KeyX KeyX 24 KEY_X 0x1b -
25 KEY_Y KeyY KeyY 25 KEY_Y 0x1c -
26 KEY_Z KeyZ KeyZ 26 KEY_Z 0x1d -
27 KEY_1 Digit1 Digit1 27 KEY_1 0x1e -
28 KEY_2 Digit2 Digit2 28 KEY_2 0x1f -
29 KEY_3 Digit3 Digit3 29 KEY_3 0x20 -
30 KEY_4 Digit4 Digit4 30 KEY_4 0x21 -
31 KEY_5 Digit5 Digit5 31 KEY_5 0x22 -
32 KEY_6 Digit6 Digit6 32 KEY_6 0x23 -
33 KEY_7 Digit7 Digit7 33 KEY_7 0x24 -
34 KEY_8 Digit8 Digit8 34 KEY_8 0x25 -
35 KEY_9 Digit9 Digit9 35 KEY_9 0x26 -
36 KEY_0 Digit0 Digit0 36 KEY_0 0x27 -
37 KEY_ENTER Enter Enter 37 KEY_ENTER 0x28 -
38 KEY_ESC Escape Escape 38 KEY_ESC 0x29 -
39 KEY_BACKSPACE Backspace Backspace 39 KEY_BACKSPACE 0x2a -
40 KEY_TAB Tab Tab 40 KEY_TAB 0x2b -
41 KEY_SPACE Space Space 41 KEY_SPACE 0x2c -
42 KEY_MINUS Minus Minus 42 KEY_MINUS 0x2d -
43 KEY_EQUAL Equal Equal 43 KEY_EQUAL 0x2e -
44 KEY_LEFT_BRACE BracketLeft BracketLeft 44 KEY_LEFT_BRACE 0x2f -
45 KEY_RIGHT_BRACE BracketRight BracketRight 45 KEY_RIGHT_BRACE 0x30 -
46 KEY_BACKSLASH Backslash Backslash 46 KEY_BACKSLASH 0x31 -
47 KEY_SEMICOLON Semicolon Semicolon 47 KEY_SEMICOLON 0x33 -
48 KEY_QUOTE Quote Quote 48 KEY_QUOTE 0x34 -
49 KEY_TILDE Backquote Backquote 49 KEY_TILDE 0x35 -
50 KEY_COMMA Comma Comma 50 KEY_COMMA 0x36 -
51 KEY_PERIOD Period Period 51 KEY_PERIOD 0x37 -
52 KEY_SLASH Slash Slash 52 KEY_SLASH 0x38 -
53 KEY_CAPS_LOCK CapsLock CapsLock 53 KEY_CAPS_LOCK 0x39 -
54 KEY_F1 F1 F1 54 KEY_F1 0x3a -
55 KEY_F2 F2 F2 55 KEY_F2 0x3b -
56 KEY_F3 F3 F3 56 KEY_F3 0x3c -
57 KEY_F4 F4 F4 57 KEY_F4 0x3d -
58 KEY_F5 F5 F5 58 KEY_F5 0x3e -
59 KEY_F6 F6 F6 59 KEY_F6 0x3f -
60 KEY_F7 F7 F7 60 KEY_F7 0x40 -
61 KEY_F8 F8 F8 61 KEY_F8 0x41 -
62 KEY_F9 F9 F9 62 KEY_F9 0x42 -
63 KEY_F10 F10 F10 63 KEY_F10 0x43 -
64 KEY_F11 F11 F11 64 KEY_F11 0x44 -
65 KEY_F12 F12 F12 65 KEY_F12 0x45 -
66 KEY_PRINT PrintScreen PrintScreen 66 KEY_PRINT 0x46 -
67 KEY_INSERT Insert Insert 67 KEY_INSERT 0x49 -
68 KEY_HOME Home Home 68 KEY_HOME 0x4a -
69 KEY_PAGE_UP PageUp PageUp 69 KEY_PAGE_UP 0x4b -
70 KEY_DELETE Delete Delete 70 KEY_DELETE 0x4c -
71 KEY_END End End 71 KEY_END 0x4d -
72 KEY_PAGE_DOWN PageDown PageDown 72 KEY_PAGE_DOWN 0x4e -
73 KEY_RIGHT_ARROW ArrowRight ArrowRight 73 KEY_RIGHT_ARROW 0x4f -
74 KEY_LEFT_ARROW ArrowLeft ArrowLeft 74 KEY_LEFT_ARROW 0x50 -
75 KEY_DOWN_ARROW ArrowDown ArrowDown 75 KEY_DOWN_ARROW 0x51 -
76 KEY_UP_ARROW ArrowUp ArrowUp 76 KEY_UP_ARROW 0x52 -
77 KEY_LEFT_CTRL ControlLeft ControlLeft 77 KEY_LEFT_CTRL 0x01 m
78 KEY_LEFT_SHIFT ShiftLeft ShiftLeft 78 KEY_LEFT_SHIFT 0x02 m
79 KEY_LEFT_ALT AltLeft AltLeft 79 KEY_LEFT_ALT 0x04 m
80 KEY_LEFT_GUI MetaLeft MetaLeft 80 KEY_LEFT_GUI 0x08 m
81 KEY_RIGHT_CTRL ControlRight ControlRight 81 KEY_RIGHT_CTRL 0x10 m
82 KEY_RIGHT_SHIFT ShiftRight ShiftRight 82 KEY_RIGHT_SHIFT 0x20 m
83 KEY_RIGHT_ALT AltRight AltRight 83 KEY_RIGHT_ALT 0x40 m
84 KEY_RIGHT_GUI MetaRight MetaRight 84 KEY_RIGHT_GUI 0x80 m
85 KEY_PAUSE Pause Pause 85 KEY_PAUSE 0x48 -
86 KEY_SCROLL_LOCK ScrollLock ScrollLock 86 KEY_SCROLL_LOCK 0x47 -
# KEY_NON_US_NUM # KEY_NON_US_NUM
# KEY_NUM_LOCK # KEY_NUM_LOCK
# KEYPAD_DIVIDE # KEYPAD_DIVIDE

View File

@ -31,97 +31,362 @@ class SerialKey:
code: int code: int
@dataclasses.dataclass(frozen=True)
class OtgKey:
code: int
is_modifier: bool
@dataclasses.dataclass(frozen=True) @dataclasses.dataclass(frozen=True)
class Key: class Key:
serial: SerialKey serial: SerialKey
otg: OtgKey
# ===== # =====
KEYMAP: Dict[str, Key] = { KEYMAP: Dict[str, Key] = {
"AltLeft": Key(serial=SerialKey(code=79)), "KeyA": Key(
"AltRight": Key(serial=SerialKey(code=83)), serial=SerialKey(code=1),
"ArrowDown": Key(serial=SerialKey(code=75)), otg=OtgKey(code=4, is_modifier=False),
"ArrowLeft": Key(serial=SerialKey(code=74)), ),
"ArrowRight": Key(serial=SerialKey(code=73)), "KeyB": Key(
"ArrowUp": Key(serial=SerialKey(code=76)), serial=SerialKey(code=2),
"Backquote": Key(serial=SerialKey(code=49)), otg=OtgKey(code=5, is_modifier=False),
"Backslash": Key(serial=SerialKey(code=46)), ),
"Backspace": Key(serial=SerialKey(code=39)), "KeyC": Key(
"BracketLeft": Key(serial=SerialKey(code=44)), serial=SerialKey(code=3),
"BracketRight": Key(serial=SerialKey(code=45)), otg=OtgKey(code=6, is_modifier=False),
"CapsLock": Key(serial=SerialKey(code=53)), ),
"Comma": Key(serial=SerialKey(code=50)), "KeyD": Key(
"ControlLeft": Key(serial=SerialKey(code=77)), serial=SerialKey(code=4),
"ControlRight": Key(serial=SerialKey(code=81)), otg=OtgKey(code=7, is_modifier=False),
"Delete": Key(serial=SerialKey(code=70)), ),
"Digit0": Key(serial=SerialKey(code=36)), "KeyE": Key(
"Digit1": Key(serial=SerialKey(code=27)), serial=SerialKey(code=5),
"Digit2": Key(serial=SerialKey(code=28)), otg=OtgKey(code=8, is_modifier=False),
"Digit3": Key(serial=SerialKey(code=29)), ),
"Digit4": Key(serial=SerialKey(code=30)), "KeyF": Key(
"Digit5": Key(serial=SerialKey(code=31)), serial=SerialKey(code=6),
"Digit6": Key(serial=SerialKey(code=32)), otg=OtgKey(code=9, is_modifier=False),
"Digit7": Key(serial=SerialKey(code=33)), ),
"Digit8": Key(serial=SerialKey(code=34)), "KeyG": Key(
"Digit9": Key(serial=SerialKey(code=35)), serial=SerialKey(code=7),
"End": Key(serial=SerialKey(code=71)), otg=OtgKey(code=10, is_modifier=False),
"Enter": Key(serial=SerialKey(code=37)), ),
"Equal": Key(serial=SerialKey(code=43)), "KeyH": Key(
"Escape": Key(serial=SerialKey(code=38)), serial=SerialKey(code=8),
"F1": Key(serial=SerialKey(code=54)), otg=OtgKey(code=11, is_modifier=False),
"F10": Key(serial=SerialKey(code=63)), ),
"F11": Key(serial=SerialKey(code=64)), "KeyI": Key(
"F12": Key(serial=SerialKey(code=65)), serial=SerialKey(code=9),
"F2": Key(serial=SerialKey(code=55)), otg=OtgKey(code=12, is_modifier=False),
"F3": Key(serial=SerialKey(code=56)), ),
"F4": Key(serial=SerialKey(code=57)), "KeyJ": Key(
"F5": Key(serial=SerialKey(code=58)), serial=SerialKey(code=10),
"F6": Key(serial=SerialKey(code=59)), otg=OtgKey(code=13, is_modifier=False),
"F7": Key(serial=SerialKey(code=60)), ),
"F8": Key(serial=SerialKey(code=61)), "KeyK": Key(
"F9": Key(serial=SerialKey(code=62)), serial=SerialKey(code=11),
"Home": Key(serial=SerialKey(code=68)), otg=OtgKey(code=14, is_modifier=False),
"Insert": Key(serial=SerialKey(code=67)), ),
"KeyA": Key(serial=SerialKey(code=1)), "KeyL": Key(
"KeyB": Key(serial=SerialKey(code=2)), serial=SerialKey(code=12),
"KeyC": Key(serial=SerialKey(code=3)), otg=OtgKey(code=15, is_modifier=False),
"KeyD": Key(serial=SerialKey(code=4)), ),
"KeyE": Key(serial=SerialKey(code=5)), "KeyM": Key(
"KeyF": Key(serial=SerialKey(code=6)), serial=SerialKey(code=13),
"KeyG": Key(serial=SerialKey(code=7)), otg=OtgKey(code=16, is_modifier=False),
"KeyH": Key(serial=SerialKey(code=8)), ),
"KeyI": Key(serial=SerialKey(code=9)), "KeyN": Key(
"KeyJ": Key(serial=SerialKey(code=10)), serial=SerialKey(code=14),
"KeyK": Key(serial=SerialKey(code=11)), otg=OtgKey(code=17, is_modifier=False),
"KeyL": Key(serial=SerialKey(code=12)), ),
"KeyM": Key(serial=SerialKey(code=13)), "KeyO": Key(
"KeyN": Key(serial=SerialKey(code=14)), serial=SerialKey(code=15),
"KeyO": Key(serial=SerialKey(code=15)), otg=OtgKey(code=18, is_modifier=False),
"KeyP": Key(serial=SerialKey(code=16)), ),
"KeyQ": Key(serial=SerialKey(code=17)), "KeyP": Key(
"KeyR": Key(serial=SerialKey(code=18)), serial=SerialKey(code=16),
"KeyS": Key(serial=SerialKey(code=19)), otg=OtgKey(code=19, is_modifier=False),
"KeyT": Key(serial=SerialKey(code=20)), ),
"KeyU": Key(serial=SerialKey(code=21)), "KeyQ": Key(
"KeyV": Key(serial=SerialKey(code=22)), serial=SerialKey(code=17),
"KeyW": Key(serial=SerialKey(code=23)), otg=OtgKey(code=20, is_modifier=False),
"KeyX": Key(serial=SerialKey(code=24)), ),
"KeyY": Key(serial=SerialKey(code=25)), "KeyR": Key(
"KeyZ": Key(serial=SerialKey(code=26)), serial=SerialKey(code=18),
"MetaLeft": Key(serial=SerialKey(code=80)), otg=OtgKey(code=21, is_modifier=False),
"MetaRight": Key(serial=SerialKey(code=84)), ),
"Minus": Key(serial=SerialKey(code=42)), "KeyS": Key(
"PageDown": Key(serial=SerialKey(code=72)), serial=SerialKey(code=19),
"PageUp": Key(serial=SerialKey(code=69)), otg=OtgKey(code=22, is_modifier=False),
"Pause": Key(serial=SerialKey(code=85)), ),
"Period": Key(serial=SerialKey(code=51)), "KeyT": Key(
"PrintScreen": Key(serial=SerialKey(code=66)), serial=SerialKey(code=20),
"Quote": Key(serial=SerialKey(code=48)), otg=OtgKey(code=23, is_modifier=False),
"ScrollLock": Key(serial=SerialKey(code=86)), ),
"Semicolon": Key(serial=SerialKey(code=47)), "KeyU": Key(
"ShiftLeft": Key(serial=SerialKey(code=78)), serial=SerialKey(code=21),
"ShiftRight": Key(serial=SerialKey(code=82)), otg=OtgKey(code=24, is_modifier=False),
"Slash": Key(serial=SerialKey(code=52)), ),
"Space": Key(serial=SerialKey(code=41)), "KeyV": Key(
"Tab": Key(serial=SerialKey(code=40)), serial=SerialKey(code=22),
otg=OtgKey(code=25, is_modifier=False),
),
"KeyW": Key(
serial=SerialKey(code=23),
otg=OtgKey(code=26, is_modifier=False),
),
"KeyX": Key(
serial=SerialKey(code=24),
otg=OtgKey(code=27, is_modifier=False),
),
"KeyY": Key(
serial=SerialKey(code=25),
otg=OtgKey(code=28, is_modifier=False),
),
"KeyZ": Key(
serial=SerialKey(code=26),
otg=OtgKey(code=29, is_modifier=False),
),
"Digit1": Key(
serial=SerialKey(code=27),
otg=OtgKey(code=30, is_modifier=False),
),
"Digit2": Key(
serial=SerialKey(code=28),
otg=OtgKey(code=31, is_modifier=False),
),
"Digit3": Key(
serial=SerialKey(code=29),
otg=OtgKey(code=32, is_modifier=False),
),
"Digit4": Key(
serial=SerialKey(code=30),
otg=OtgKey(code=33, is_modifier=False),
),
"Digit5": Key(
serial=SerialKey(code=31),
otg=OtgKey(code=34, is_modifier=False),
),
"Digit6": Key(
serial=SerialKey(code=32),
otg=OtgKey(code=35, is_modifier=False),
),
"Digit7": Key(
serial=SerialKey(code=33),
otg=OtgKey(code=36, is_modifier=False),
),
"Digit8": Key(
serial=SerialKey(code=34),
otg=OtgKey(code=37, is_modifier=False),
),
"Digit9": Key(
serial=SerialKey(code=35),
otg=OtgKey(code=38, is_modifier=False),
),
"Digit0": Key(
serial=SerialKey(code=36),
otg=OtgKey(code=39, is_modifier=False),
),
"Enter": Key(
serial=SerialKey(code=37),
otg=OtgKey(code=40, is_modifier=False),
),
"Escape": Key(
serial=SerialKey(code=38),
otg=OtgKey(code=41, is_modifier=False),
),
"Backspace": Key(
serial=SerialKey(code=39),
otg=OtgKey(code=42, is_modifier=False),
),
"Tab": Key(
serial=SerialKey(code=40),
otg=OtgKey(code=43, is_modifier=False),
),
"Space": Key(
serial=SerialKey(code=41),
otg=OtgKey(code=44, is_modifier=False),
),
"Minus": Key(
serial=SerialKey(code=42),
otg=OtgKey(code=45, is_modifier=False),
),
"Equal": Key(
serial=SerialKey(code=43),
otg=OtgKey(code=46, is_modifier=False),
),
"BracketLeft": Key(
serial=SerialKey(code=44),
otg=OtgKey(code=47, is_modifier=False),
),
"BracketRight": Key(
serial=SerialKey(code=45),
otg=OtgKey(code=48, is_modifier=False),
),
"Backslash": Key(
serial=SerialKey(code=46),
otg=OtgKey(code=49, is_modifier=False),
),
"Semicolon": Key(
serial=SerialKey(code=47),
otg=OtgKey(code=51, is_modifier=False),
),
"Quote": Key(
serial=SerialKey(code=48),
otg=OtgKey(code=52, is_modifier=False),
),
"Backquote": Key(
serial=SerialKey(code=49),
otg=OtgKey(code=53, is_modifier=False),
),
"Comma": Key(
serial=SerialKey(code=50),
otg=OtgKey(code=54, is_modifier=False),
),
"Period": Key(
serial=SerialKey(code=51),
otg=OtgKey(code=55, is_modifier=False),
),
"Slash": Key(
serial=SerialKey(code=52),
otg=OtgKey(code=56, is_modifier=False),
),
"CapsLock": Key(
serial=SerialKey(code=53),
otg=OtgKey(code=57, is_modifier=False),
),
"F1": Key(
serial=SerialKey(code=54),
otg=OtgKey(code=58, is_modifier=False),
),
"F2": Key(
serial=SerialKey(code=55),
otg=OtgKey(code=59, is_modifier=False),
),
"F3": Key(
serial=SerialKey(code=56),
otg=OtgKey(code=60, is_modifier=False),
),
"F4": Key(
serial=SerialKey(code=57),
otg=OtgKey(code=61, is_modifier=False),
),
"F5": Key(
serial=SerialKey(code=58),
otg=OtgKey(code=62, is_modifier=False),
),
"F6": Key(
serial=SerialKey(code=59),
otg=OtgKey(code=63, is_modifier=False),
),
"F7": Key(
serial=SerialKey(code=60),
otg=OtgKey(code=64, is_modifier=False),
),
"F8": Key(
serial=SerialKey(code=61),
otg=OtgKey(code=65, is_modifier=False),
),
"F9": Key(
serial=SerialKey(code=62),
otg=OtgKey(code=66, is_modifier=False),
),
"F10": Key(
serial=SerialKey(code=63),
otg=OtgKey(code=67, is_modifier=False),
),
"F11": Key(
serial=SerialKey(code=64),
otg=OtgKey(code=68, is_modifier=False),
),
"F12": Key(
serial=SerialKey(code=65),
otg=OtgKey(code=69, is_modifier=False),
),
"PrintScreen": Key(
serial=SerialKey(code=66),
otg=OtgKey(code=70, is_modifier=False),
),
"Insert": Key(
serial=SerialKey(code=67),
otg=OtgKey(code=73, is_modifier=False),
),
"Home": Key(
serial=SerialKey(code=68),
otg=OtgKey(code=74, is_modifier=False),
),
"PageUp": Key(
serial=SerialKey(code=69),
otg=OtgKey(code=75, is_modifier=False),
),
"Delete": Key(
serial=SerialKey(code=70),
otg=OtgKey(code=76, is_modifier=False),
),
"End": Key(
serial=SerialKey(code=71),
otg=OtgKey(code=77, is_modifier=False),
),
"PageDown": Key(
serial=SerialKey(code=72),
otg=OtgKey(code=78, is_modifier=False),
),
"ArrowRight": Key(
serial=SerialKey(code=73),
otg=OtgKey(code=79, is_modifier=False),
),
"ArrowLeft": Key(
serial=SerialKey(code=74),
otg=OtgKey(code=80, is_modifier=False),
),
"ArrowDown": Key(
serial=SerialKey(code=75),
otg=OtgKey(code=81, is_modifier=False),
),
"ArrowUp": Key(
serial=SerialKey(code=76),
otg=OtgKey(code=82, is_modifier=False),
),
"ControlLeft": Key(
serial=SerialKey(code=77),
otg=OtgKey(code=1, is_modifier=True),
),
"ShiftLeft": Key(
serial=SerialKey(code=78),
otg=OtgKey(code=2, is_modifier=True),
),
"AltLeft": Key(
serial=SerialKey(code=79),
otg=OtgKey(code=4, is_modifier=True),
),
"MetaLeft": Key(
serial=SerialKey(code=80),
otg=OtgKey(code=8, is_modifier=True),
),
"ControlRight": Key(
serial=SerialKey(code=81),
otg=OtgKey(code=16, is_modifier=True),
),
"ShiftRight": Key(
serial=SerialKey(code=82),
otg=OtgKey(code=32, is_modifier=True),
),
"AltRight": Key(
serial=SerialKey(code=83),
otg=OtgKey(code=64, is_modifier=True),
),
"MetaRight": Key(
serial=SerialKey(code=84),
otg=OtgKey(code=128, is_modifier=True),
),
"Pause": Key(
serial=SerialKey(code=85),
otg=OtgKey(code=72, is_modifier=False),
),
"ScrollLock": Key(
serial=SerialKey(code=86),
otg=OtgKey(code=71, is_modifier=False),
),
} }

View File

@ -31,14 +31,24 @@ class SerialKey:
code: int code: int
@dataclasses.dataclass(frozen=True)
class OtgKey:
code: int
is_modifier: bool
@dataclasses.dataclass(frozen=True) @dataclasses.dataclass(frozen=True)
class Key: class Key:
serial: SerialKey serial: SerialKey
otg: OtgKey
<%! import operator %> <%! import operator %>
# ===== # =====
KEYMAP: Dict[str, Key] = { KEYMAP: Dict[str, Key] = {
% for km in sorted(keymap, key=operator.attrgetter("web_key")): % for km in sorted(keymap, key=operator.attrgetter("serial_code")):
"${km.web_key}": Key(serial=SerialKey(code=${km.serial_hid_code})), "${km.web_key}": Key(
serial=SerialKey(code=${km.serial_code}),
otg=OtgKey(code=${km.otg_code}, is_modifier=${km.otg_is_modifier}),
),
% endfor % endfor
} }

View File

@ -1,15 +1,11 @@
_MassStorageDeviceInfo.manufacturer
_MassStorageDeviceInfo.product
_MassStorageDeviceInfo.real
_MassStorageDeviceInfo.hw
_MassStorageDeviceInfo.image
IpmiServer.handle_raw_request IpmiServer.handle_raw_request
fake_rpi.RPi.GPIO fake_rpi.RPi.GPIO
_KeyMapping.serial_hid_code
_KeyMapping.serial_hid_key
_KeyMapping.web_key _KeyMapping.web_key
_KeyMapping.serial_code
_KeyMapping.arduino_key
_KeyMapping.otg_code
_KeyMapping.otg_is_modifier
_ScriptWriter.get_args _ScriptWriter.get_args