Lid Keys no ThinkPad X41t não funciona quando o dispositivo é 'transformado'

0

Eu tenho um ThinkPad X41t executando o ArchLinux32. Na tampa, tem vários botões. Eu lhes dei códigos de tecla com setkeycodes . O dispositivo pode ser "transformado" - isto é, rodado 180 graus à volta da dobradiça e fechado desse modo. O problema é que, quando o dispositivo é transformado, esses botões não funcionam - eles ainda produzem códigos de tecla (como relatado por showkey ), mas eles 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, para "Teclado do conjunto trad. 2".
  2. Ser "transformado" é um evento regredí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 ------------
    

Eu também tentei pressionar as teclas do teclado quando o evento de ser transformado já acontecia usando o pequeno bastão, e eles também não estavam fazendo nada.

Por isso, suspeito que quando o evento de ser transformado desencadeia algo, isso faz com que o sistema operacional ignore qualquer pressionamento de teclas desse dispositivo em particular. Existe uma maneira de determinar o que e como isso, e como eu adiciono botões Lid à exceção dessa coisa, então eu poderia usá-los quando o dispositivo é transformado?

Obrigado antecipadamente.

    
por SuperPrower 02.06.2018 / 16:28

2 respostas

0

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

    
por 30.11.2018 / 10:56
0

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

Primeiro, encontre o ID do dispositivo de entrada de x dos botões do tablet executando xinput . Deve ser algo como isto:

⎡ 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 os mesmos em todos os casos, mas, no meu caso, a entrada que estou procurando tem um ID de 11. Depois disso, desative-o inserindo xinput disable 11 e você deveria estar bem para ir!

    
por 15.12.2018 / 03:40