
Tengo un ThinkPad X41t con ArchLinux32. En la tapa tiene varios botones. Les di códigos clave con setkeycodes
. El dispositivo se puede "transformar", es decir, girar 180 grados alrededor de la bisagra y cerrarlo así. El problema es que, cuando el dispositivo se transforma, esos botones de la tapa no funcionan; todavía producen códigos clave (como lo informa showkey
), pero no hacen nada. Usando evtest
, determiné dos cosas:
- Los botones de la tapa pertenecen al mismo dispositivo de eventos que los botones del teclado normal, al "teclado AT Translated Set 2".
Ser 'transformado' es un evento reconocible. Aquí está el informe de evtest:
Event: time ..., type 5 (EV_SW), code 1 (SW_TABLET_MODE), value 1 Event: time ..., -------------- SYN_REPORT ------------ Event: time ..., type 5 (EV_SW), code 1 (SW_TABLET_MODE), value 0 Event: time ..., -------------- SYN_REPORT ------------
También intenté presionar las teclas del teclado cuando el evento de transformación ya ocurrió usando un palo pequeño, y tampoco estaban haciendo nada.
Entonces sospecho que cuando el evento de transformación desencadena algo, eso hace que el sistema operativo ignore cualquier pulsación de tecla desde este dispositivo en particular. ¿Hay alguna manera de determinar qué y cómo funciona eso, y cómo agrego botones de tapa a la excepción de esto, para poder usarlos cuando se transforma el dispositivo?
Gracias de antemano.
Respuesta1
Corregido en libinput. Ahora la transformación no desactiva el teclado normal, pero la tapa no presiona las teclas, por lo que no es un problema.
Respuesta2
Para quien se tope con este mismo problema, hay una solución fácil que acabo de encontrar.
Primero, busque el ID del dispositivo de entrada de los botones de su tableta ejecutando xinput
. Debería verse así:
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=10 [slave pointer (2)]
⎜ ↳ Wacom Serial Penabled Pen stylus id=12 [slave pointer (2)]
⎜ ↳ Wacom Serial Penabled Pen eraser id=13 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Sleep Button id=8 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=9 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=11 [slave keyboard (3)]
No estoy seguro de si estos ID son los mismos en todos los casos, pero en mi caso, la entrada que estoy buscando tiene un ID de 11. Una vez que lo tenga, desactívelo ingresando xinput disable 11
y estará listo para comenzar. !