mapeia o botão do mouse para o comportamento de rolagem

0

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?

    
por Iestyn ap Mwg 09.01.2018 / 00:13

1 resposta

0

Inspirado por este post que uso

scroll.sh

#!/bin/bash
while true
do
    xte "key $1"
    sleep 0.1
done

e ~ / .xbindkeysrc

"~/scroll.sh Down"
  b:8
"killall scroll.sh"
  b:8 + Release
"~/scroll.sh Up"
  b:9
"killall scroll.sh"
  b:9 + Release

Você provavelmente deve substituir os botões prop: b: 10 e b: 11 em vez de meus.

execute

killall xbindkeys
xbindkeys
    
por gliviu 28.01.2018 / 16:25