keyboard.py 1012 B

1234567891011121314151617181920212223242526272829
  1. import threading
  2. import json
  3. from select import select
  4. from evdev import ecodes, InputDevice, list_devices
  5. class Keyboard(threading.Thread):
  6. def __init__(self,sock):
  7. super(Keyboard, self).__init__()
  8. self.devices = [InputDevice(d) for d in list_devices("/dev/input/")]
  9. self.sock = sock
  10. self.running = False
  11. def run(self):
  12. self.running=True
  13. self.handleInput()
  14. def handleInput(self):
  15. dev = InputDevice("/dev/input/by-id/usb-Microsoft_Comfort_Curve_Keyboard_3000-event-kbd")
  16. VALID_KEYS = [ "KEY_PAGEUP", "KEY_PAGEDOWN", "KEY_F5" ]
  17. while True:
  18. r, w, e = select([dev], [], [])
  19. for ev in dev.read():
  20. codename = '?'
  21. if ev.type == ecodes.EV_SYN:
  22. continue
  23. if ev.type in ecodes.bytype:
  24. codename = ecodes.bytype[ev.type][ev.code]
  25. if codename in VALID_KEYS and ev.value==0:
  26. print(codename)