Las teclas de tapa en ThinkPad X41t no funcionan cuando el dispositivo se "transforma"

Las teclas de tapa en ThinkPad X41t no funcionan cuando el dispositivo se "transforma"

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:

  1. Los botones de la tapa pertenecen al mismo dispositivo de eventos que los botones del teclado normal, al "teclado AT Translated Set 2".
  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 11y estará listo para comenzar. !

información relacionada