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.
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:
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.
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.
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!