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):
31 <screen name="HDMICEC" position="center,center" size="700,400" title="HDMI-CEC Plugin" >
32 <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
33 <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
34 <ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
35 <ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
36 <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" />
37 <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" />
38 <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" />
39 <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" />
40 <widget name="config" zPosition="2" position="5,50" size="650,300" scrollbarMode="showOnDemand" transparent="1" />
42 def __init__(self, session):
43 Screen.__init__(self, session)
46 config.hdmicec.input_address = ConfigText(default = "0", visible_width = 50, fixed_size = False)
47 config.hdmicec.input_value1 = ConfigText(default = "0", visible_width = 50, fixed_size = False)
48 config.hdmicec.input_value2 = ConfigText(default = "", visible_width = 50, fixed_size = False)
49 config.hdmicec.input_value3 = ConfigText(default = "", visible_width = 50, fixed_size = False)
50 config.hdmicec.input_value4 = ConfigText(default = "", visible_width = 50, fixed_size = False)
51 config.hdmicec.avvolup = NoSave(ConfigNothing())
52 config.hdmicec.avvoldown = NoSave(ConfigNothing())
53 config.hdmicec.avvolmute = NoSave(ConfigNothing())
54 config.hdmicec.avpwroff = NoSave(ConfigNothing())
55 config.hdmicec.avpwron = NoSave(ConfigNothing())
56 config.hdmicec.tvpwroff = NoSave(ConfigNothing())
57 config.hdmicec.tvpwron = NoSave(ConfigNothing())
58 self["key_red"] = StaticText(_("Close"))
59 self["key_green"] = StaticText(_("Save"))
60 self["key_yellow"] = StaticText(_("Connect"))
61 self["key_blue"] = StaticText(_("Disconnect"))
62 self["shortcuts"] = ActionMap(["ShortcutActions", "SetupActions", "NumberActions" ],
65 "cancel": self.keyCancel,
66 "red": self.keyCancel,
67 "green": self.keySave,
68 "yellow": self.keyConnect,
69 "blue": self.keyDisconnect,
72 ConfigListScreen.__init__(self, self.list,session = session)
75 def createSetup(self):
77 self.hdmienabled = getConfigListEntry(_(_("HDMI CEC enabled:")), config.hdmicec.enabled)
78 self.hdmiactivesourcereply = getConfigListEntry(_(_("Active Source Reply On:")), config.hdmicec.active_source_reply)
79 self.hdmitvstandby = getConfigListEntry(_("VU standby => TV activity:"), config.hdmicec.standby_message)
80 self.hdmitvdeepstandby = getConfigListEntry(_("VU deepstandby => TV activity:"), config.hdmicec.deepstandby_message)
81 self.hdmitvwakeup = getConfigListEntry(_("VU on => TV activity:"), config.hdmicec.wakeup_message)
82 self.hdmivustandby = getConfigListEntry(_("TV standby => VU+ activity:"), config.hdmicec.vustandby_message)
83 self.hdmivuwakeup = getConfigListEntry(_("TV on => VU+ activity:"), config.hdmicec.vuwakeup_message)
84 self.hdmitvinput = getConfigListEntry(_("Choose TV HDMI input:"), config.hdmicec.tvinput)
85 self.hdmiavinput = getConfigListEntry(_("Choose A/V-Receiver HDMI input:"), config.hdmicec.avinput)
86 self.hdmiavvolup = getConfigListEntry(_("A/V-Receiver volume up:"), config.hdmicec.avvolup)
87 self.hdmiavvoldown = getConfigListEntry(_("A/V-Receiver volume down:"), config.hdmicec.avvoldown)
88 self.hdmiavvolmute = getConfigListEntry(_("A/V-Receiver toggle mute:"), config.hdmicec.avvolmute)
89 self.hdmiavpwron = getConfigListEntry(_("A/V-Receiver power on:"), config.hdmicec.avpwron)
90 self.hdmiavpwroff = getConfigListEntry(_("A/V-Receiver power off:"), config.hdmicec.avpwroff)
91 self.hdmitvpwron = getConfigListEntry(_("TV power on:"), config.hdmicec.tvpwron)
92 self.hdmitvpwroff = getConfigListEntry(_("TV power off:"), config.hdmicec.tvpwroff)
93 self.hdmienabletvrc = getConfigListEntry(_("Use TV remotecontrol:"), config.hdmicec.enabletvrc)
94 self.hdmidevicename = getConfigListEntry(_("Set VU device name:"), config.hdmicec.devicename)
95 self.hdmiinputaddress = getConfigListEntry(_("Address (0~FF):"), config.hdmicec.input_address)
96 self.hdmiinputvalue1 = getConfigListEntry("Value 1 (message):", config.hdmicec.input_value1)
97 self.hdmiinputvalue2 = getConfigListEntry("Value 2 (optional):", config.hdmicec.input_value2)
98 self.hdmiinputvalue3 = getConfigListEntry("Value 3 (optional):", config.hdmicec.input_value3)
99 self.hdmiinputvalue4 = getConfigListEntry("Value 4 (optional):", config.hdmicec.input_value4)
100 self.hdmilogenabledfile = getConfigListEntry("Log to file enabled :", config.hdmicec.logenabledfile)
101 self.hdmilogenabledserial = getConfigListEntry("Serial log enabled :", config.hdmicec.logenabledserial)
102 # self.list.append( self.hdmiinputaddress )
103 # self.list.append( self.hdmiinputvalue1 )
104 # self.list.append( self.hdmiinputvalue2 )
105 # self.list.append( self.hdmiinputvalue3 )
106 # self.list.append( self.hdmiinputvalue4 )
107 # self.list.append( self.hdmilogenabledfile )
108 self.list.append( self.hdmienabled )
109 if config.hdmicec.enabled.value is True:
110 self.list.append( self.hdmidevicename )
111 self.list.append( self.hdmitvinput )
112 self.list.append( self.hdmiavinput )
113 self.list.append( self.hdmivuwakeup )
114 self.list.append( self.hdmivustandby )
115 self.list.append( self.hdmitvwakeup )
116 self.list.append( self.hdmitvstandby )
117 self.list.append( self.hdmitvdeepstandby )
118 if config.hdmicec.avinput.value is not "0":
119 self.list.append( self.hdmiavvolup )
120 self.list.append( self.hdmiavvoldown )
121 self.list.append( self.hdmiavvolmute )
122 self.list.append( self.hdmiavpwron )
123 self.list.append( self.hdmiavpwroff )
124 self.list.append( self.hdmitvpwron )
125 self.list.append( self.hdmitvpwroff )
126 self.list.append( self.hdmienabletvrc )
127 self.list.append( self.hdmiactivesourcereply )
128 self.list.append( self.hdmilogenabledserial )
129 self["config"].list = self.list
130 self["config"].l.setList(self.list)
132 def keyDisconnect(self):
135 physaddress1 = int("0x" + str(config.hdmicec.tvinput.value) + str(config.hdmicec.avinput.value),16)
136 physaddress2 = int("0x00",16)
137 address = int('0',16)
138 cecmessage = int('0x9D',16)
139 cecmessagetwo = physaddress1
140 cecmessagethree = physaddress2
141 cmd = struct.pack('BBB',cecmessage,cecmessagetwo,cecmessagethree)
142 logcmd = "[HDMI-CEC] send cec message %x:%x:%x to %x" % (cecmessage,cecmessagetwo,cecmessagethree,address)
145 eHdmiCEC.getInstance().sendMessage(address, len(cmd), str(cmd))
148 if config.hdmicec.logenabledserial.value:
150 if config.hdmicec.logenabledfile.value:
151 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmd)
157 addresstmp=config.hdmicec.input_address.value
158 tmp1=config.hdmicec.input_value1.value
159 tmp2=config.hdmicec.input_value2.value
160 tmp3=config.hdmicec.input_value3.value
161 tmp4=config.hdmicec.input_value4.value
162 address=int(addresstmp,16)
163 if address not in range(0,256):
170 if val1 not in range(0,256):
172 if val2 not in range(0,256):
174 if val3 not in range(0,256):
176 if val4 not in range(0,256):
178 cmd = struct.pack('BBBB',val1,val2,val3,val4)
179 logcmd = "[HDMI-CEC] ** Test Message ** Send message value: %x:%x:%x:%x to address %x" % (val1,val2,val3,val4,address)
186 if val1 not in range(0,256):
188 if val2 not in range(0,256):
190 if val3 not in range(0,256):
192 cmd = struct.pack('BBB',val1,val2,val3)
193 logcmd = "[HDMI-CEC] ** Test Message ** Send message value: %x:%x:%x to address %x" % (val1,val2,val3,address)
199 if val1 not in range(0,256):
201 if val2 not in range(0,256):
203 cmd = struct.pack('BB',val1,val2)
204 logcmd = "[HDMI-CEC] ** Test Message ** Send message value: %x:%x to address %x" % (val1,val2,address)
207 if val1 not in range(0,256):
209 cmd = struct.pack('B',val1)
210 logcmd = "[HDMI-CEC] ** Test Message ** Send message value: %x to address %x" % (val1, address)
213 eHdmiCEC.getInstance().sendMessage(address, len(cmd), str(cmd))
216 if config.hdmicec.logenabledserial.value:
218 if config.hdmicec.logenabledfile.value:
219 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmd)
225 if self["config"].getCurrent() == self.hdmiavvolup:
226 address = int("5",16)
227 cecmessage = int("44",16)
228 cecmessagetwo = int("41",16)
229 cmd = struct.pack('BB',cecmessage,cecmessagetwo)
230 logcmd = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
231 elif self["config"].getCurrent() == self.hdmiavvoldown:
232 address = int("5",16)
233 cecmessage = int("44",16)
234 cecmessagetwo = int("42",16)
235 cmd = struct.pack('BB',cecmessage,cecmessagetwo)
236 logcmd = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
237 elif self["config"].getCurrent() == self.hdmiavvolmute:
238 address = int("5",16)
239 cecmessage = int("44",16)
240 cecmessagetwo = int("43",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.hdmiavpwron:
244 address = int("5",16)
245 cecmessage = int("44",16)
246 cecmessagetwo = int("6D",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.hdmiavpwroff:
250 address = int("5",16)
251 cecmessage = int("44",16)
252 cecmessagetwo = int("6C",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.hdmitvpwroff:
256 address = int("0",16)
257 cecmessage = int("36",16)
258 cmd = struct.pack('B',cecmessage)
259 logcmd = "[HDMI-CEC] send cec message %x to %x" % (cecmessage,address)
260 elif self["config"].getCurrent() == self.hdmitvpwron:
261 address = int("0",16)
262 cecmessage = int("04",16)
263 cmd = struct.pack('B',cecmessage)
264 logcmd = "[HDMI-CEC] send cec message %x to %x" % (cecmessage,address)
266 ConfigListScreen.keySave(self)
268 eHdmiCEC.getInstance().sendMessage(address, len(cmd), str(cmd))
269 messagecmd = int("45",16)
272 if config.hdmicec.logenabledserial.value:
274 if config.hdmicec.logenabledfile.value:
275 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmd)
278 def keyConnect(self):
281 messageReceived(address, message)
284 ConfigListScreen.keyLeft(self)
285 if self["config"].getCurrent() == self.hdmienabled:
287 if self["config"].getCurrent() == self.hdmiavinput:
291 ConfigListScreen.keyRight(self)
292 if self["config"].getCurrent() == self.hdmienabled:
294 if self["config"].getCurrent() == self.hdmiavinput:
301 ConfigListScreen.keySave(self)
303 def openconfig(session, **kwargs):
304 session.open(HdmiCecPlugin)
306 def autostart(reason, **kwargs):
308 if kwargs.has_key("session") and reason == 0:
309 session = kwargs["session"]
310 eHdmiCEC.getInstance().messageReceived.get().append(messageReceived)
311 eHdmiCEC.getInstance().messageReceivedKey.get().append(messageReceivedKey)
313 def Plugins(**kwargs):
314 return [PluginDescriptor(name=_("HDMI-CEC"), description="HDMI-CEC Configuration", where = PluginDescriptor.WHERE_PLUGINMENU, needsRestart = True, fnc=openconfig),
315 PluginDescriptor(where = [PluginDescriptor.WHERE_SESSIONSTART, PluginDescriptor.WHERE_AUTOSTART], fnc = autostart)]
317 def messageReceived(address, message):
318 logcmd = "[HDMI-CEC] received cec message %x from %x" % (message, address)
320 if config.hdmicec.logenabledserial.value:
322 if config.hdmicec.logenabledfile.value:
323 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmd)
326 if config.hdmicec.enabled.value is True:
327 from Screens.Standby import inStandby
328 from Screens.Standby import Standby
336 physaddress1 = int("0x" + str(config.hdmicec.tvinput.value) + str(config.hdmicec.avinput.value),16)
337 physaddress2 = int("0x00",16)
339 addresstv = int("0x00",16)
340 addressav = int("0x05",16)
341 addressglobal = int("0x0F",16)
343 powerstatereportmessage = int("0x90",16)
344 powerstate = int("0x00",16)
346 physaddressmessage = int('0x84',16)
347 devicetypmessage = int('0x03',16)
349 activesourcemessage = int('0x82',16)
351 menuonmessage = int('0x8E',16)
352 menustatemessage = int('0x00',16)
354 setnamemessage = int('0x47',16)
356 sendkeymessage = int("44",16)
357 sendkeypwronmessage = int("6D",16)
358 sendkeypwroffmessage = int("6C",16)
360 if message == 0x8f: # request power state
362 cecmessage = powerstatereportmessage
363 cecmessagetwo = powerstate
364 cmd = struct.pack('BB',cecmessage,cecmessagetwo)
365 logcmd = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
367 elif message == 0x83: # request physical address
368 address = addressglobal
369 cecmessage = physaddressmessage
370 cecmessagetwo = physaddress1
371 cecmessagethree = physaddress2
372 cecmessagefour = devicetypmessage
373 cmd = struct.pack('BBBB',cecmessage,cecmessagetwo,cecmessagethree,cecmessagefour)
374 logcmd = "[HDMI-CEC] send cec message %x:%x:%x:%x to %x" % (cecmessage,cecmessagetwo,cecmessagethree,cecmessagefour,address)
376 elif message == 0x86: # request streampath
377 address = addressglobal
378 cecmessage = activesourcemessage
379 cecmessagetwo = physaddress1
380 cecmessagethree = physaddress2
381 cmd = struct.pack('BBB',cecmessage,cecmessagetwo,cecmessagethree)
382 logcmd = "[HDMI-CEC] send cec message %x:%x:%x to %x" % (cecmessage,cecmessagetwo,cecmessagethree,address)
384 if config.hdmicec.enabletvrc.value:
385 addresstwo = addresstv
386 cecmessage = menuonmessage
387 cecmessagetwo = menustatemessage
388 cmdtwo = struct.pack('BB',cecmessage,cecmessagetwo)
389 logcmdtwo = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
391 elif message == 0x8d: # request menu state
392 if config.hdmicec.enabletvrc.value:
394 cecmessage = menuonmessage
395 cecmessagetwo = menustatemessage
396 cmd = struct.pack('BB',cecmessage,cecmessagetwo)
397 logcmd = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
399 elif message == 0x46: # request device name
401 cecmessage = setnamemessage
402 if config.hdmicec.devicename.value == "vuduo":
403 cecmessagetwo ="VU+ Duo"
404 cmd = struct.pack('B8s',cecmessage,cecmessagetwo)
405 elif config.hdmicec.devicename.value == "vusolo":
406 cecmessagetwo ="VU+ Solo"
407 cmd = struct.pack('B9s',cecmessage,cecmessagetwo)
408 elif config.hdmicec.devicename.value == "vuuno":
409 cecmessagetwo ="VU+ Uno"
410 cmd = struct.pack('B8s',cecmessage,cecmessagetwo)
411 elif config.hdmicec.devicename.value == "vuultimo":
412 cecmessagetwo ="VU+ Ultimo"
413 cmd = struct.pack('B8s',cecmessage,cecmessagetwo)
416 cmd = struct.pack('B4s',cecmessage,cecmessagetwo)
417 logcmd = "[HDMI-CEC] send cec message %x:%s to %x" % (cecmessage,cecmessagetwo,address)
419 elif message == 0x85: # request active source
421 address = addressglobal
422 cecmessage = activesourcemessage
423 cecmessagetwo = physaddress1
424 cecmessagethree = physaddress2
425 cmd = struct.pack('BBB',cecmessage,cecmessagetwo,cecmessagethree)
426 logcmd = "[HDMI-CEC] send cec message %x:%x:%x to %x" % (cecmessage,cecmessagetwo,cecmessagethree,address)
428 if config.hdmicec.enabletvrc.value:
429 addresstwo = addresstv
430 cecmessage = menuonmessage
431 cecmessagetwo = menustatemessage
432 cmdtwo = struct.pack('BB',cecmessage,cecmessagetwo)
433 logcmdtwo = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
436 if config.hdmicec.vuwakeup_message.value == "vuwakeup":
438 address = addressglobal
439 cecmessage = activesourcemessage
440 cecmessagetwo = physaddress1
441 cecmessagethree = physaddress2
442 cmd = struct.pack('BBB',cecmessage,cecmessagetwo,cecmessagethree)
443 logcmd = "[HDMI-CEC] send cec message %x:%x:%x to %x" % (cecmessage,cecmessagetwo,cecmessagethree,address)
445 if config.hdmicec.enabletvrc.value:
446 addresstwo = addresstv
447 cecmessage = menuonmessage
448 cecmessagetwo = menustatemessage
449 cmdtwo = struct.pack('BB',cecmessage,cecmessagetwo)
450 logcmdtwo = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
452 elif message == 0x36:
453 if config.hdmicec.vustandby_message.value == "vustandby":
454 if inStandby == None:
455 logcmd = "[HDMI-CEC] VU+ STB goto standby"
456 session.open(Standby)
457 elif config.hdmicec.vustandby_message.value == "vudeepstandby":
458 import Screens.Standby
459 logcmd = "[HDMI-CEC] VU+ STB goto deepstandby"
460 session.open(Screens.Standby.TryQuitMainloop,1)
463 eHdmiCEC.getInstance().sendMessage(address, len(cmd), str(cmd))
465 eHdmiCEC.getInstance().sendMessage(addresstwo, len(cmdtwo), str(cmdtwo))
468 if config.hdmicec.logenabledserial.value:
470 if config.hdmicec.logenabledfile.value:
471 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmd)
474 if config.hdmicec.logenabledserial.value:
476 if config.hdmicec.logenabledfile.value:
477 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmdtwo)
480 def messageReceivedKey(address, message):
481 logcmd = "[HDMI-CEC] received cec message part two %x from %x" % (message, address)
483 if config.hdmicec.logenabledserial.value:
485 if config.hdmicec.logenabledfile.value:
486 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmd)
488 if config.hdmicec.enabled.value is True:
489 rcdevicename = iInputDevices.getDeviceName('event0') # hschang : get rc device name, /dev/input/event0
490 keyaction = eActionMap.getInstance()
492 #start translate keycodes
493 if message == 0x32 or message == 0x09: #key menu
495 elif message == 0x20: #key 0
497 elif message == 0x21: #key 1
499 elif message == 0x22: #key 2
501 elif message == 0x23: #key 3
503 elif message == 0x24: #key 4
505 elif message == 0x25: #key 5
507 elif message == 0x26: #key 6
509 elif message == 0x27: #key 7
511 elif message == 0x28: #key 8
513 elif message == 0x29: #key 10
515 elif message == 0x30: #key bouquet up
517 elif message == 0x31: #key bouquet down
519 elif message == 0x53: #key info/epg
521 elif message == 0x00: #key ok
523 elif message == 0x03: #key left
525 elif message == 0x04: #key right
527 elif message == 0x01: #key up
529 elif message == 0x02: #key down
531 elif message == 0x0d: #key exit
533 elif message == 0x72: #key red
535 elif message == 0x71: #key blue
537 elif message == 0x73: #key green
539 elif message == 0x74: #key yellow
541 elif message == 0x44: #key play
542 if rcdevicename.find("advanced"):
543 key = int(164) # KEY_PLAYPAUSE
545 key = int(207) # KEY_PLAY
546 elif message == 0x46: #key pause
547 if rcdevicename.find("advanced"):
548 key = int(164) # KEY_PLAYPAUSE
550 key = int(119) # KEY_PAUSE
551 elif message == 0x45: #key stop
553 elif message == 0x47: #key record
555 elif message == 0x49: #fast forward
556 if rcdevicename.find("advanced"):
557 key = int(163) # KEY_NEXTSONG
559 key = int(208) # KEY_FASTFORWARD
560 elif message == 0x48: #rewind
561 if rcdevicename.find("advanced"):
562 key = int(165) # KEY_NEXTSONG
564 key = int(168) # KEY_FASTFORWARD
565 elif message == 0x60: #play 2
567 elif message == 0x61: #key pause 2
568 if rcdevicename.find("advanced"):
569 key = int(164) # KEY_PLAYPAUSE
571 key = int(119) # KEY_PAUSE
572 elif message == 0x64: #key stop 2
574 elif message == 0x62: #key record 2
576 #end translate keycodes
578 keyaction.keyPressed(rcdevicename, key, int(0))
579 keyaction.keyPressed(rcdevicename, key, int(1))