Eu tenho um ThinkPad X41t rodando ArchLinux32. Na tampa, possui vários botões. Eu dei a eles códigos-chave com extensão setkeycodes
. O dispositivo pode ser "transformado" - ou seja, girado em 180 graus em torno da dobradiça e fechado dessa forma. 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:
- Os botões da tampa pertencem ao mesmo dispositivo de evento que os botões normais do teclado, ao "teclado AT Translated Set 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 ------------
Eu também tentei pressionar as teclas do teclado quando o evento de transformação já aconteceu usando um pequeno bastão, e eles também não estavam fazendo nada.
Portanto, suspeito que, quando o evento de transformação aciona algo, isso faz com que o sistema operacional ignore qualquer pressionamento de tecla desse dispositivo específico. Existe uma maneira de determinar o que e como isso acontece, e como adiciono botões Lid à exceção dessa coisa, para que eu possa usá-los quando o dispositivo for transformado?
Desde já, obrigado.
Corrigido em libinput . Agora, a transformação não desativa o teclado normal, mas a tampa não pressiona as teclas, portanto não é um problema.
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 tablet executando
xinput
. Deve ser algo como isto: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 de obter isso, desative-o digitando
xinput disable 11
, e você deve estar pronto para ir !