keyboard.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  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,next,prev,toggle):
  7. super(Keyboard, self).__init__()
  8. self.devices = [InputDevice(d) for d in list_devices("/dev/input/")]
  9. self.running = False
  10. self.prev = prev
  11. self.next = next
  12. self.toggle = toggle
  13. def run(self):
  14. self.running=True
  15. self.handleInput()
  16. def handleInput(self):
  17. #dev = InputDevice("/dev/input/by-id/usb-Microsoft_Comfort_Curve_Keyboard_3000-event-kbd")
  18. dev = InputDevice("/dev/input/by-path/platform-i8042-serio-0-event-kbd")
  19. VALID_KEYS = [ "KEY_PAGEUP", "KEY_PAGEDOWN", "KEY_F5" ]
  20. while True:
  21. r, w, e = select([dev], [], [])
  22. for ev in dev.read():
  23. codename = '?'
  24. if ev.type == ecodes.EV_SYN:
  25. continue
  26. if ev.value != 0:
  27. continue
  28. if ev.type in ecodes.bytype:
  29. codename = ecodes.bytype[ev.type][ev.code]
  30. if codename == "KEY_PAGEUP":
  31. self.prev()
  32. if codename == "KEY_PAGEDOWN":
  33. self.next()
  34. if codename == "KEY_F5":
  35. self.toggle()