Saltar al contenido
Portada » Personalizar los botones de un mando a distancia para XMBC en una Raspecrry Pi con Openelec

Personalizar los botones de un mando a distancia para XMBC en una Raspecrry Pi con Openelec

Una de las características más interesantes de Raspberry Pi y Openelec es que son compatibles con HDMI CEC. Esto quiere decir que utilizando un televisor compatible con esta tecnología, podemos controlar la Raspberry con el mando a distancia. En algunos casos los botones se corresponderán correctamente con lo que queremos que hagan pero en otros los tendremos que configurar nosotros mismos. Voy a explicar cómo lo he hecho yo para configurar el mío.

Este post pertenece a una serie de posts sobre Raspberry Pi:

  1. Primeros pasos con una Raspberry Pi
  2. Personalizar los botones de un mando a distancia para XMBC en una Raspecrry Pi con Openelec
  3. Configurar SAMBA en la Raspberry Pi con Openelec y disco duro externo

Tengo un mando de LG y al utilizarlo por primera vez me di cuenta de que no tenía manera de mostrar los menús contextuales para, por ejemplo, establecer el contenido de un directorio o actualizar la biblioteca.

Activar el modo debug de XMBC y registrar las pulsaciones del mando

En primer lugar tenemos que saber qué botones del mando está detectando XBMC. Para ello activaremos el modo depuración en Ajustes > Sistema. Una vez activado nos aparecerá en la parte superior izquierda de la pantalla dónde se encuentra el archivo de logs, la memoria consumida y la CPU.

En el archivo de log será donde aparecerán las pulsaciones del mando a distancia, así que lo tendremos que revisar en tiempo real para ver cuales detecta. Para ello, utilizando el terminal, accediendo mediante SSH introduciremos el siguiente comando:

tail -f /storage/.xbmc/temp/xbmc.log |grep OnKey:

Si pulsamos un botón del mando, quedará registrado así:

21:24:07 T:3041906688   DEBUG: OnKey: 166 (a6) pressed, action is Up
21:24:08 T:3041906688   DEBUG: OnKey: 168 (a8) pressed, action is Right

De esta manera sabremos qué teclas se detectan, lo que dependerá principalmente del fabricante de la tele y del mando. A la izquierda aparecerá el id de la tecla y a la derecha la acción que se está ejecutando. En mi caso, tras hacer pruebas, las teclas que se han detectado son las que están marcadas en amarillo.

Mando a distancia LG AKB72915244 Mando a distancia LG AKB72915244

Crear el archivo remote.xml personalizado

Ahora que sabemos qué teclas detecta la Raspberry, tendremos que crear nuestro propio archivo de configuración. Existen varios tipos de archivos de configuración del mapeado de teclas: keyboard.xml, gamepad.xml, etc. A nosotros nos interesa remote.xml, que es el que define la configuración de un mando a distancia.

Por defecto, los archivos de configuración se encuentran en la siguiente ruta:

/usr/share/xbmc/system/keymaps/

Perso nosotros deberemos crear nuestro propio archivo, que sobreescribirá la configuración por defecto (sin cargárnosla) en la siguiente ruta:

/storage/.xbmc/userdata/keymaps

Ahí crearemos un archivo remote.xml

nano remote.xml

En mi caso, con el siguiente contenido:

<keymap>
        <global>
                <remote>
                        <skipminus>back</skipminus>
                        <skipplus>ContextMenu</skipplus>
                        <stop>XBMC.ActivateWindow(Home)</stop>
                </remote>
        </global>
        <home>
                <remote>

<skipminus>XBMC.ActivateWindow(VideoLibrary,TvShowTitles)</skipminus>

<skipplus>XBMC.ActivateWindow(VideoLibrary,addons://sources/video/)</skipplus>
                        <reverse>XBMC.ActivateWindow(VideoLibrary,MovieTitles)</reverse>
                </remote>
        </home>
        <FullScreenVideo>
                <remote>
                        <select>Info</select>
                        <pause>pause</pause>
                        <stop>stop</stop>
                        <left>VolumeDown</left>
                        <right>VolumeUp</right>
                        <up>ShowSubtitles</up>
                        <down>AudioNextLanguage</down>
                        <skipminus>StepBack</skipminus>
                        <skipplus>StepForward</skipplus>
                        <forward>VolumeUp</forward>
                </remote>
        </FullScreenVideo>
</keymap>

En el xml, los elementos más internos son las acciones de XBMC, de las que tenéis una lista en el wiki oficial. Los elementos que rodean las acciones son los identificadores de los botones (select, pause, forward, etc.). Hacia fuera luego nos encontramos con el tipo de control que estamos definiendo (en este caso “remote”). El siguiente elemento indica en qué lugar de la interfaz de XBMC funcionará esa pulsación: en cualquier parte (global), en la pantalla principal (home) o cuando vemos un vídeo (FullScreenVideo).

Por ejemplo, yo he puesto para que en cualquier sitio (global), al pulsar la tecla “skipplus” se ejecute la acción “ContextMenu”, que muestra un menú contextual. También que al pulsar “arriba” durante una reproducción, cambie la pista de subtítulos y pulsando “abajo” cambie la pista de audio.

No he encontrado una manera de saber los nombres de los botones, ha sido probando y comparando con el archivo de configuración original, que es donde debéis buscar para identificarlas.

Para que os resulte más cómodo, podéis descargaros por SSH el archivo remote.xml original a vuestro ordenador:

scp root@192.168.1.100:/usr/share/xbmc/system/keymaps/remote.xml /Volumes/Macintosh HD/rene

Una buena forma de saber vuestra ruta local, es simplemente arrastrando el directorio desde el Finder.

Cada vez que realicéis un cambio y queráis probar si funciona, tendréis que reiniciar la Raspberry para ver los cambios. Una vez finalizado podréis desactivar el modo depuración y disfrutar con vuestro mando a distancia (qué mal suena eso).

Espero que os haya resultado útil. Ya hubiera querido yo tener este post cuando empecé a trastear con la Raspberry Pi. 🙂