Configuración de mandos a distancia usando «devinput»

Por lo general la configuración de un mando a distancia en Linux es una tarea complicada, pero afortunadamente en las versiones mas recientes es posible utilizar el controlador «devinpu»' de lirc que simplifica esta tarea. Lo que hace es que nuestro mando a distancia emule un teclado, convirtiendo las pulsaciones de botones en teclas.

Lo primero que hay que hacer es averiguar si nuestro mando puede utilizar este controlador. Par ello, abrimos una consola y ejecutamos:

cat /proc/bus/input/devices

Si obtenemos algo como esto, entonces es posible configurar el mando siguiendo este tutorial:

I: Bus=0003 Vendor=07ca Product=a800 Version=0000
N: Name="IR-receiver inside an USB DVB receiver"
P: Phys=usb-0000:00:02.1-2/ir0
S: Sysfs=/devices/pci0000:00/0000:00:02.1/usb1/1-2/input/input5
U: Uniq=
H: Handlers=kbd event5
B: EV=3
B: KEY=3c0110 10200000000000 0 8400 90c0300801 1e060000000000 ffc

En mi caso el mando aparecerá como un dispositivo en /dev/input/event5

A contunuación hay que instalar los paquetes ncesarios de lirc:

sudo aptitude install lirc lirc-x inputlirc

Como parte del proceso de instalación se nos muestran algunas pantallas para configurar el mando. Hay que seleccionar lo siguiente:

  • Remote control configuration: «Linux input layer (/dev/input/eventX)»
  • IR transmitter, if present: «None»
  • Custom event interface for your dev/input device:«/dev/input/by-path/pci-0000:00:02.1-event-ir»

Se generan dos archivos de configuración:
«/etc/lirc/hardware.conf» que queda así:

# /etc/lirc/hardware.conf
#
#Chosen Remote Control
REMOTE="Linux input layer (/dev/input/eventX)"
REMOTE_MODULES=""
REMOTE_DRIVER="devinput"
REMOTE_DEVICE="/dev/input/by-path/pci-0000:00:02.1-event-ir"
REMOTE_SOCKET=""
REMOTE_LIRCD_CONF="devinput/lircd.conf.devinput"
REMOTE_LIRCD_ARGS=""

#Chosen IR Transmitter
TRANSMITTER="None"
TRANSMITTER_MODULES=""
TRANSMITTER_DRIVER=""
TRANSMITTER_DEVICE=""
TRANSMITTER_SOCKET=""
TRANSMITTER_LIRCD_CONF=""
TRANSMITTER_LIRCD_ARGS=""

#Enable lircd
START_LIRCD="true"

#Don't start lircmd even if there seems to be a good config file
#START_LIRCMD="false"

#Try to load appropriate kernel modules
LOAD_MODULES="false"

# Default configuration files for your hardware if any
LIRCMD_CONF=""

#Forcing noninteractive reconfiguration
#If lirc is to be reconfigured by an external application
#that doesn't have a debconf frontend available, the noninteractive
#frontend can be invoked and set to parse REMOTE and TRANSMITTER
#It will then populate all other variables without any user input
#If you would like to configure lirc via standard methods, be sure
#to leave this set to "false"
FORCE_NONINTERACTIVE_RECONFIGURATION="false"
START_LIRCMD=""

«/etc/lirc/lircd.conf» queda así:

#This configuration has been automatically generated via
#the Ubuntu LIRC package maintainer scripts.
#
#It includes the default configuration for the remote and/or
#transmitter that you have selected during package installation.
#
#Feel free to add any custom remotes to the configuration
#via additional include directives or below the existing
#Ubuntu include directives from your selected remote and/or
#transmitter.

#Configuration for the Linux input layer (/dev/input/eventX) remote:
include "/usr/share/lirc/remotes/devinput/lircd.conf.devinput"

Ya está todo listo. En caso de que sea necesario reiniciar lirc, hay que ejecutar:

sudo /etc/init.d/lirc restart

y nos debe devolver si todo está bién:

* Starting remote control daemon(s) : LIRC                         [ OK ]

Para probar que funciona ejecutamos:

irw

y pulsamos algunos botones del mando, con lo que nos mostrará en la consola los códigos de teclas asociados.

Ya solo falta asignar funciones a los botones para controlar nuestros programas. Lo que sigue es específico de kDE4.
Instalamos kdelirc

sudo aptitude install kdelirc

Lo ejecutamos desde Aplicaciones->Utilidades->Servidor LIRC de KDE.
Aparecerá un icono en parte derecha de la barra de tareas. Pulsando con el botón derecho y seleccionando la opción de configurar, accedemos a la ventana que nos permite asignar funciones a los botones del mando.

Fuentes:

Nada mas decir que el entorno en que lo he probado en Kubuntu Karmic, con una tarjeta de televisión Avermedia USB A800 con mando integrado y tambíen en una Avermedia AverTV Volar EX (aunque en esta son necesarias algunas modificaciones explicadas en http://www.ubuntu-es.org/?q=node/124148