Advertisement
Guest User

Untitled

a guest
Jul 15th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.34 KB | None | 0 0
  1. #!/usr/bin/python3
  2. import cec
  3. from time import sleep
  4. from evdev import UInput, ecodes
  5. import os
  6.  
  7. DEBUG = True
  8. logfile = None
  9.  
  10. def log(*args):
  11. global logfile
  12. if DEBUG:
  13. if not logfile:
  14. logfile = open("/tmp/cec-to-keyboard.log", "w")
  15. print(*args,file=logfile)
  16. logfile.flush()
  17.  
  18. def isRunning(name):
  19. pids = [pid for pid in os.listdir('/proc') if pid.isdigit()]
  20. out = []
  21.  
  22. for pid in pids:
  23. try:
  24. cmdline = open(os.path.join('/proc', pid, 'cmdline'), 'rb').read().decode("utf-8","replace").split("\0")
  25. if os.path.basename(cmdline[0]) == name:
  26. return True
  27. except:
  28. pass
  29.  
  30. return False
  31.  
  32. keys_kodi = { 3:ecodes.KEY_LEFT, 4:ecodes.KEY_RIGHT, 1:ecodes.KEY_UP, 2:ecodes.KEY_DOWN,
  33. 13:ecodes.KEY_ESC, 0:ecodes.KEY_ENTER, 11:ecodes.KEY_COMPOSE, 72:ecodes.KEY_REWIND,
  34. 73:ecodes.KEY_FASTFORWARD, 70:ecodes.KEY_PLAY }
  35. keys = { 3:ecodes.KEY_LEFT, 4:ecodes.KEY_RIGHT, 1:ecodes.KEY_UP, 2:ecodes.KEY_DOWN,
  36. 13:ecodes.KEY_ESC, 0:ecodes.KEY_ENTER, 11:ecodes.KEY_LEFTMETA, 72:ecodes.KEY_REWIND,
  37. 73:ecodes.KEY_FASTFORWARD, 70:ecodes.KEY_PLAY }
  38.  
  39. ui = UInput()
  40.  
  41. def keyPress(key, duration):
  42. #kodi = isRunning("kodi-rbpi_v7")
  43. #ckeys = keys_kodi if kodi else keys
  44. log("pressed",key,duration)
  45. ckeys = keys
  46. if key in ckeys:
  47. if duration == 0:
  48. ui.write(ecodes.EV_KEY, ckeys[key], 1)
  49. else:
  50. ui.write(ecodes.EV_KEY, ckeys[key], 0)
  51. ui.syn()
  52. else:
  53. log("pressed",key,duration)
  54.  
  55. cecConfig = cec.libcec_configuration()
  56. cecConfig.strDeviceName = "pyLibCec"
  57. cecConfig.bActivateSource = 0
  58. cecConfig.deviceTypes.Add(cec.CEC_DEVICE_TYPE_RECORDING_DEVICE)
  59. cecConfig.clientVersion = cec.LIBCEC_VERSION_CURRENT
  60. cecConfig.SetLogCallback(lambda level, time, message: log("log",level,time,message))
  61. cecConfig.SetCommandCallback(lambda cmd: log("cmd",cmd))
  62. cecConfig.SetKeyPressCallback(keyPress)
  63. lib = cec.ICECAdapter.Create(cecConfig)
  64. adapters = lib.DetectAdapters()
  65. if not adapters:
  66. raise Exception("No CEC adapters found")
  67. lib.Open(adapters[0].strComName)
  68.  
  69. #lib = pyCecClient.pyCecClient()
  70. #lib.SetKeyPressCallback(keyPress)
  71. #lib.SetLogCallback(lambda level, time, message: log("log",level,time,message))
  72. #lib.SetCommandCallback(lambda cmd: log("cmd",cmd))
  73. #lib.InitLibCec()
  74.  
  75. while True:
  76. sleep(10)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement