Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- import cec
- from time import sleep
- from evdev import UInput, ecodes
- import os
- DEBUG = True
- logfile = None
- def log(*args):
- global logfile
- if DEBUG:
- if not logfile:
- logfile = open("/tmp/cec-to-keyboard.log", "w")
- print(*args,file=logfile)
- logfile.flush()
- def isRunning(name):
- pids = [pid for pid in os.listdir('/proc') if pid.isdigit()]
- out = []
- for pid in pids:
- try:
- cmdline = open(os.path.join('/proc', pid, 'cmdline'), 'rb').read().decode("utf-8","replace").split("\0")
- if os.path.basename(cmdline[0]) == name:
- return True
- except:
- pass
- return False
- keys_kodi = { 3:ecodes.KEY_LEFT, 4:ecodes.KEY_RIGHT, 1:ecodes.KEY_UP, 2:ecodes.KEY_DOWN,
- 13:ecodes.KEY_ESC, 0:ecodes.KEY_ENTER, 11:ecodes.KEY_COMPOSE, 72:ecodes.KEY_REWIND,
- 73:ecodes.KEY_FASTFORWARD, 70:ecodes.KEY_PLAY }
- keys = { 3:ecodes.KEY_LEFT, 4:ecodes.KEY_RIGHT, 1:ecodes.KEY_UP, 2:ecodes.KEY_DOWN,
- 13:ecodes.KEY_ESC, 0:ecodes.KEY_ENTER, 11:ecodes.KEY_LEFTMETA, 72:ecodes.KEY_REWIND,
- 73:ecodes.KEY_FASTFORWARD, 70:ecodes.KEY_PLAY }
- ui = UInput()
- def keyPress(key, duration):
- #kodi = isRunning("kodi-rbpi_v7")
- #ckeys = keys_kodi if kodi else keys
- log("pressed",key,duration)
- ckeys = keys
- if key in ckeys:
- if duration == 0:
- ui.write(ecodes.EV_KEY, ckeys[key], 1)
- else:
- ui.write(ecodes.EV_KEY, ckeys[key], 0)
- ui.syn()
- else:
- log("pressed",key,duration)
- cecConfig = cec.libcec_configuration()
- cecConfig.strDeviceName = "pyLibCec"
- cecConfig.bActivateSource = 0
- cecConfig.deviceTypes.Add(cec.CEC_DEVICE_TYPE_RECORDING_DEVICE)
- cecConfig.clientVersion = cec.LIBCEC_VERSION_CURRENT
- cecConfig.SetLogCallback(lambda level, time, message: log("log",level,time,message))
- cecConfig.SetCommandCallback(lambda cmd: log("cmd",cmd))
- cecConfig.SetKeyPressCallback(keyPress)
- lib = cec.ICECAdapter.Create(cecConfig)
- adapters = lib.DetectAdapters()
- if not adapters:
- raise Exception("No CEC adapters found")
- lib.Open(adapters[0].strComName)
- #lib = pyCecClient.pyCecClient()
- #lib.SetKeyPressCallback(keyPress)
- #lib.SetLogCallback(lambda level, time, message: log("log",level,time,message))
- #lib.SetCommandCallback(lambda cmd: log("cmd",cmd))
- #lib.InitLibCec()
- while True:
- sleep(10)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement