relay: add more keycodes

This commit is contained in:
Danny Robson 2019-02-23 13:44:07 +11:00
parent ad8f8b198a
commit f5fe04735b

139
relay.py
View File

@ -6,6 +6,11 @@ import os
import sys import sys
scan_to_hid = { scan_to_hid = {
# Reserved: 0
# ErrorRollOver: 1
# POSTFail: 2
# ErrorUndefined: 3
evdev.ecodes.KEY_A: 0x04, evdev.ecodes.KEY_A: 0x04,
evdev.ecodes.KEY_B: 0x05, evdev.ecodes.KEY_B: 0x05,
evdev.ecodes.KEY_C: 0x06, evdev.ecodes.KEY_C: 0x06,
@ -23,8 +28,8 @@ scan_to_hid = {
evdev.ecodes.KEY_O: 0x12, evdev.ecodes.KEY_O: 0x12,
evdev.ecodes.KEY_P: 0x13, evdev.ecodes.KEY_P: 0x13,
evdev.ecodes.KEY_Q: 0x14, evdev.ecodes.KEY_Q: 0x14,
evdev.ecodes.KEY_R: 0x16, evdev.ecodes.KEY_R: 0x15,
evdev.ecodes.KEY_S: 0x15, evdev.ecodes.KEY_S: 0x16,
evdev.ecodes.KEY_T: 0x17, evdev.ecodes.KEY_T: 0x17,
evdev.ecodes.KEY_U: 0x18, evdev.ecodes.KEY_U: 0x18,
evdev.ecodes.KEY_V: 0x19, evdev.ecodes.KEY_V: 0x19,
@ -32,8 +37,134 @@ scan_to_hid = {
evdev.ecodes.KEY_X: 0x1b, evdev.ecodes.KEY_X: 0x1b,
evdev.ecodes.KEY_Y: 0x1c, evdev.ecodes.KEY_Y: 0x1c,
evdev.ecodes.KEY_Z: 0x1d, evdev.ecodes.KEY_Z: 0x1d,
evdev.ecodes.KEY_1: 0x1e,
evdev.ecodes.KEY_2: 0x1f,
evdev.ecodes.KEY_3: 0x20,
evdev.ecodes.KEY_4: 0x21,
evdev.ecodes.KEY_5: 0x22,
evdev.ecodes.KEY_6: 0x23,
evdev.ecodes.KEY_7: 0x24,
evdev.ecodes.KEY_8: 0x25,
evdev.ecodes.KEY_9: 0x26,
evdev.ecodes.KEY_0: 0x27,
evdev.ecodes.KEY_ENTER: 0x28,
evdev.ecodes.KEY_ESC: 0x29,
evdev.ecodes.KEY_BACKSPACE: 0x2a,
evdev.ecodes.KEY_TAB: 0x2b,
evdev.ecodes.KEY_SPACE: 0x2c,
evdev.ecodes.KEY_MINUS: 0x2d,
evdev.ecodes.KEY_EQUAL: 0x2e,
evdev.ecodes.KEY_LEFTBRACE: 0x2f,
evdev.ecodes.KEY_RIGHTBRACE: 0x30,
evdev.ecodes.KEY_SLASH: 0x31,
# Non-US # and ~: 0x32,
evdev.ecodes.KEY_SEMICOLON: 0x33,
# Quote
evdev.ecodes.KEY_GRAVE: 0x35,
evdev.ecodes.KEY_COMMA: 0x36,
evdev.ecodes.KEY_STOP: 0x37,
evdev.ecodes.KEY_QUESTION: 0x38,
evdev.ecodes.KEY_CAPSLOCK: 0x39,
evdev.ecodes.KEY_F1: 0x3a,
evdev.ecodes.KEY_F2: 0x3b,
evdev.ecodes.KEY_F3: 0x3c,
evdev.ecodes.KEY_F4: 0x3d,
evdev.ecodes.KEY_F5: 0x3e,
evdev.ecodes.KEY_F6: 0x3f,
evdev.ecodes.KEY_F7: 0x40,
evdev.ecodes.KEY_F8: 0x41,
evdev.ecodes.KEY_F9: 0x42,
evdev.ecodes.KEY_F10: 0x43,
evdev.ecodes.KEY_F11: 0x44,
evdev.ecodes.KEY_F12: 0x45,
evdev.ecodes.KEY_PRINT: 0x46,
evdev.ecodes.KEY_SCROLLLOCK: 0x47,
evdev.ecodes.KEY_PAUSE: 0x48,
evdev.ecodes.KEY_INSERT: 0x49,
evdev.ecodes.KEY_HOME: 0x4a,
evdev.ecodes.KEY_PAGEUP: 0x4b,
# delete forward: 0x4c,
evdev.ecodes.KEY_END: 0x4d,
evdev.ecodes.KEY_PAGEDOWN: 0x4e,
evdev.ecodes.KEY_RIGHT: 0x4f,
evdev.ecodes.KEY_LEFT: 0x50,
evdev.ecodes.KEY_DOWN: 0x51,
evdev.ecodes.KEY_UP: 0x52,
evdev.ecodes.KEY_NUMLOCK: 0x53,
evdev.ecodes.KEY_KPSLASH: 0x54,
evdev.ecodes.KEY_KPASTERISK: 0x55,
evdev.ecodes.KEY_KPMINUS: 0x56,
evdev.ecodes.KEY_KPPLUS: 0x57,
evdev.ecodes.KEY_KPENTER: 0x58,
evdev.ecodes.KEY_KP1: 0x59,
evdev.ecodes.KEY_KP2: 0x5a,
evdev.ecodes.KEY_KP3: 0x5b,
evdev.ecodes.KEY_KP4: 0x5c,
evdev.ecodes.KEY_KP5: 0x5d,
evdev.ecodes.KEY_KP6: 0x5e,
evdev.ecodes.KEY_KP7: 0x5f,
evdev.ecodes.KEY_KP8: 0x60,
evdev.ecodes.KEY_KP9: 0x61,
evdev.ecodes.KEY_KP0: 0x62,
evdev.ecodes.KEY_KPDOT: 0x63,
# non-us / and |: 0x64,
evdev.ecodes.KEY_APPSELECT: 0x65,
evdev.ecodes.KEY_POWER: 0x66,
evdev.ecodes.KEY_KPEQUAL: 0x67,
evdev.ecodes.KEY_F13: 0x68,
evdev.ecodes.KEY_F14: 0x69,
evdev.ecodes.KEY_F15: 0x6a,
evdev.ecodes.KEY_F16: 0x6b,
evdev.ecodes.KEY_F17: 0x6c,
evdev.ecodes.KEY_F18: 0x6d,
evdev.ecodes.KEY_F19: 0x6e,
evdev.ecodes.KEY_F20: 0x6f,
evdev.ecodes.KEY_F21: 0x70,
evdev.ecodes.KEY_F22: 0x71,
evdev.ecodes.KEY_F23: 0x72,
evdev.ecodes.KEY_F24: 0x73,
# execute
evdev.ecodes.KEY_HELP: 0x75,
evdev.ecodes.KEY_MENU: 0x76,
evdev.ecodes.KEY_SELECT: 0x77,
evdev.ecodes.KEY_STOP: 0x78,
evdev.ecodes.KEY_AGAIN: 0x79,
evdev.ecodes.KEY_UNDO: 0x7a,
evdev.ecodes.KEY_CUT: 0x7b,
evdev.ecodes.KEY_COPY: 0x7c,
evdev.ecodes.KEY_PASTE: 0x7d,
evdev.ecodes.KEY_FIND: 0x7e,
evdev.ecodes.KEY_MUTE: 0x7f,
evdev.ecodes.KEY_VOLUMEUP: 0x80,
evdev.ecodes.KEY_VOLUMEDOWN: 0x81,
# locking caps
# locking num
# locking scroll
evdev.ecodes.KEY_KPCOMMA: 0x85,
evdev.ecodes.KEY_KPEQUAL: 0x86,
# ...
evdev.ecodes.KEY_SYSRQ: 0x9a,
# ...
} }
LEFT_CTRL = 1 << 0 LEFT_CTRL = 1 << 0
LEFT_SHIFT = 1 << 1 LEFT_SHIFT = 1 << 1
LEFT_ALT = 1 << 2 LEFT_ALT = 1 << 2
@ -55,7 +186,7 @@ if __name__ == '__main__':
src = evdev.InputDevice(args.input) src = evdev.InputDevice(args.input)
src.grab() src.grab()
modifiers = 0 modifier_state = 0
keys_down = set() keys_down = set()
for event in src.read_loop(): for event in src.read_loop():
@ -65,6 +196,8 @@ if __name__ == '__main__':
data = evdev.categorize(event) data = evdev.categorize(event)
print("Got key", data.scancode) print("Got key", data.scancode)
code = scan_to_hid.get(data.scancode, None) code = scan_to_hid.get(data.scancode, None)
if code is None: if code is None:
print("Ignoring unknown key") print("Ignoring unknown key")