Instalar teclado USB en Openwrt y captura de eventos con triggerhappy

g14085

Objetivo: Conseguir que funcione un teclado de ordenador en Openwrt. Esto nos servirá para por ejemplo que el router ante la presión de una tecla realice una acción.

Firmware: Openwrt Chaos Calmer 15.05
Dificultad: Media
Necesitamos: En nuestro caso está hecho con un router Huawei HG553 con Openwrt y un teclado USB conectado al mismo.
Software necesario: Navegador Web, cliente SSH Putty (sólo para Windows).
Más información: Foro Openwrt, Openwrt USB essentialshttp://h-wrt.com/en/doc/kb, triggerhappy.

Paso 1 – Instalación de paquetes para que reconozca el teclado

Accedemos por ssh al router y en el terminal ejecutamos las siguientes instrucciones para la instalación.

opkg update
opkg install kmod-usb-uhci
opkg install kmod-usb-ohci
opkg install kmod-usb2

#Para que reconozca teclado

opkg install kmod-usb-hid
opkg install kmod-hid 
opkg install kmod-hid-generic

Para comprobar si nos ha reconocido el teclado haremos:

ls /dev/input/*

Nos debe devolver algo como:

/dev/input/event0

En caso contrario sacamos y metemos el teclado o reiniciamos el router y volvemos a probar si lo ha reconocido.

Paso 2 – Instalación de aplicación que recoge cada pulsación (eventos).

Usaremos una aplicación llamada triggerhappy que captura los eventos y permite ejecutar un comando o conjunto de acciones ante los eventos de pulsar tecla, soltar tecla y mantener pulsada.

opkg update
opkg install triggerhappy

Paso 3 – Prueba de funcionamiento.

Escribimos en el terminal:

thd --dump /dev/input/event*

Iremos presionando teclas para ver como se llama cada tecla y comprobar que los eventos son los correctos:

Los valores son:
– 0 -> quitar pulsado
– 1 -> pulsado
– 2 -> Mantener pulsado

Veamos un ejemplo de respuesta:

EV_KEY KEY_1 1 /dev/input/event0
 # KEY_1 1 command
 EV_KEY KEY_1 0 /dev/input/event0
 # KEY_1 0 command
 EV_KEY KEY_KP1 1 /dev/input/event0
 # KEY_KP1 1 command
 EV_KEY KEY_KP1 0 /dev/input/event0
 # KEY_KP1 0 command

En rojo vemos que la tecla presionada es el 1 (KEY_1).

En verde vemos que el evento fue de Pulsado (1)

Ejemplo de configuración de triggerhappy

Ahora nos metemos en el archivo de configuracion:

nano /etc/triggerhappy/triggers.d/example.conf
############################################################
# This is an example configuration for the triggerhappy daemon (thd)
# please note that every file to be processed must end in ".conf"
#
# To view a list of supported event codes, use "thd --listevents" or
# "thd --dump /dev/input/event*"
#
# Format:
# <eventcode> <value> <command>
#
# values for key events are 1 (pressed), 0 (released) or 2 (held)
#
## control an mpd instance
# KEY_NEXTSONG 1 /usr/bin/mpc next
# KEY_PREVSONG 1 /usr/bin/mpc prev
###############################################################

Veremos esto, y le añadimos al final:

KEY_KP1 1 echo 1 > /sys/devices/gpio-leds/leds/HW553:red:hspa/brightness
KEY_KP2 0 echo 0 > /sys/devices/gpio-leds/leds/HW553:red:hspa/brightness

Aquí le estamos diciendo que; cuando pulsemos la tecla numérica 1 encenderá la luz de hspa…
y la tecla numérica 2, apagará la luz…

TO-DO

Inyectar eventos directamente sin teclado en /dev/input/

http://python-evdev.readthedocs.org/en/latest/index.html

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *