import threading import json from select import select from evdev import ecodes, InputDevice, list_devices class Keyboard(threading.Thread): def __init__(self,sock): super(Keyboard, self).__init__() self.devices = [InputDevice(d) for d in list_devices("/dev/input/")] self.sock = sock self.running = False def run(self): self.running=True self.handleInput() def handleInput(self): dev = InputDevice("/dev/input/by-id/usb-Microsoft_Comfort_Curve_Keyboard_3000-event-kbd") VALID_KEYS = [ "KEY_PAGEUP", "KEY_PAGEDOWN", "KEY_F5" ] while True: r, w, e = select([dev], [], []) for ev in dev.read(): codename = '?' if ev.type == ecodes.EV_SYN: continue if ev.type in ecodes.bytype: codename = ecodes.bytype[ev.type][ev.code] if codename in VALID_KEYS and ev.value==0: print(codename)