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 position="center,center" size="590,320" title="HDMI-CEC Plugin" >
32 <ePixmap pixmap="skin_default/buttons/red.png" position="20,0" size="140,40" alphatest="on" />
33 <ePixmap pixmap="skin_default/buttons/green.png" position="160,0" size="140,40" alphatest="on" />
34 <ePixmap pixmap="skin_default/buttons/yellow.png" position="300,0" size="140,40" alphatest="on" />
35 <ePixmap pixmap="skin_default/buttons/blue.png" position="440,0" size="140,40" alphatest="on" />
37 <widget source="key_red" render="Label" position="20,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ffffff" backgroundColor="#9f1313" transparent="1" />
38 <widget source="key_green" render="Label" position="160,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ffffff" backgroundColor="#1f771f" transparent="1" />
39 <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ffffff" backgroundColor="#a08500" transparent="1" />
40 <widget source="key_blue" render="Label" position="440,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ffffff" backgroundColor="#18188b" transparent="1" />
42 <widget name="config" zPosition="2" position="10,50" size="580,270" scrollbarMode="showOnDemand" transparent="1" />
45 def __init__(self, session):
46 Screen.__init__(self, session)
47 config.hdmicec.input_address = ConfigText(default = "0", visible_width = 50, fixed_size = False)
48 config.hdmicec.input_value1 = ConfigText(default = "0", visible_width = 50, fixed_size = False)
49 config.hdmicec.input_value2 = ConfigText(default = "", visible_width = 50, fixed_size = False)
50 config.hdmicec.input_value3 = ConfigText(default = "", visible_width = 50, fixed_size = False)
51 config.hdmicec.input_value4 = ConfigText(default = "", visible_width = 50, fixed_size = False)
52 config.hdmicec.avvolup = NoSave(ConfigNothing())
53 config.hdmicec.avvoldown = NoSave(ConfigNothing())
54 config.hdmicec.avvolmute = NoSave(ConfigNothing())
55 config.hdmicec.avpwroff = NoSave(ConfigNothing())
56 config.hdmicec.avpwron = NoSave(ConfigNothing())
57 config.hdmicec.tvpwroff = NoSave(ConfigNothing())
58 config.hdmicec.tvpwron = NoSave(ConfigNothing())
59 self["key_red"] = StaticText(_("Close"))
60 self["key_green"] = StaticText(_("Save"))
61 self["key_yellow"] = StaticText(_("Connect"))
62 self["key_blue"] = StaticText(_("Disconnect"))
63 self["shortcuts"] = ActionMap(["ShortcutActions", "SetupActions", "NumberActions" ],
66 "cancel": self.keyCancel,
67 "red": self.keyCancel,
68 "green": self.keySave,
69 "yellow": self.keyConnect,
70 "blue": self.keyDisconnect,
73 ConfigListScreen.__init__(self, self.list,session = session)
76 def createSetup(self):
78 self.hdmienabled = getConfigListEntry(_(_("HDMI CEC enabled:")), config.hdmicec.enabled)
79 self.hdmiactivesourcereply = getConfigListEntry(_(_("Active Source Reply On:")), config.hdmicec.active_source_reply)
80 self.hdmitvstandby = getConfigListEntry(_("VU standby => TV activity:"), config.hdmicec.standby_message)
81 self.hdmitvdeepstandby = getConfigListEntry(_("VU deepstandby => TV activity:"), config.hdmicec.deepstandby_message)
82 self.hdmitvwakeup = getConfigListEntry(_("VU on => TV activity:"), config.hdmicec.wakeup_message)
83 self.hdmivustandby = getConfigListEntry(_("TV standby => VU+ activity:"), config.hdmicec.vustandby_message)
84 self.hdmivuwakeup = getConfigListEntry(_("TV on => VU+ activity:"), config.hdmicec.vuwakeup_message)
85 self.hdmitvinput = getConfigListEntry(_("Choose TV HDMI input:"), config.hdmicec.tvinput)
86 self.hdmiavinput = getConfigListEntry(_("Choose A/V-Receiver HDMI input:"), config.hdmicec.avinput)
87 self.hdmiavvolup = getConfigListEntry(_("A/V-Receiver volume up:"), config.hdmicec.avvolup)
88 self.hdmiavvoldown = getConfigListEntry(_("A/V-Receiver volume down:"), config.hdmicec.avvoldown)
89 self.hdmiavvolmute = getConfigListEntry(_("A/V-Receiver toggle mute:"), config.hdmicec.avvolmute)
90 self.hdmiavpwron = getConfigListEntry(_("A/V-Receiver power on:"), config.hdmicec.avpwron)
91 self.hdmiavpwroff = getConfigListEntry(_("A/V-Receiver power off:"), config.hdmicec.avpwroff)
92 self.hdmitvpwron = getConfigListEntry(_("TV power on:"), config.hdmicec.tvpwron)
93 self.hdmitvpwroff = getConfigListEntry(_("TV power off:"), config.hdmicec.tvpwroff)
94 self.hdmienabletvrc = getConfigListEntry(_("Use TV remotecontrol:"), config.hdmicec.enabletvrc)
95 self.hdmidevicename = getConfigListEntry(_("Set VU device name:"), config.hdmicec.devicename)
96 self.hdmiinputaddress = getConfigListEntry(_("Address (0~FF):"), config.hdmicec.input_address)
97 self.hdmiinputvalue1 = getConfigListEntry("Value 1 (message):", config.hdmicec.input_value1)
98 self.hdmiinputvalue2 = getConfigListEntry("Value 2 (optional):", config.hdmicec.input_value2)
99 self.hdmiinputvalue3 = getConfigListEntry("Value 3 (optional):", config.hdmicec.input_value3)
100 self.hdmiinputvalue4 = getConfigListEntry("Value 4 (optional):", config.hdmicec.input_value4)
101 self.hdmilogenabledfile = getConfigListEntry("Log to file enabled :", config.hdmicec.logenabledfile)
102 self.hdmilogenabledserial = getConfigListEntry("Serial log enabled :", config.hdmicec.logenabledserial)
103 # self.list.append( self.hdmiinputaddress )
104 # self.list.append( self.hdmiinputvalue1 )
105 # self.list.append( self.hdmiinputvalue2 )
106 # self.list.append( self.hdmiinputvalue3 )
107 # self.list.append( self.hdmiinputvalue4 )
108 # self.list.append( self.hdmilogenabledfile )
109 self.list.append( self.hdmienabled )
110 if config.hdmicec.enabled.value is True:
111 self.list.append( self.hdmidevicename )
112 self.list.append( self.hdmitvinput )
113 self.list.append( self.hdmiavinput )
114 self.list.append( self.hdmivuwakeup )
115 self.list.append( self.hdmivustandby )
116 self.list.append( self.hdmitvwakeup )
117 self.list.append( self.hdmitvstandby )
118 self.list.append( self.hdmitvdeepstandby )
119 if config.hdmicec.avinput.value is not "0":
120 self.list.append( self.hdmiavvolup )
121 self.list.append( self.hdmiavvoldown )
122 self.list.append( self.hdmiavvolmute )
123 self.list.append( self.hdmiavpwron )
124 self.list.append( self.hdmiavpwroff )
125 self.list.append( self.hdmitvpwron )
126 self.list.append( self.hdmitvpwroff )
127 self.list.append( self.hdmienabletvrc )
128 self.list.append( self.hdmiactivesourcereply )
129 self.list.append( self.hdmilogenabledserial )
130 self["config"].list = self.list
131 self["config"].l.setList(self.list)
133 def keyDisconnect(self):
136 physaddress1 = int("0x" + str(config.hdmicec.tvinput.value) + str(config.hdmicec.avinput.value),16)
137 physaddress2 = int("0x00",16)
138 address = int('0',16)
139 cecmessage = int('0x9D',16)
140 cecmessagetwo = physaddress1
141 cecmessagethree = physaddress2
142 cmd = struct.pack('BBB',cecmessage,cecmessagetwo,cecmessagethree)
143 logcmd = "[HDMI-CEC] send cec message %x:%x:%x to %x" % (cecmessage,cecmessagetwo,cecmessagethree,address)
146 eHdmiCEC.getInstance().sendMessage(address, len(cmd), str(cmd))
149 if config.hdmicec.logenabledserial.value:
151 if config.hdmicec.logenabledfile.value:
152 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmd)
158 addresstmp=config.hdmicec.input_address.value
159 tmp1=config.hdmicec.input_value1.value
160 tmp2=config.hdmicec.input_value2.value
161 tmp3=config.hdmicec.input_value3.value
162 tmp4=config.hdmicec.input_value4.value
163 address=int(addresstmp,16)
164 if address not in range(0,256):
171 if val1 not in range(0,256):
173 if val2 not in range(0,256):
175 if val3 not in range(0,256):
177 if val4 not in range(0,256):
179 cmd = struct.pack('BBBB',val1,val2,val3,val4)
180 logcmd = "[HDMI-CEC] ** Test Message ** Send message value: %x:%x:%x:%x to address %x" % (val1,val2,val3,val4,address)
187 if val1 not in range(0,256):
189 if val2 not in range(0,256):
191 if val3 not in range(0,256):
193 cmd = struct.pack('BBB',val1,val2,val3)
194 logcmd = "[HDMI-CEC] ** Test Message ** Send message value: %x:%x:%x to address %x" % (val1,val2,val3,address)
200 if val1 not in range(0,256):
202 if val2 not in range(0,256):
204 cmd = struct.pack('BB',val1,val2)
205 logcmd = "[HDMI-CEC] ** Test Message ** Send message value: %x:%x to address %x" % (val1,val2,address)
208 if val1 not in range(0,256):
210 cmd = struct.pack('B',val1)
211 logcmd = "[HDMI-CEC] ** Test Message ** Send message value: %x to address %x" % (val1, address)
214 eHdmiCEC.getInstance().sendMessage(address, len(cmd), str(cmd))
217 if config.hdmicec.logenabledserial.value:
219 if config.hdmicec.logenabledfile.value:
220 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmd)
226 if self["config"].getCurrent() == self.hdmiavvolup:
227 address = int("5",16)
228 cecmessage = int("44",16)
229 cecmessagetwo = int("41",16)
230 cmd = struct.pack('BB',cecmessage,cecmessagetwo)
231 logcmd = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
232 elif self["config"].getCurrent() == self.hdmiavvoldown:
233 address = int("5",16)
234 cecmessage = int("44",16)
235 cecmessagetwo = int("42",16)
236 cmd = struct.pack('BB',cecmessage,cecmessagetwo)
237 logcmd = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
238 elif self["config"].getCurrent() == self.hdmiavvolmute:
239 address = int("5",16)
240 cecmessage = int("44",16)
241 cecmessagetwo = int("43",16)
242 cmd = struct.pack('BB',cecmessage,cecmessagetwo)
243 logcmd = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
244 elif self["config"].getCurrent() == self.hdmiavpwron:
245 address = int("5",16)
246 cecmessage = int("44",16)
247 cecmessagetwo = int("6D",16)
248 cmd = struct.pack('BB',cecmessage,cecmessagetwo)
249 logcmd = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
250 elif self["config"].getCurrent() == self.hdmiavpwroff:
251 address = int("5",16)
252 cecmessage = int("44",16)
253 cecmessagetwo = int("6C",16)
254 cmd = struct.pack('BB',cecmessage,cecmessagetwo)
255 logcmd = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
256 elif self["config"].getCurrent() == self.hdmitvpwroff:
257 address = int("0",16)
258 cecmessage = int("36",16)
259 cmd = struct.pack('B',cecmessage)
260 logcmd = "[HDMI-CEC] send cec message %x to %x" % (cecmessage,address)
261 elif self["config"].getCurrent() == self.hdmitvpwron:
262 address = int("0",16)
263 cecmessage = int("04",16)
264 cmd = struct.pack('B',cecmessage)
265 logcmd = "[HDMI-CEC] send cec message %x to %x" % (cecmessage,address)
267 ConfigListScreen.keySave(self)
269 eHdmiCEC.getInstance().sendMessage(address, len(cmd), str(cmd))
270 messagecmd = int("45",16)
273 if config.hdmicec.logenabledserial.value:
275 if config.hdmicec.logenabledfile.value:
276 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmd)
279 def keyConnect(self):
282 messageReceived(address, message)
285 ConfigListScreen.keyLeft(self)
286 if self["config"].getCurrent() == self.hdmienabled:
288 if self["config"].getCurrent() == self.hdmiavinput:
292 ConfigListScreen.keyRight(self)
293 if self["config"].getCurrent() == self.hdmienabled:
295 if self["config"].getCurrent() == self.hdmiavinput:
302 ConfigListScreen.keySave(self)
304 def openconfig(session, **kwargs):
305 session.open(HdmiCecPlugin)
307 def autostart(reason, **kwargs):
309 if kwargs.has_key("session") and reason == 0:
310 session = kwargs["session"]
311 eHdmiCEC.getInstance().messageReceived.get().append(messageReceived)
312 eHdmiCEC.getInstance().messageReceivedKey.get().append(messageReceivedKey)
314 def Plugins(**kwargs):
315 return [PluginDescriptor(name=_("HDMI-CEC"), description="HDMI-CEC Configuration", where = PluginDescriptor.WHERE_PLUGINMENU, needsRestart = True, fnc=openconfig),
316 PluginDescriptor(where = [PluginDescriptor.WHERE_SESSIONSTART, PluginDescriptor.WHERE_AUTOSTART], fnc = autostart)]
318 def messageReceived(address, message):
319 logcmd = "[HDMI-CEC] received cec message %x from %x" % (message, address)
321 if config.hdmicec.logenabledserial.value:
323 if config.hdmicec.logenabledfile.value:
324 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmd)
327 if config.hdmicec.enabled.value is True:
328 from Screens.Standby import inStandby
329 from Screens.Standby import Standby
337 physaddress1 = int("0x" + str(config.hdmicec.tvinput.value) + str(config.hdmicec.avinput.value),16)
338 physaddress2 = int("0x00",16)
340 addresstv = int("0x00",16)
341 addressav = int("0x05",16)
342 addressglobal = int("0x0F",16)
344 powerstatereportmessage = int("0x90",16)
345 powerstate = int("0x00",16)
347 physaddressmessage = int('0x84',16)
348 devicetypmessage = int('0x03',16)
350 activesourcemessage = int('0x82',16)
352 menuonmessage = int('0x8E',16)
353 menustatemessage = int('0x00',16)
355 setnamemessage = int('0x47',16)
357 sendkeymessage = int("44",16)
358 sendkeypwronmessage = int("6D",16)
359 sendkeypwroffmessage = int("6C",16)
361 if message == 0x8f: # request power state
363 cecmessage = powerstatereportmessage
364 cecmessagetwo = powerstate
365 cmd = struct.pack('BB',cecmessage,cecmessagetwo)
366 logcmd = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
368 elif message == 0x83: # request physical address
369 address = addressglobal
370 cecmessage = physaddressmessage
371 cecmessagetwo = physaddress1
372 cecmessagethree = physaddress2
373 cecmessagefour = devicetypmessage
374 cmd = struct.pack('BBBB',cecmessage,cecmessagetwo,cecmessagethree,cecmessagefour)
375 logcmd = "[HDMI-CEC] send cec message %x:%x:%x:%x to %x" % (cecmessage,cecmessagetwo,cecmessagethree,cecmessagefour,address)
377 elif message == 0x86: # request streampath
378 address = addressglobal
379 cecmessage = activesourcemessage
380 cecmessagetwo = physaddress1
381 cecmessagethree = physaddress2
382 cmd = struct.pack('BBB',cecmessage,cecmessagetwo,cecmessagethree)
383 logcmd = "[HDMI-CEC] send cec message %x:%x:%x to %x" % (cecmessage,cecmessagetwo,cecmessagethree,address)
385 if config.hdmicec.enabletvrc.value:
386 addresstwo = addresstv
387 cecmessage = menuonmessage
388 cecmessagetwo = menustatemessage
389 cmdtwo = struct.pack('BB',cecmessage,cecmessagetwo)
390 logcmdtwo = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
392 elif message == 0x8d: # request menu state
393 if config.hdmicec.enabletvrc.value:
395 cecmessage = menuonmessage
396 cecmessagetwo = menustatemessage
397 cmd = struct.pack('BB',cecmessage,cecmessagetwo)
398 logcmd = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
400 elif message == 0x46: # request device name
402 cecmessage = setnamemessage
403 if config.hdmicec.devicename.value == "vuduo":
404 cecmessagetwo ="VU+ Duo"
405 cmd = struct.pack('B8s',cecmessage,cecmessagetwo)
406 elif config.hdmicec.devicename.value == "vusolo":
407 cecmessagetwo ="VU+ Solo"
408 cmd = struct.pack('B9s',cecmessage,cecmessagetwo)
409 elif config.hdmicec.devicename.value == "vuuno":
410 cecmessagetwo ="VU+ Uno"
411 cmd = struct.pack('B8s',cecmessage,cecmessagetwo)
412 elif config.hdmicec.devicename.value == "vuultimo":
413 cecmessagetwo ="VU+ Ultimo"
414 cmd = struct.pack('B8s',cecmessage,cecmessagetwo)
417 cmd = struct.pack('B4s',cecmessage,cecmessagetwo)
418 logcmd = "[HDMI-CEC] send cec message %x:%s to %x" % (cecmessage,cecmessagetwo,address)
420 elif message == 0x85: # request active source
422 address = addressglobal
423 cecmessage = activesourcemessage
424 cecmessagetwo = physaddress1
425 cecmessagethree = physaddress2
426 cmd = struct.pack('BBB',cecmessage,cecmessagetwo,cecmessagethree)
427 logcmd = "[HDMI-CEC] send cec message %x:%x:%x to %x" % (cecmessage,cecmessagetwo,cecmessagethree,address)
429 if config.hdmicec.enabletvrc.value:
430 addresstwo = addresstv
431 cecmessage = menuonmessage
432 cecmessagetwo = menustatemessage
433 cmdtwo = struct.pack('BB',cecmessage,cecmessagetwo)
434 logcmdtwo = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
437 if config.hdmicec.vuwakeup_message.value == "vuwakeup":
439 address = addressglobal
440 cecmessage = activesourcemessage
441 cecmessagetwo = physaddress1
442 cecmessagethree = physaddress2
443 cmd = struct.pack('BBB',cecmessage,cecmessagetwo,cecmessagethree)
444 logcmd = "[HDMI-CEC] send cec message %x:%x:%x to %x" % (cecmessage,cecmessagetwo,cecmessagethree,address)
446 if config.hdmicec.enabletvrc.value:
447 addresstwo = addresstv
448 cecmessage = menuonmessage
449 cecmessagetwo = menustatemessage
450 cmdtwo = struct.pack('BB',cecmessage,cecmessagetwo)
451 logcmdtwo = "[HDMI-CEC] send cec message %x:%x to %x" % (cecmessage,cecmessagetwo,address)
453 elif message == 0x36:
454 if config.hdmicec.vustandby_message.value == "vustandby":
455 if inStandby == None:
456 logcmd = "[HDMI-CEC] VU+ STB goto standby"
457 session.open(Standby)
458 elif config.hdmicec.vustandby_message.value == "vudeepstandby":
459 import Screens.Standby
460 logcmd = "[HDMI-CEC] VU+ STB goto deepstandby"
461 session.open(Screens.Standby.TryQuitMainloop,1)
464 eHdmiCEC.getInstance().sendMessage(address, len(cmd), str(cmd))
466 eHdmiCEC.getInstance().sendMessage(addresstwo, len(cmdtwo), str(cmdtwo))
469 if config.hdmicec.logenabledserial.value:
471 if config.hdmicec.logenabledfile.value:
472 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmd)
475 if config.hdmicec.logenabledserial.value:
477 if config.hdmicec.logenabledfile.value:
478 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmdtwo)
481 def messageReceivedKey(address, message):
482 logcmd = "[HDMI-CEC] received cec message part two %x from %x" % (message, address)
484 if config.hdmicec.logenabledserial.value:
486 if config.hdmicec.logenabledfile.value:
487 filelog = "echo %s >> /tmp/hdmicec.log" % (logcmd)
489 if config.hdmicec.enabled.value is True:
490 rcdevicename = iInputDevices.getDeviceName('event0') # hschang : get rc device name, /dev/input/event0
491 keyaction = eActionMap.getInstance()
493 #start translate keycodes
494 if message == 0x32 or message == 0x09: #key menu
496 elif message == 0x20: #key 0
498 elif message == 0x21: #key 1
500 elif message == 0x22: #key 2
502 elif message == 0x23: #key 3
504 elif message == 0x24: #key 4
506 elif message == 0x25: #key 5
508 elif message == 0x26: #key 6
510 elif message == 0x27: #key 7
512 elif message == 0x28: #key 8
514 elif message == 0x29: #key 10
516 elif message == 0x30: #key bouquet up
518 elif message == 0x31: #key bouquet down
520 elif message == 0x53: #key info/epg
522 elif message == 0x00: #key ok
524 elif message == 0x03: #key left
526 elif message == 0x04: #key right
528 elif message == 0x01: #key up
530 elif message == 0x02: #key down
532 elif message == 0x0d: #key exit
534 elif message == 0x72: #key red
536 elif message == 0x71: #key blue
538 elif message == 0x73: #key green
540 elif message == 0x74: #key yellow
542 elif message == 0x44: #key play
543 if rcdevicename.find("advanced"):
544 key = int(164) # KEY_PLAYPAUSE
546 key = int(207) # KEY_PLAY
547 elif message == 0x46: #key pause
548 if rcdevicename.find("advanced"):
549 key = int(164) # KEY_PLAYPAUSE
551 key = int(119) # KEY_PAUSE
552 elif message == 0x45: #key stop
554 elif message == 0x47: #key record
556 elif message == 0x49: #fast forward
557 if rcdevicename.find("advanced"):
558 key = int(163) # KEY_NEXTSONG
560 key = int(208) # KEY_FASTFORWARD
561 elif message == 0x48: #rewind
562 if rcdevicename.find("advanced"):
563 key = int(165) # KEY_NEXTSONG
565 key = int(168) # KEY_FASTFORWARD
566 elif message == 0x60: #play 2
568 elif message == 0x61: #key pause 2
569 if rcdevicename.find("advanced"):
570 key = int(164) # KEY_PLAYPAUSE
572 key = int(119) # KEY_PAUSE
573 elif message == 0x64: #key stop 2
575 elif message == 0x62: #key record 2
577 #end translate keycodes
579 keyaction.keyPressed(rcdevicename, key, int(0))
580 keyaction.keyPressed(rcdevicename, key, int(1))