As teclas da tampa no ThinkPad X41t não funcionam quando o dispositivo é 'transformado'

As teclas da tampa no ThinkPad X41t não funcionam quando o dispositivo é 'transformado'

Eu tenho um ThinkPad X41t rodando ArchLinux32. Na tampa possui vários botões. Eu dei a eles códigos de acesso com setkeycodes. O dispositivo pode ser "transformado" - ou seja, girado 180 graus em torno da dobradiça e fechado assim. O problema é que, quando o dispositivo é transformado, esses botões da tampa não funcionam - eles ainda produzem códigos de acesso (conforme relatado por showkey), mas não fazem nada. Usando evtest, determinei duas coisas:

  1. Os botões da tampa pertencem ao mesmo dispositivo de evento que os botões normais do teclado, ao "teclado AT Translated Set 2".
  2. Ser 'transformado' é um evento reconhecível. Aqui está o relatório do 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 ------------
    

Também tentei pressionar as teclas do teclado quando o evento de transformação já acontecia com o bastão pequeno, e eles também não estavam fazendo nada.

Portanto, suspeito que quando o evento de transformação desencadeia algo, isso faz com que o sistema operacional ignore qualquer pressionamento de tecla deste dispositivo específico. Existe uma maneira de determinar o que e como isso acontece, e como adiciono botões de tampa como exceção, para que eu possa usá-los quando o dispositivo for transformado?

Desde já, obrigado.

Responder1

Corrigido em libinput. Agora, a transformação não desativa o teclado normal, mas a tampa não pressiona as teclas, então não é um problema.

Responder2

Para quem se depara com o mesmo problema, existe uma solução fácil que acabei de encontrar.

Primeiro, encontre o ID do dispositivo xinput dos botões do seu tablet executando xinput. Deve ser algo assim:

⎡ 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)]

Não tenho certeza se esses IDs são iguais em todos os casos, mas no meu caso, a entrada que estou procurando tem um ID 11. Depois de fazer isso, desative-o digitando xinput disable 11e você estará pronto para prosseguir !

informação relacionada