Hallo allerseits,
gestern, nach einer Anregung aus der MVPSERVER Mailingliste, ist es mir gelungen, das Zapping in der MVP-Server Anwendung gangbar zu machen.
War eigentlich nicht so schwer.
Wer es ausprobieren möchte, folgendes ist zu tun:
a) Anpassen der keymap.py (normalerweise in /usr/shared/mvpserver/skins/utils)
# Keymap for the original Hauppauge remote
# [ name, menukey, mediakey ]
small_keymap = {
'0x01':['0', '0', 'SKIP0'],
'0x02':['1', '1', 'SKIP10'],
'0x03':['2', '2', 'SKIP20'],
'0x04':['3', '3', 'SKIP30'],
'0x05':['4', '4', 'SKIP40'],
'0x06':['5', '5', 'SKIP50'],
'0x07':['6', '6', 'SKIP60'],
'0x08':['7', '7', 'SKIP70'],
'0x09':['8', '8', 'SKIP80'],
'0x0a':['9', '9', 'SKIP90'],
'0x0d':['OK', 'OK', 'OK'],
'0x0e':['Rewind', '', 'REWIND'],
'0x0f':['Forward', '', 'FORWARD'],
'0x10':['Vol-', 'LEFT', 'VOLDOWN'],
'0x11':['Vol+', 'RIGHT', 'VOLUP'],
'0x12':['Ch+', 'UP', ''],
'0x13':['Ch-', 'DOWN', ''],
'0x14':['Power', '', 'SHUTDOWN'],
'0x15':['Mute', '', 'MUTE'],
'0x19':['Play', 'OK', 'PLAY'],
'0x1a':['Record', '', ''],
'0x1b':['Stop', '', 'STOP'],
'0x1c':['Pause', '', 'PAUSE'],
'0x1e':['Menu', 'MENU', ''],
'0x20':['Back', 'BACK', ''],
'0x23':['Go', '', ''],
'0x24':['Red', 'RED', ''],
'0x25':['Green', 'GREEN', 'SKIPBACK'],
'0x26':['Yellow', 'YELLOW', 'SKIPFWD'],
'0x27':['Blue', 'BLUE', ''],
'0x28':['Blank', 'BLANK', ''],
'0x29':['Full', '', ''],
'0x2a':['Replay', 'SKIPBACK', 'SKIPBACK'],
'0x2b':['Skip', 'SKIPFWD', 'SKIPFWD'] }
# Keymap for the new remote
large_keymap = {
'0x01':['0', '0', 'SKIP0'],
'0x02':['1', '1', 'SKIP10'],
'0x03':['2', '2', 'SKIP20'],
'0x04':['3', '3', 'SKIP30'],
'0x05':['4', '4', 'SKIP40'],
'0x06':['5', '5', 'SKIP50'],
'0x07':['6', '6', 'SKIP60'],
'0x08':['7', '7', 'SKIP70'],
'0x09':['8', '8', 'SKIP80'],
'0x0a':['9', '9', 'SKIP90'],
'0x0d':['OK', 'OK', 'OK'],
'0x0e':['Rewind', '', 'REWIND'],
'0x0f':['Forward', '', 'FORWARD'],
'0x10':['Left', 'LEFT', ''],
'0x11':['Right', 'RIGHT', ''],
'0x12':['Up', 'UP', ''],
'0x13':['Down', 'DOWN', ''],
'0x14':['Power', '', 'SHUTDOWN'],
'0x15':['Mute', '', 'MUTE'],
'0x19':['Play', 'OK', 'PLAY'],
'0x1a':['Record', '', ''],
'0x1b':['Stop', '', 'STOP'],
'0x1c':['Pause', '', 'PAUSE'],
'0x1e':['Menu', 'MENU', ''],
'0x1f':['Guide', '', ''],
'0x20':['Back', 'BACK', ''],
'0x23':['Go', '', ''],
'0x24':['Red', 'RED', ''],
'0x25':['Green', 'GREEN', 'SKIPBACK'],
'0x26':['Yellow', 'YELLOW', 'SKIPFWD'],
'0x27':['Blue', 'BLUE', ''],
'0x28':['Blank', 'BLANK', ''],
'0x29':['Full', '', ''],
'0x2a':['Replay', 'SKIPBACK', 'SKIPBACK'],
'0x2b':['Skip', 'SKIPFWD', 'SKIPFWD'],
'0x2c':['TV', '', ''],
'0x2d':['Videos', '', ''],
'0x2e':['Music', '', ''],
'0x2f':['Pictures', '', ''],
'0x30':['Radio', '', ''],
'0x31':['Vol+', '', 'VOLUP'],
'0x32':['Vol-', '', 'VOLDOWN'],
'0x33':['Ch+', 'UP', ''],
'0x34':['Ch-', 'DOWN', ''],
'0x35':['PrevCh', '', ''],
'0x36':['*', '', ''],
'0x37':['Subtitles', '', ''] }
_keymap = None
UND
def process_key(code):
"""Process a raw key code. This will handle any commands initially and then
return an action. If the action is '' then none should be performed.
"""
print 'Handle code ', code
ret = 0
if mediamvp.Playing() != '':
key = mediakey(code)
if key != '' and key !='OK':
ret = mediamvp.Command(key)
key = ''
key = ''
if ret == 0:
key = menukey(code)
print 'Returning ', key
b) Anpassen der vdtv.py Datei (normalerweise in login as: root
/usr/shared/mvpserver/skins/default):
(nahe def menu(...)
if k =='':
continue
if k =='EXIT' or k == 'BACK':
quit = 1
elif k == 'MENU':
if self.enabled:
self.enabled = 0
else:
self.enabled = 1
elif k == 'LEFT':
hlist.left()
dlist = self.getchannels(hlist,1)
elif k == 'RIGHT':
hlist.right()
dlist = self.getchannels(hlist,1)
elif k == 'SKIPFWD':
dlist.lineDown()
# Check there's an item here!
if item:
channel = item.getChannel()
if channel.vpid == '0':
type = 'ES/'
else:
type = 'PES/'
url = self.config.getAsString("vdr.streamdev_url")
url += type
url += channel.id
mediamvp.Play(url)
elif k == 'SKIPFWD':
dist.lineUp()
# Check there's an item here!
if item:
channel = item.getChannel()
if channel.vpid == '0':
type = 'ES/'
else:
type = 'PES/'
url = self.config.getAsString("vdr.streamdev_url")
url += type
url += channel.id
mediamvp.Play(url)
elif k == 'DOWN':
dlist.lineDown()
elif k == 'UP':
dlist.lineUp()
elif k == 'GREEN':
dlist.pageDown()
elif k == 'YELLOW':
dlist.pageUp()
Damit kann man dann mit den Skip Tasten (auf der "Hauppauge-Fernbedienung" ganz unten, während des TV sehens umschalten. (Geht zur Zeit erst beim 2. mal).
Ist noch alles ein bisschen "dirty", aber ich werde heute abend nochmal alles nachschauen und bei interesse besser dokumentieren...
Vielleicht wage ich mich ja auch an die erstellung einers .diff (habe ich noch nie gemacht)...
Ich hoffe, ich kann damit ein bisschen helfen,
Zorin