Archivo de la etiqueta: deshabilitar tecla rota en portátil

Teclado de portátil se queda pulsada una tecla, solución en Linux amputar la tecla gangrenada

En el portátil del curro que lo que me fastidia es que no es una marca mala, es un Thinkpad (de los e ahora) me esta fallando el teclado no funcionan las teclas flecha abajo y la de suprimir.

Pero el problemón es que al azar se activa la tecla supr sin tocarla ni nada y se queda activa, haciendo destrozos considerables cuando estoy programando.

Así que mientras conseguimos arreglarlo y no físicamente, voy a buscar la solución software, que es muy parecida a amputar una pierna gangrenada.

Lo espectacular de GNU/Linux es que puedes hacer y deshacer cosas que serían impensables de poder hacer en el sistema desoperativo de las ventanas o de la manzana.

Voy a crear una regla para hwdb para deshabilitar la tecla…muerto el perro se acabo la rabia.

Lo primero es encontrar el teclado:

$ cat /proc/bus/input/devices | grep -i keyboard -B2 -A10

I: Bus=0011 Vendor=0001 Product=0001 Version=ab83
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input4
U: Uniq=
H: Handlers=sysrq kbd event4 leds 
B: PROP=0
B: EV=120013
B: KEY=402000000 3803078f800d001 feffffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=7

--

I: Bus=0003 Vendor=413c Product=2106 Version=0110
N: Name="DELL Dell QuietKey Keyboard"
P: Phys=usb-0000:04:00.3-2.2/input0
S: Sysfs=/devices/pci0000:00/0000:00:08.1/0000:04:00.3/usb1/1-2/1-2.2/1-2.2:1.0/0003:413C:2106.0002/input/input10
U: Uniq=
H: Handlers=sysrq kbd event9 leds 
B: PROP=0
B: EV=120013
B: KEY=1000000000007 ff9f207ac14057ff febeffdfffefffff fffffffffffffffe
B: MSC=10
B: LED=7

Listando ese fichero sale todo lo que esta enganchado al sistema operativo, pero he filtrado a teclado, me sale el externo y el del portátil.

De ahí tienes que buscar el event<num> que sea tu teclado, esta en el campo Handlers, en mi caso es el event4.

Instalas evetest que vigila los eventos de sistema y te va dar el valor MSC_SCAN de la tecla suprimir o la que quieras matar.

sudo evtest /dev/input/event4

Yo la cace o pesque mientras estaba escribiendo esto:

Event: time 1747226204.341909, -------------- SYN_REPORT ------------
Event: time 1747226204.345745, type 4 (EV_MSC), code 4 (MSC_SCAN), value 0d
Event: time 1747226204.345745, type 1 (EV_KEY), code 13 (KEY_EQUAL), value 0
Event: time 1747226204.345745, -------------- SYN_REPORT ------------
Event: time 1747226204.351976, type 4 (EV_MSC), code 4 (MSC_SCAN), value d3
Event: time 1747226204.351976, type 1 (EV_KEY), code 111 (KEY_DELETE), value 1
Event: time 1747226204.351976, -------------- SYN_REPORT ------------
Event: time 1747226204.596393, type 4 (EV_MSC), code 4 (MSC_SCAN), value d3
Event: time 1747226204.596393, type 1 (EV_KEY), code 111 (KEY_DELETE), value 2
Event: time 1747226204.596393, -------------- SYN_REPORT ------------
Event: time 1747226204.626565, type 4 (EV_MSC), code 4 (MSC_SCAN), value d3
Event: time 1747226204.626565, type 1 (EV_KEY), code 111 (KEY_DELETE), value 2
Event: time 1747226204.626565, -------------- SYN_REPORT ------------

Es d3

También necesitas el MODALIAS que hay varias alternativas para sacarlo.

O usando:

sudo udevadm info /dev/input/eventX
O usando:

sudo udevadm info --attribute-walk --name=/dev/input/event4

Pero a mi no me ha salido el dichoso MODALIAS.

Así que gracias a la doc de Arch (todos los linuxeros independientemente de nuestra distro favorita debemos reconocer el trabajo de la comunidad de Arch) he encontrado otra manera.

$ cat /sys/devices/platform/i8042/serio0/modalias 
serio:ty06pr00id00ex00

El path lo sacas de Sysfs del hacer el cat /proc/bus/input/devices anterior.

Cómo es al azar mi caso, dejo la ventana ahí pacientemetne a ver si pesca o caza la tecla fantasma de suprimir.

Añadir la tecla a una regla de hwdb.

sudo nano /etc/udev/hwdb.d/11-deshabilitar-supr-tecla.hwdb

Y añades las lineas (ojo con el espacio en blanco de KEYBOARD):

evdev:<modalias>
 KEYBOARD_KEY_<MSC_SCAN>=reserved

En mi caso:

evdev:serio:ty06pr00id00ex00
 KEYBOARD_KEY_d3=reserved

Activarlo (puede ser reiniciando) o con el siguiente par de comandos:

sudo systemd-hwdb update
sudo udevadm trigger /dev/input/event4

Y a disfrutar con tu portátil con la tecla gangrenada amputada.

Nota: algunas veces el modalias esta mal por alguna razón que desconozco. Hay otra forma de sacarlo:

sudo udevadm test /sys/class/input/event4 2>&1 | grep modalias
Y saldrá mucha mierda, entre toda veras lineas como:

event4: hwdb modalias key: "input:b0011v0001p0001eAB83-e0,1,4,11,14,k71,72,73,74,75,76,77,79,7A,7B,7C,7D,7E,7F,80,8C,8E,8F,9B,9C,9D,9E,9F,A3,A4,A5,A6,AC,AD,B7,B8,B9,D9,E2,ram4,l0,1,2,sfw"

Pues el modalias es el input con todo el churro y en donde el guion se mete el * (que no se si es para casar todos lo que hay separados por comas).

input:b0011v0001p0001eAB83-*

Extra: También puedes remapear (como en los videojuegos) una tecla pocha por otra, es de la misma manera pero añadiendo una segunda fila (recuerda el espacio en blanco:

KEYBOARD_KEY_4d=z

Donde el 4d es la tecla que quieres usar para la sustitución y el z es la tecla.