HOWTO: Usar el apple remote en GNU/Linux sin configurar LIRC
De Magarto - Wiki
El artículo lo escribí originalmente aquí.
Este tutorial que, tras varios días, he terminado está pensado para Ubuntu y para Macbooks (al menos los C2D), aunque puede ser funcional para cualquier otra distribución de GNU/Linux como Debian, Gentoo, … cambiando varios códigos en el archivo que adjunto en función de las teclas de vuestro mando a distancia y siempre que la versión del kernel sea menor de la 2.6.21, ya que el módulo appleir está desactivado a posteri. En ese caso debéis usar este otro tutorial: HOWTO: LIRC en macbook, macbook pro, macmini, imac, ...
Para los que no conozcan LIRC (Linux InfraRed Controller), esta utilidad consisten en un demonio que monitoriza un evento de /dev/input/eventX, cierra el acceso a él y ejecuta una serie de utilidades en función de lo que hayamos configurado y del programa que estemos ejecutando. El grave problema de LIRC es que se consigue con muy pocos mandos a distancia en muy pocas capturadoras, y siempre surgen múltiples problemas, de hecho yo nunca lo he conseguido hacer funcionar.
Por estas razones, decidí hacer el tutorial partiendo de otra utilidad que no necesita de los ficheros de configuración de lircd.conf que se las traen, si no simplemente del fichero lircrc donde pones la configuración, ya que monitorea todos los eventos y no necesita un uso exclusivo.
En el caso de los macbooks, macmini… tenemos el grave problema de sólo disponer de 6 botones.
- Lo primero es instalar el demonio inputlirc, lirc (lo necesitamos aunque no lo usemos).
sudo apt-get install inputlirc lirc lirc-x
- A continuación añadimos este demonio al arranque. Para ello editamos el fichero /etc/rc.local (como superusuario) y añadimos al principio, la entrada:
/etc/init.d/inputlirc start
- Ya que aún no hemos reiniciado, haremos que esta función se ejecute ahora. Así que ejecutamos lo anterior en una terminal
- Ahora copiamos el siguiente fichero en /etc/lirc/lircrc
################################################## #### Change mode #### IT WORKS! ################## ################################################## begin prog = irexec button = KEY_PLAYPAUSE mode = amarok config = echo "Modo amarok" end begin prog = irexec button = KEY_NEXTSONG mode = kaffeine config = echo "Modo kaffeine" end #begin # prog = irexec # button = KEY_PREVIOUSSONG # mode = kaffeine # config = echo "Modo kaffeine" #end ############# #### VLC #### ############# begin prog = vlc button = KEY_PLAYPAUSE config = key-play-pause repeat = 0 end begin prog = vlc button = KEY_MENU config = key-stop repeat = 0 end begin prog = vlc button = KEY_PREVIOUSSONG config = key-jump-1min repeat = 1 end begin prog = vlc button = KEY_NEXTSONG config = key-jump+short repeat = 1 end begin prog = vlc button = KEY_VOLUMEUP config = key-vol-short repeat = 1 end begin prog = vlc button = KEY_VOLUMEDOWN config = key-vol-down repeat = 1 end ################# #### MPlayer #### ################# #begin mplayer begin prog = mplayer button = KEY_PLAYPAUSE config = pause repeat = 15 end begin prog = mplayer button = KEY_MENU config = stop repeat = 15 end begin prog = mplayer button = KEY_PREVIOUSSONG config = seek -10 repeat = 10 end begin prog = mplayer button = KEY_NEXTSONG config = seek +10 repeat = 10 end begin prog = mplayer button = KEY_VOLUMEUP config = volume 1 repeat = 1 end begin prog = mplayer button = KEY_VOLUMEDOWN config = volume -1 repeat = 1 end #end mplayer ################## #### Kaffeine #### ################## begin kaffeine begin prog = irexec button = config = dcop kaffeine MainApplication-Interface end begin prog = irexec button = KEY_PLAYPAUSE config = if `dcop kaffeine KaffeineIface isPlaying`; then dcop kaffeine KaffeineIface pause; dcop kaffeine kaffeine_mainview hide; else dcop kaffeine KaffeineIface play; dcop kaffeine kaffeine_mainview hide; fi end begin prog = irexec button = KEY_MENU repeat = 1 config = dcop kaffeine KaffeineIface stop end begin prog = irexec button = KEY_NEXTSONG repeat = 1 config = dcop kaffeine KaffeineIface posPlus end begin prog = irexec button = KEY_PREVIOUSSONG repeat = 1 config = dcop kaffeine KaffeineIface posMinus end begin prog = irexec button = KEY_VOLUMEUP repeat = 1 config = dcop kaffeine KaffeineIface volUp end begin prog = irexec button = KEY_VOLUMEDOWN repeat = 1 config = dcop kaffeine KaffeineIface volDown end end kaffeine ################ #### Amarok #### ################ begin amarok begin prog = irexec button = KEY_PLAYPAUSE config = dcop amarok player playPause end begin prog = irexec button = KEY_MENU config = dcop amarok player stop end begin prog = irexec button = KEY_NEXTSONG config = dcop amarok player next end begin prog = irexec button = KEY_PREVIOUSSONG config = dcop amarok player prev end begin prog = irexec button = KEY_VOLUMEUP repeat = 1 config = dcop amarok player volumeUp end begin prog = irexec button = KEY_VOLUMEDOWN repeat = 1 config = dcop amarok player volumeDown end end amarok ############### #### Totem #### ############### begin prog = irxeveniret button = KEY_PLAYPAUSE config = Key p Totem repeat = 0 end begin prog = irexec button = KEY_MENU config = stop repeat = 0 end begin prog = Totem button = KEY_NEXTSONG config = seek_forward repeat = 0 end begin prog = Totem button = KEY_PREVIOUSSONG config = seek_backward repeat = 0 end begin prog = irexec button = KEY_VOLUMEUP repeat = 10 config = end begin prog = irexec button = KEY_VOLUMEDOWN repeat = 10 config = end ################### #### Audacious #### ################### begin prog = audacious button = KEY_PLAYPAUSE config = PAUSE repeat = 16 end begin prog = audacious button = KEY_MENU config = STOP repeat = 0 end begin prog = audacious button = KEY_NEXTSONG config = NEXT repeat = 16 end begin prog = audacious button = KEY_PREVIOUSSONG config = PREV repeat = 16 end ############## #### XMMS #### ############## begin prog = xmms button = KEY_PLAYPAUSE config = pause end begin prog = xmms button = KEY_MENU config = stop end begin prog = xmms button = KEY_NEXTSONG config = next repeat = 16 end begin prog = xmms button = KEY_PREVIOUSSONG config = prev repeat = 16 end begin prog = xmms button = KEY_VOLUMEUP config = fwd 5 repeat = 10 end begin prog = xmms button = KEY_VOLUMEDOWN config = bwd 5 repeat = 10 end ############### ##### XdTV #### ############### begin prog = irexec button = KEY_PLAYPAUSE config = record repeat = 0 end begin prog = irexec button = KEY_PREVIOUSSONG config = setstation prev repeat = 0 end begin prog = irexec button = KEY_NEXTSONG config = setstation next repeat = 0 end ################ #### TVtime #### ################ #begin tvtime begin prog = irexec button = KEY_PLAYPAUSE config = tvtime-command ENTER end begin prog = irexec button = KEY_MENU config = tvtime-command TOGGLE_FULLSCREEN end begin prog = irexec button = KEY_NEXTSONG config = tvtime-command UP repeat = 1 end begin prog = irexec button = KEY_PREVIOUSSONG config = tvtime-command DOWN repeat = 1 end begin prog = irexec button = KEY_VOLUMEUP config = tvtime-command RIGHT repeat = 2 end begin prog = irexec button = KEY_VOLUMEDOWN config = tvtime-command LEFT repeat = 2 end #begin # prog = irexec # button = middle # config = tvtime-command CHANNEL_JUMP # repeat = 1 #end #end tvtime ################################################## ############################## #### Turn up and down the volume (Working by default on Feisty) #### ################################################## ############################## #begin #prog = irexec #button = KEY_VOLUMEUP #config = amixer set PCM 9+ & #amixer set PCM 3%+ & #repeat = 2 #end #begin #prog = irexec #button = KEY_VOLUMEDOWN #config = amixer set PCM 9- & #amixer set PCM 3%- & #repeat = 2 #end ############################################## #### Evince y OpenOffice (Presentations) #### ############################################## begin prog = irxevent button = KEY_PLAYPAUSE config = Key F11 CurrentWindow config = Key F5 CurrentWindow repeat = 0 end begin prog = irxevent button = KEY_MENU config = Key Escape CurrentWindow repeat = 0 end begin prog = irxevent button = KEY_PREVIOUSSONG config = Key Prior CurrentWindow repeat = 1 end begin prog = irxevent button = KEY_NEXTSONG config = Key Next CurrentWindow repeat = 1 end begin prog = irxevent button = KEY_VOLUMEUP config = Key ctrl-plus CurrentWindow repeat = 0 end begin prog = irxevent button = KEY_VOLUMEDOWN config = Key ctrl-minus CurrentWindow repeat = 0 end
- En Sistema/Preferencias/Sesión añadimos los siguientes comandos:
irexec -d
irxevent -d
Reiniciamos y listo
NOTAS IMPORTANTES:
- Sólo he añadido soporte para VLC, Mplayer, Kaffeine, Amarok, Totem, Audacious, XMMS, TVtime, XdTV, Evince y Presentaciones de OpenOffice.. Si queréis otros, es cuestión de tocar el archivo /etc/lircrc añadiendo el código de vuestro programa.
- Leed el archivo /etc/lircrc para más información.
- Todos los comandos se ejecutan a la vez, es decir, que si tenéis varias programas soportados abiertos simultáneamente, todos realizarán la función que ejecutemos. Para solucionar esto, habría que descomentar ciertas cosas que os he dejado preparado en el archivo, y necesitáis también reservar varios botones para elegir las aplicaciones que sólo funcionarán para eso. También se pueden modificar todos los comandos para que detecte si la aplicación tal está en ejecución sino que busque otra, sino otra... (con comandos if/case x) y en ese caso que ejecute una acción. Es más complicado pero sólo harían falta varios líneas de lircrc.
- Si vuestro mando no está soportado o no funciona todo lo descrito, podéis comprobar cual es vuestro código para cada botón, haciendo uso de: a) El comando xev b) De la aplicación de GNOME /Sistema/Preferencias/Combinaciones de teclas y ahí buscad algún atajo de teclado que no esté soportado y grabar ese botón del mando a distancia. Una vez tengáis el código de ese botón. Una vez tengáis el código HEXADECIMAL de ese botón (y no el del mapeo para xmodmap porque lirc e inputlirc trabajan en una capa por encima de xmodmap) váis al archivo /usr/include/linux/input.h y ahí buscáis ese código. Cuando le tengáis, el nombre que os aparecerá será vuestro código que es con el que manejaréis el evento en el archivo /etc/lircrc.
Con todo esto, ya tenéis todo lo necesario, ahora sólo queda que alguien consiga hacer funcionar el botón menu del apple remote (y no como tecla dentro de xmodmap que eso es sencillo pero no muy útil).

