1 # -*- coding: utf-8 -*-
3 # maintainer: <plnick@vuplus-support.org>
5 #This plugin is free software, you are allowed to
6 #modify it (if you keep the license),
7 #but you are not allowed to distribute/publish
8 #it without source code (this version and your modifications).
9 #This means you also have to distribute
10 #source code of your modifications.
14 from Screens.Screen import Screen
15 from Screens.MessageBox import MessageBox
16 from Plugins.Plugin import PluginDescriptor
17 from Components.ActionMap import ActionMap,NumberActionMap
18 from enigma import eActionMap
19 from Components.config import config, getConfigListEntry, ConfigInteger, ConfigSubsection, ConfigSelection, ConfigText, ConfigYesNo, NoSave, ConfigNothing
20 from Components.ConfigList import ConfigListScreen
21 from Components.HdmiCec import HdmiCec
22 from Components.Sources.StaticText import StaticText
23 from Tools import Notifications
25 from enigma import eHdmiCEC
27 from Components.InputDevice import iInputDevices
29 class HdmiCecPlugin(Screen,ConfigListScreen):
30 def __init__(self, session):
31 if session.desktop.size().width() > 720:
33 <screen name="HDMICEC" position="center,center" size="700,400" title="HDMI-CEC Plugin" >
34 <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
35 <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
36 <ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
37 <ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
38 <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ececec" backgroundColor="#9f1313" transparent="1" />
39 <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ececec" backgroundColor="#1f771f" transparent="1" />
40 <widget source="key_yellow" render="Label" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ececec" backgroundColor="#1f771f" transparent="1" />
41 <widget source="key_blue" render="Label" position="420,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ececec" backgroundColor="#1f771f" transparent="1" />
42 <widget name="config" zPosition="2" position="5,50" size="650,300" scrollbarMode="showOnDemand" transparent="1" />
46 <screen name="HDMICEC" position="center,center" size="600,320" title="HDMI-CEC Plugin" >
47 <ePixmap pixmap="skin_default/buttons/red.png" position="10,0" size="140,40" alphatest="on" />
48 <ePixmap pixmap="skin_default/buttons/green.png" position="150,0" size="140,40" alphatest="on" />
49 <ePixmap pixmap="skin_default/buttons/yellow.png" position="290,0" size="140,40" alphatest="on" />
50 <ePixmap pixmap="skin_default/buttons/blue.png" position="430,0" size="140,40" alphatest="on" />
51 <widget source="key_red" render="Label" position="10,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ececec" backgroundColor="#9f1313" transparent="1" />
52 <widget source="key_green" render="Label" position="150,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ececec" backgroundColor="#1f771f" transparent="1" />
53 <widget source="key_yellow" render="Label" position="290,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ececec" backgroundColor="#1f771f" transparent="1" />
54 <widget source="key_blue" render="Label" position="430,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ececec" backgroundColor="#1f771f" transparent="1" />
55 <widget name="config" zPosition="2" position="10,50" size="580,270" scrollbarMode="showOnDemand" transparent="1" />
57 Screen.__init__(self, session)
58 config.hdmicec.input_address = ConfigText(default = "0", visible_width = 50, fixed_size = False)
59 config.hdmicec.input_value1 = ConfigText(default = "0", visible_width = 50, fixed_size = False)
60 config.hdmicec.input_value2 = ConfigText(default = "", visible_width = 50, fixed_size = False)
61 config.hdmicec.input_value3 = ConfigText(default = "", visible_width = 50, fixed_size = False)
62 config.hdmicec.input_value4 = ConfigText(default = "", visible_width = 50, fixed_size = False)
63 config.hdmicec.avvolup = NoSave(ConfigNothing())
64 config.hdmicec.avvoldown = NoSave(ConfigNothing())
65 config.hdmicec.avvolmute = NoSave(ConfigNothing())
66 config.hdmicec.avpwroff = NoSave(ConfigNothing())
67 config.hdmicec.avpwron = NoSave(ConfigNothing())
68 config.hdmicec.tvpwroff = NoSave(ConfigNothing())
69 config.hdmicec.tvpwron = NoSave(ConfigNothing())
70 self["key_red"] = StaticText(_("Close"))
71 self["key_green"] = StaticText(_("Save"))
72 self["key_yellow"] = StaticText(_("Connect"))
73 self["key_blue"] = StaticText(_("Disconnect"))
74 self["shortcuts"] = ActionMap(["ShortcutActions", "SetupActions", "NumberActions" ],
77 "cancel": self.keyCancel,
78 "red": self.keyCancel,
79 "green": self.keySave,
80 "yellow": self.keyConnect,
81 "blue": self.keyDisconnect,
84 ConfigListScreen.__init__(self, self.list,session = session)
87 def createSetup(self):
89 self.hdmienabled = getConfigListEntry(_(_("HDMI CEC enabled:")), config.hdmicec.enabled)
90 self.hdmiactivesourcereply = getConfigListEntry(_(_("Active Source Reply On:")), config.hdmicec.active_source_reply)
91 self.hdmitvstandby = getConfigListEntry(_("VU standby => TV activity:"), config.hdmicec.standby_message)
92 self.hdmitvdeepstandby = getConfigListEntry(_("VU deepstandby => TV activity:"), config.hdmicec.deepstandby_message)
93 self.hdmitvwakeup = getConfigListEntry(_("VU on => TV activity:"), config.hdmicec.wakeup_message)
94 self.hdmivustandby = getConfigListEntry(_("TV standby => VU+ activity:"), config.hdmicec.vustandby_message)
95 self.hdmivuwakeup = getConfigListEntry(_("TV on => VU+ activity:"), config.hdmicec.vuwakeup_message)
96 self.hdmitvinput = getConfigListEntry(_("Choose TV HDMI input:"), config.hdmicec.tvinput)
97 self.hdmiavinput = getConfigListEntry(_("Choose A/V-Receiver HDMI input:"), config.hdmicec.avinput)
98 self.hdmiavvolup = getConfigListEntry(_("A/V-Receiver volume up:"), config.hdmicec.avvolup)
99 self.hdmiavvoldown = getConfigListEntry(_("A/V-Receiver volume down:"), config.hdmicec.avvoldown)
100 self.hdmiavvolmute = getConfigListEntry(_("A/V-Receiver toggle mute:"), config.hdmicec.avvolmute)
101 self.hdmiavpwron = getConfigListEntry(_("A/V-Receiver power on:"), config.hdmicec.avpwron)
102 self.hdmiavpwroff = getConfigListEntry(_("A/V-Receiver power off:"), config.hdmicec.avpwroff)
103 self.hdmitvpwron = getConfigListEntry(_("TV power on:"), config.hdmicec.tvpwron)
104 self.hdmitvpwroff = getConfigListEntry(_("TV power off:"), config.hdmicec.tvpwroff)
105 self.hdmienabletvrc = getConfigListEntry(_("Use TV remotecontrol:"), config.hdmicec.enabletvrc)
106 self.hdmidevicename = getConfigListEntry(_("Set VU device name:"), config.hdmicec.devicename)
107 self.hdmiinputaddress = getConfigListEntry(_("Address (0~FF):"), config.hdmicec.input_address)
108 self.hdmiinputvalue1 = getConfigListEntry("Value 1 (message):", config.hdmicec.input_value1)
109 self.hdmiinputvalue2 = getConfigListEntry("Value 2 (optional):", config.hdmicec.input_value2)
110 self.hdmiinputvalue3 = getConfigListEntry("Value 3 (optional):", config.hdmicec.input_value3)
111 self.hdmiinputvalue4 = getConfigListEntry("Value 4 (optional):", config.hdmicec.input_value4)
112 self.hdmilogenabledfile = getConfigListEntry("Log to file enabled :", config.hdmicec.logenabledfile)
113 self.hdmilogenabledserial = getConfigListEntry("Serial log enabled :", config.hdmicec.logenabledserial)
114 # self.list.append( self.hdmiinputaddress )
115 # self.list.append( self.hdmiinputvalue1 )
116 # self.list.append( self.hdmiinputvalue2 )
117 # self.list.append( self.hdmiinputvalue3 )
118 # self.list.append( self.hdmiinputvalue4 )
119 # self.list.append( self.hdmilogenabledfile )
120 self.list.append( self.hdmienabled )
121 if config.hdmicec.enabled.value is True:
122 self.list.append( self.hdmidevicename )
123 self.list.append( self.hdmitvinput )
124 self.list.append( self.hdmiavinput )
125 self.list.append( self.hdmivuwakeup )
126 self.list.append( self.hdmivustandby )
127 self.list.append( self.hdmitvwakeup )
128 self.list.append( self.hdmitvstandby )
129 self.list.append( self.hdmitvdeepstandby )
130 if config.hdmicec.avinput.value is not "0":
131 self.list.append( self.hdmiavvolup )
132 self.list.append( self.hdmiavvoldown )
133 self.list.append( self.hdmiavvolmute )
134 self.list.append( self.hdmiavpwron )
135 self.list.append( self.hdmiavpwroff )
136 self.list.append( self.hdmitvpwron )
137 self.list.append( self.hdmitvpwroff )
138 self.list.append( self.hdmienabletvrc )
139 self.list.append( self.hdmiactivesourcereply )
140 self.list.append( self.hdmilogenabledserial )
141 self["config"].list = self.list
142 self["config"].l.setList(self.list)
144 def keyDisconnect(self):
147 physaddress1 = int("0x" + str(config.hdmicec.tvinput.value) + str(config.hdmicec.avinput.value),16)
148 physaddress2 = int("0x00",16)
149 address = int('0',16)
150 cecmessage = int('0x9D',16)
151 cecmessagetwo = physaddress1
152 cecmessagethree = physaddress2
153 cmd = struct.pack('BBB',cecmessage,cecmessagetwo,cecmessagethree)
154 logcmd = "[HDMI-CEC] send cec message %x:%x:%x to %x" % (cecmessage,cecmessagetwo,cecmessagethree,address)
157 eHdmiCEC.getInstance().sendMessage(address, len(cmd), str(cmd))
160 if config.hdmicec.logenabledserial.value:
162 if config.hdmicec.logenabledfile.value:
163 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmd)
169 addresstmp=config.hdmicec.input_address.value
170 tmp1=config.hdmicec.input_value1.value
171 tmp2=config.hdmicec.input_value2.value
172 tmp3=config.hdmicec.input_value3.value
173 tmp4=config.hdmicec.input_value4.value
174 address=int(addresstmp,16)
175 if address not in range(0,256):
182 if val1 not in range(0,256):
184 if val2 not in range(0,256):
186 if val3 not in range(0,256):
188 if val4 not in range(0,256):
190 cmd = struct.pack('BBBB',val1,val2,val3,val4)
191 logcmd = "[HDMI-CEC] ** Test Message ** Send message value: %x:%x:%x:%x to address %x" % (val1,val2,val3,val4,address)
198 if val1 not in range(0,256):
200 if val2 not in range(0,256):
202 if val3 not in range(0,256):
204 cmd = struct.pack('BBB',val1,val2,val3)
205 logcmd = "[HDMI-CEC] ** Test Message ** Send message value: %x:%x:%x to address %x" % (val1,val2,val3,address)
211 if val1 not in range(0,256):
213 if val2 not in range(0,256):
215 cmd = struct.pack('BB',val1,val2)
216 logcmd = "[HDMI-CEC] ** Test Message ** Send message value: %x:%x to address %x" % (val1,val2,address)
219 if val1 not in range(0,256):
221 cmd = struct.pack('B',val1)
222 logcmd = "[HDMI-CEC] ** Test Message ** Send message value: %x to address %x" % (val1, address)
225 eHdmiCEC.getInstance().sendMessage(address, len(cmd), str(cmd))
228 if config.hdmicec.logenabledserial.value:
230 if config.hdmicec.logenabledfile.value:
231 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmd)
237 if self["config"].getCurrent() == self.hdmiavvolup:
238 address = int("5",16)
239 cecmessage = int("44",16)
240 cecmessagetwo = int("41",16)
241 cmd = struct.pack('BB',cecmessage,cecmessagetwo)
242 logcmd = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
243 elif self["config"].getCurrent() == self.hdmiavvoldown:
244 address = int("5",16)
245 cecmessage = int("44",16)
246 cecmessagetwo = int("42",16)
247 cmd = struct.pack('BB',cecmessage,cecmessagetwo)
248 logcmd = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
249 elif self["config"].getCurrent() == self.hdmiavvolmute:
250 address = int("5",16)
251 cecmessage = int("44",16)
252 cecmessagetwo = int("43",16)
253 cmd = struct.pack('BB',cecmessage,cecmessagetwo)
254 logcmd = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
255 elif self["config"].getCurrent() == self.hdmiavpwron:
256 address = int("5",16)
257 cecmessage = int("44",16)
258 cecmessagetwo = int("6D",16)
259 cmd = struct.pack('BB',cecmessage,cecmessagetwo)
260 logcmd = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
261 elif self["config"].getCurrent() == self.hdmiavpwroff:
262 address = int("5",16)
263 cecmessage = int("44",16)
264 cecmessagetwo = int("6C",16)
265 cmd = struct.pack('BB',cecmessage,cecmessagetwo)
266 logcmd = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
267 elif self["config"].getCurrent() == self.hdmitvpwroff:
268 address = int("0",16)
269 cecmessage = int("36",16)
270 cmd = struct.pack('B',cecmessage)
271 logcmd = "[HDMI-CEC] send cec message %x to %x" % (cecmessage,address)
272 elif self["config"].getCurrent() == self.hdmitvpwron:
273 address = int("0",16)
274 cecmessage = int("04",16)
275 cmd = struct.pack('B',cecmessage)
276 logcmd = "[HDMI-CEC] send cec message %x to %x" % (cecmessage,address)
278 ConfigListScreen.keySave(self)
280 eHdmiCEC.getInstance().sendMessage(address, len(cmd), str(cmd))
281 messagecmd = int("45",16)
284 if config.hdmicec.logenabledserial.value:
286 if config.hdmicec.logenabledfile.value:
287 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmd)
290 def keyConnect(self):
293 messageReceived(address, message)
296 ConfigListScreen.keyLeft(self)
297 if self["config"].getCurrent() == self.hdmienabled:
299 if self["config"].getCurrent() == self.hdmiavinput:
303 ConfigListScreen.keyRight(self)
304 if self["config"].getCurrent() == self.hdmienabled:
306 if self["config"].getCurrent() == self.hdmiavinput:
313 ConfigListScreen.keySave(self)
315 def openconfig(session, **kwargs):
316 session.open(HdmiCecPlugin)
318 def autostart(reason, **kwargs):
320 if kwargs.has_key("session") and reason == 0:
321 session = kwargs["session"]
322 eHdmiCEC.getInstance().messageReceived.get().append(messageReceived)
323 eHdmiCEC.getInstance().messageReceivedKey.get().append(messageReceivedKey)
325 def Plugins(**kwargs):
326 return [PluginDescriptor(name=_("HDMI-CEC"), description="HDMI-CEC Configuration", where = PluginDescriptor.WHERE_PLUGINMENU, needsRestart = True, fnc=openconfig),
327 PluginDescriptor(where = [PluginDescriptor.WHERE_SESSIONSTART, PluginDescriptor.WHERE_AUTOSTART], fnc = autostart)]
329 def messageReceived(address, message):
330 logcmd = "[HDMI-CEC] received cec message %x from %x" % (message, address)
332 if config.hdmicec.logenabledserial.value:
334 if config.hdmicec.logenabledfile.value:
335 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmd)
338 if config.hdmicec.enabled.value is True:
339 from Screens.Standby import inStandby
340 from Screens.Standby import Standby
348 physaddress1 = int("0x" + str(config.hdmicec.tvinput.value) + str(config.hdmicec.avinput.value),16)
349 physaddress2 = int("0x00",16)
351 addresstv = int("0x00",16)
352 addressav = int("0x05",16)
353 addressglobal = int("0x0F",16)
355 powerstatereportmessage = int("0x90",16)
356 powerstate = int("0x00",16)
358 physaddressmessage = int('0x84',16)
359 devicetypmessage = int('0x03',16)
361 activesourcemessage = int('0x82',16)
363 menuonmessage = int('0x8E',16)
364 menustatemessage = int('0x00',16)
366 setnamemessage = int('0x47',16)
368 sendkeymessage = int("44",16)
369 sendkeypwronmessage = int("6D",16)
370 sendkeypwroffmessage = int("6C",16)
372 if message == 0x8f: # request power state
374 cecmessage = powerstatereportmessage
375 cecmessagetwo = powerstate
376 cmd = struct.pack('BB',cecmessage,cecmessagetwo)
377 logcmd = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
379 elif message == 0x83: # request physical address
380 address = addressglobal
381 cecmessage = physaddressmessage
382 cecmessagetwo = physaddress1
383 cecmessagethree = physaddress2
384 cecmessagefour = devicetypmessage
385 cmd = struct.pack('BBBB',cecmessage,cecmessagetwo,cecmessagethree,cecmessagefour)
386 logcmd = "[HDMI-CEC] send cec message %x:%x:%x:%x to %x" % (cecmessage,cecmessagetwo,cecmessagethree,cecmessagefour,address)
388 elif message == 0x86: # request streampath
389 address = addressglobal
390 cecmessage = activesourcemessage
391 cecmessagetwo = physaddress1
392 cecmessagethree = physaddress2
393 cmd = struct.pack('BBB',cecmessage,cecmessagetwo,cecmessagethree)
394 logcmd = "[HDMI-CEC] send cec message %x:%x:%x to %x" % (cecmessage,cecmessagetwo,cecmessagethree,address)
396 if config.hdmicec.enabletvrc.value:
397 addresstwo = addresstv
398 cecmessage = menuonmessage
399 cecmessagetwo = menustatemessage
400 cmdtwo = struct.pack('BB',cecmessage,cecmessagetwo)
401 logcmdtwo = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
403 elif message == 0x8d: # request menu state
404 if config.hdmicec.enabletvrc.value:
406 cecmessage = menuonmessage
407 cecmessagetwo = menustatemessage
408 cmd = struct.pack('BB',cecmessage,cecmessagetwo)
409 logcmd = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
411 elif message == 0x46: # request device name
413 cecmessage = setnamemessage
414 if config.hdmicec.devicename.value == "vuduo":
415 cecmessagetwo ="VU+ Duo"
416 cmd = struct.pack('B8s',cecmessage,cecmessagetwo)
417 elif config.hdmicec.devicename.value == "vusolo":
418 cecmessagetwo ="VU+ Solo"
419 cmd = struct.pack('B9s',cecmessage,cecmessagetwo)
420 elif config.hdmicec.devicename.value == "vuuno":
421 cecmessagetwo ="VU+ Uno"
422 cmd = struct.pack('B8s',cecmessage,cecmessagetwo)
423 elif config.hdmicec.devicename.value == "vuultimo":
424 cecmessagetwo ="VU+ Ultimo"
425 cmd = struct.pack('B8s',cecmessage,cecmessagetwo)
428 cmd = struct.pack('B4s',cecmessage,cecmessagetwo)
429 logcmd = "[HDMI-CEC] send cec message %x:%s to %x" % (cecmessage,cecmessagetwo,address)
431 elif message == 0x85: # request active source
433 address = addressglobal
434 cecmessage = activesourcemessage
435 cecmessagetwo = physaddress1
436 cecmessagethree = physaddress2
437 cmd = struct.pack('BBB',cecmessage,cecmessagetwo,cecmessagethree)
438 logcmd = "[HDMI-CEC] send cec message %x:%x:%x to %x" % (cecmessage,cecmessagetwo,cecmessagethree,address)
440 if config.hdmicec.enabletvrc.value:
441 addresstwo = addresstv
442 cecmessage = menuonmessage
443 cecmessagetwo = menustatemessage
444 cmdtwo = struct.pack('BB',cecmessage,cecmessagetwo)
445 logcmdtwo = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
448 if config.hdmicec.vuwakeup_message.value == "vuwakeup":
450 address = addressglobal
451 cecmessage = activesourcemessage
452 cecmessagetwo = physaddress1
453 cecmessagethree = physaddress2
454 cmd = struct.pack('BBB',cecmessage,cecmessagetwo,cecmessagethree)
455 logcmd = "[HDMI-CEC] send cec message %x:%x:%x to %x" % (cecmessage,cecmessagetwo,cecmessagethree,address)
457 if config.hdmicec.enabletvrc.value:
458 addresstwo = addresstv
459 cecmessage = menuonmessage
460 cecmessagetwo = menustatemessage
461 cmdtwo = struct.pack('BB',cecmessage,cecmessagetwo)
462 logcmdtwo = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
464 elif message == 0x36:
465 if config.hdmicec.vustandby_message.value == "vustandby":
466 if inStandby == None:
467 logcmd = "[HDMI-CEC] VU+ STB goto standby"
468 session.open(Standby)
469 elif config.hdmicec.vustandby_message.value == "vudeepstandby":
470 import Screens.Standby
471 logcmd = "[HDMI-CEC] VU+ STB goto deepstandby"
472 session.open(Screens.Standby.TryQuitMainloop,1)
475 eHdmiCEC.getInstance().sendMessage(address, len(cmd), str(cmd))
477 eHdmiCEC.getInstance().sendMessage(addresstwo, len(cmdtwo), str(cmdtwo))
480 if config.hdmicec.logenabledserial.value:
482 if config.hdmicec.logenabledfile.value:
483 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmd)
486 if config.hdmicec.logenabledserial.value:
488 if config.hdmicec.logenabledfile.value:
489 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmdtwo)
492 def messageReceivedKey(address, message):
493 logcmd = "[HDMI-CEC] received cec message part two %x from %x" % (message, address)
495 if config.hdmicec.logenabledserial.value:
497 if config.hdmicec.logenabledfile.value:
498 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmd)
500 if config.hdmicec.enabled.value is True:
501 rcdevicename = iInputDevices.getDeviceName('event0') # hschang : get rc device name, /dev/input/event0
502 keyaction = eActionMap.getInstance()
504 #start translate keycodes
505 if message == 0x32 or message == 0x09: #key menu
507 elif message == 0x20: #key 0
509 elif message == 0x21: #key 1
511 elif message == 0x22: #key 2
513 elif message == 0x23: #key 3
515 elif message == 0x24: #key 4
517 elif message == 0x25: #key 5
519 elif message == 0x26: #key 6
521 elif message == 0x27: #key 7
523 elif message == 0x28: #key 8
525 elif message == 0x29: #key 10
527 elif message == 0x30: #key bouquet up
529 elif message == 0x31: #key bouquet down
531 elif message == 0x53: #key info/epg
533 elif message == 0x00: #key ok
535 elif message == 0x03: #key left
537 elif message == 0x04: #key right
539 elif message == 0x01: #key up
541 elif message == 0x02: #key down
543 elif message == 0x0d: #key exit
545 elif message == 0x72: #key red
547 elif message == 0x71: #key blue
549 elif message == 0x73: #key green
551 elif message == 0x74: #key yellow
553 elif message == 0x44: #key play
554 if rcdevicename.find("advanced"):
555 key = int(164) # KEY_PLAYPAUSE
557 key = int(207) # KEY_PLAY
558 elif message == 0x46: #key pause
559 if rcdevicename.find("advanced"):
560 key = int(164) # KEY_PLAYPAUSE
562 key = int(119) # KEY_PAUSE
563 elif message == 0x45: #key stop
565 elif message == 0x47: #key record
567 elif message == 0x49: #fast forward
568 if rcdevicename.find("advanced"):
569 key = int(163) # KEY_NEXTSONG
571 key = int(208) # KEY_FASTFORWARD
572 elif message == 0x48: #rewind
573 if rcdevicename.find("advanced"):
574 key = int(165) # KEY_NEXTSONG
576 key = int(168) # KEY_FASTFORWARD
577 elif message == 0x60: #play 2
579 elif message == 0x61: #key pause 2
580 if rcdevicename.find("advanced"):
581 key = int(164) # KEY_PLAYPAUSE
583 key = int(119) # KEY_PAUSE
584 elif message == 0x64: #key stop 2
586 elif message == 0x62: #key record 2
588 #end translate keycodes
590 keyaction.keyPressed(rcdevicename, key, int(0))
591 keyaction.keyPressed(rcdevicename, key, int(1))