Eu tenho um trackball com alguns botões extras que eu gostaria de usar para rolar automaticamente (aliviando a tensão causada pelo movimento repetitivo do dedo rolante). Eu sei os números dos botões xev
que eu quero usar e como mapear os botões extras para os botões da roda de rolagem. O que eu tenho até agora é:
xinput --set-button-map 9 1 2 3 4 5 6 7 8 9 4 5 12
(9 é o id do ponteiro do trackball). Isso faz com que os botões extras escolhidos rolem para cima e para baixo ... por uma linha por vez. Então, realmente não há diferença no comportamento da roda de rolagem, praticamente o que eu esperava.
O que eu gostaria é ter rolagem contínua enquanto os botões 10 e 11 são mantidos. Semelhante à roda de inclinação. xev
mostra que a roda de inclinação realmente registra como eventos repetidos de pressionamento e liberação para os botões 6 e 7.
Então, minha pergunta é: qual seria a maneira mais fácil de configurar isso? O botão 10 é mantido emulando a pressão repetida de pressionar e soltar o botão 4, botão 11, fazendo o mesmo para emular o botão 5. Talvez com repetição configurável de atraso e taxa de repetição?
ETA:
Uma solução fácil era apenas mapear os botões 6 e 7 a 5 e 4, respectivamente. Mas isso é menos que ideal, já que eu perco a rolagem horizontal.
Descobri também que o Chrome ignora completamente o comando xinput
! Corrija-me se estiver errado, mas para usar xinput2 em vez de xinput1, você precisa usar o driver evdev
em vez do driver libinput
padrão em Xorg
. Eu consegui isso adicionando um arquivo de configuração com:
Section "InputClass"
Identifier "Evdev Mouse"
MatchProduct "HUGE"
Driver "evdev"
Option "ButtonMapping" "1 2 3 4 5 5 4 8 9 4 5 12"
EndSection
(altere a string MatchProduct
ao seu gosto)
Agora funciona no Chrome também. Mas a questão original permanece: como mapear os botões 10 e 11 para repetidos press-and-releases de 4 e 5?