OpenELEC távirányító gomb testreszabása

Tegnap frissítettem az Openelec 4.2 Beta6-ra (ami 4.1.6 verziószám szerint :D) és egy soft-resetet is csináltam, ami viszont eltüntette az egyedi távirányító fájlomat. Mivel megint keresgélnem kellett a megoldás után, gondoltam most meg is örökítem, hátha egyszer még kelleni fog.

Az alap probléma: Az LG butatévém távirányítója HDMI-CEC-en keresztül csak a 4 iránygombot, az OK gombot, valamint a FR, FF, STOP, PLAY, PAUSE gombokat hajlandó átküldeni az OpenELEC-nek, így viszont sajnos nincs vissza gombom, amivel ki tudnék hátrálni az összes menüből.
Az én megoldásom: bindeljük át a távirányító Play gombjára a "Back" műveletet, hiszen a filmeket OK-al is el tudom indítani, illete a PAUSE gomb triggerként működik tehát a play-pause így is megoldott.
Nekem egy Raspberry Pi-n fut az OpenELEC, de valószínűleg más rendszeren is így működik a dolog.

Az egyes gombokhoz egyedi parancsokat a /storage/.xbmc/userdata/keymaps/remote.xml fájlban tudunk hozzáadni.
Ez a fájl alapból nem létezik, van viszont egy remek mintánk itt: /usr/share/xbmc/system/keymaps/remote.xml
A mintafájlban látszik, hogy az egyes gombokhoz a <gombneve>Művelet</gombneve> formátumú bejegyzéssel tudunk egyedi műveletet rendelni.

Először ki kell derítenünk, hogy hívja a rendszer a távirányító gombjait. Ehhez tegyük a következőt:

  • 1. kapcsoljuk be az SSH szervert az OpenELEC-ben (a SYSTEM->OpenELEC->Services lapon)
  • 2. kapcsoljuk be a Debug log-ot (a SYSTEM->Settings->System->Debugging menüben)
  • 3. lépjünk be SSH-n keresztül (user: root password: openelec)
  • 4. kezdjük el figyelni a logot: tail -f /storage/.xbmc/temp/xbmc.log
  • 5. Nyomkodjuk meg párszor azt a gombot amit át szeretnénk bindelni

A play gomb megnyomása nekem a következő bejegyzéseket produkálja:

...
14:06:26 T:2963272784 DEBUG: CecLogMessage - >> TV (0) -> Recorder 1 (1): user control pressed (44)
14:06:26 T:2963272784 DEBUG: CecLogMessage - key pressed: play (44)
14:06:26 T:2963272784 DEBUG: PushCecKeypress - received key ea duration 0
14:06:26 T:3059490816 DEBUG: OnKey: 234 (0xea) pressed, action is Play
...

Tehát a gomb neve 'play' és a jelenleg hozzárendelt művelet a 'Play'.
Gyártsunk akkor egy remote.xml-t ilyen tartalommal:

<keymap>
<global>
<remote>
<play>Back</play>
</remote>
</global>
</keymap>

Itt "global" szekció azt jelenti, hogy minden menüben legyen érvényes ez a "szabály" erre a gombra, a végrehajtandó művelet neve pedig logikusan "Back".
Mentsük el a fájlt, végül indítsuk újra a rendszert.

Ja és ha valaki átjön filmezni, ne felejtsük el tájékoztatni a változtatásról, különben néz majd nagyokat :)

Hozzászólások

thx.
raspbmc+LG tévéhez is tökéletes a fájl.