Delirios de un Informático

Logitech G15 con g15daemon y Xorg 7.5 en Debian

Hace unos días que se actualizó Xorg a la versión 7.5 en Debian SID, actualización que por fin hizo funcionar de nuevo los botones de mi Wacom pero que se cargó los botones extra del Logitech G15 debido a un error en g15daemon, que devuelve el error:

G15 Extra keys: dropping events due to full queue

En los foros de g15tools.com se ha hablado del problema y se ha proporcionando un parche que ya está en el SVN, pero que por desgracia todavía no se ha actualizado en Debian. Es por eso por lo que es necesario hacerlo a mano, descargándose los archivos fuente de los repositorios, parcheando el archivo modificado y compilando el paquete. El proceso es sencillo:

sudo apt-get install build-essential devscripts
sudo apt-get build-dep g15daemon
mkdir g15daemon-src
cd g15daemon-src
sudo apt-get source g15daemon
sudo apt-get build-dep g15daemon
svn co https://g15daemon.svn.sourceforge.net/svnroot/g15daemon g15daemon-svn
cd g15daemon-1.9.5.3
cp ../g15daemon-svn/trunk/g15daemon-wip/plugins/g15_plugin_uinput.c plugins/
dpkg-buildpackage -rfakeroot -us -uc -b

Esto nos creará un paquete .deb en la carpeta g15daemon-src con el daemon actualizado, que sólo habra que instalar con un dpkg -i g15daemon_1.9.5.3-8_amd64.deb :).

Programar clientes para LCDproc en Perl

Ya he hablado de LCDproc en este blog, pero aunque está muy bien las pantallas disponibles son limitadas y al estar programado en C, si no dominas el lenguaje es complicado programar tu propio cliente para mostrar lo que necesites. Para los aficionados al scripting en vez de a la compilación existe perl-LCDd, un pequeño módulo Perl que proporciona una clase para interactuar con la pantalla y así mostrar los datos que se desee. Viene con un ejemplo muy sencillo que ayuda a crear el primer cliente, así como con documentación de los métodos de la clase.

Actualización: para los mas frikis, ésta es la documentación oficial que permite crear un cliente. Es la especificación para comunicarse con el servicio, que puede hacerse incluso por telnet.

Logitech G15 y LCDproc en Debian

Ya hace unos meses que comenté cómo hacer funcionar un Logitech G15 en Debian con los controladores específicos y utilizando scripts especialmente programados para su pantalla LCD. Pero hasta ahora no había probado LCDproc, un software que permite el uso de pantallas LCD genéricas (utilizadas mucho en las cajas de los equipos) y que en su versión 0.5.2 añade soporte para este teclado.

El primer problema es que es necesario instalar la versión de los repositorios Experimental, ya que la versión de los repositorios estables es la 0.4.5, sin soporte para el G15. Para eso, deberemos añadir a nuestro /etc/apt/sources.list lo siguiente:

deb http://ftp.fr.debian.org/debian/ experimental main contrib non-free

Y luego instalar el programa:

sudo apt-get install -t experimental lcdproc

Una vez instalado se inicia automáticamente el daemon y debería aparecer LCDproc Server en la pantalla del teclado, pero no es así. Una llamada a lcdproc nos devuelve:

sock_connect: connect failed
Error connecting to LCD server 127.0.0.1 on port 13666.
Check to see that the server is running and operating normally.

Y el registro del sistema muestra:

Nov 22 09:41:37 vito LCDd: Could not open driver module server/drivers/g15.so:
server/drivers/g15.so: cannot open shared object file: No such file or directory
Nov 22 09:41:37 vito LCDd: Driver [g15] binding failed
Nov 22 09:41:37 vito LCDd: Could not load driver g15
Nov 22 09:41:37 vito LCDd: There is no output driver
Nov 22 09:41:37 vito LCDd: Critical error while initializing, abort.

Es decir, que no se ha compilado con el controlador para el G15, por lo que habrá que compilarlo a mano:

wget http://ftp.de.debian.org/debian/pool/main/l/lcdproc/lcdproc_0.5.2.orig.tar.gz
tar xzvf lcdproc_0.5.2.orig.tar.gz
cd lcdproc-0.5.2
./configure --enable-drivers=g15
make
sudo cp server/drivers/g15.so /usr/lib/lcdproc/

Y una vez compilado el controlador y copiado en su directorio, es necesario configurar el daemon editando el archivo /etc/LCDd.conf y modificando las siguientes líneas:

Driver=g15
DriverPath=/usr/lib/lcdproc/

Tras esto, tendremos todo listo y un sudo /etc/init.d/LCDd restar debería mostrar información en la pantalla y se podrá ejecutar el comando lcdproc normalmente.

Logitech G15 en Debian

Iba a comprarme un Logitech G11 pero cuando fuí a pedirlo me encontré con que tenían en tienda el viejo G15 con luz azul y me salía casi igual, por lo que no pude resistirme

El teclado es muy cómodo y bastante grande. Las teclas son robustas y cómodas, pero lo mejor es la pantalla LCD, la iluminación con intensidad variable y el montón de teclas personalizables: los controles multimedia ( 4 teclas de control y una rueda para el volumen ) y las 18 teclas “G” a la izquierda con 3 modos, lo que dan a efectos prácticos 54 teclas, que combinadas con Ctrl, Win, Alt y Alt Gr dan 216 posibilidades ( miles si combinamos varias teclas a la vez ).

Para hacer funcionar todas estas teclas en Debian, es necesario instalar los paquetes de G15 Tools:

sudo apt-get install g15macro g15daemon g15composer

Por defecto las teclas extra se detectan como F1-F12 y 1-6 y no funcionan las teclas M, por lo que deberemos ejecutar el comando g15macro para que se detecten correctamente ( se puede añadir un enlace simbólico a ~/.kde/Autostart ) y veremos que se enciende la tecla M1. Con esto podremos detectar las pulsaciones tanto desde el centro de control de KDE ( lo que nos permite añadir acciones desde Introducir Acciones y ejecutar programas o llamadas dcop ) o usando XBindKeys. El mapeo de teclas puede modificarse editando el archivo ~/.g15macro/g15macro.conf.

Por si interesa, os dejo unos cuantos enlaces:

Todavía me queda trastear a fondo con la pantalla LCD, que tiene mucho potencial

Actualización: el paquete g15macro no es 100% necesario. Permite activar modos con las teclas M, pero si preferimos tenerlas disponibles como teclas independientes únicamente es necesario ejecutarlo una primera vez para que se cree el archivo de configuración en el que se basará g15daemon.