Como posso mapear dois botões para rolar a emulação?

0

Eu tenho um Logitech Trackman Marble, que tem dois botões grandes e dois pequenos. Também não tem roda de rolagem.

Usando esta configuração do wiki do Arch , é possível configurar um dos pequenos botões como o modificador de rolagem.

No entanto, eu também uso o mouse no modo canhoto, e o outro pequeno botão é impossível de pressionar. Por isso, quero ambos dos botões pequenos para ativar a rolagem.

Eu tentei adicionar o seguinte mapeamento de botões para mapear o botão 9 para o botão 8 para que ambos acionassem a rolagem. Mas o segundo botão apenas aciona o botão Voltar.

Option          "ButtonMapping" "1 2 3 4 5 6 7 8 8"

Como posso fazer isso?

Ou, alternativamente, como posso alternar facilmente entre uma configuração destra e canhoto? Se eu pudesse configurar o quarto botão inútil para "espelhar" o mouse, seria super legal.

    
por Pepijn 01.09.2018 / 10:32

1 resposta

0

Eu tenho o mesmo trackball, e este é o meu /etc/X11/xorg.conf.d/99-logievdev.conf para ativar a rolagem:

Section "InputClass"
    Identifier      "Logitech USB Trackball"
    MatchProduct    "Logitech USB Trackball"
    MatchDevicePath "/dev/input/event*"
    MatchIsPointer  "true"
    Driver          "libinput"
    Option          "ButtonMapping"         "1 0 3 4 5 0 0 8 2"
    Option          "ScrollMethod"          "button"
    Option          "ScrollButton"          "8"
EndSection

Observe que você só precisa das linhas Option "ScrollMethod" e Option "ScrollButton" para ativar a rolagem do trackball.

Talvez minha mão seja diferente da sua, mas acho que todos os quatro botões podem ser usados para mim. É por isso que eu atribuí o botão pequeno de difícil acesso ao botão do meio do mouse (botão 2), para aqueles programas antigos do X11 que ocasionalmente precisam dele. É também por isso que eu não uso o Option "MiddleEmulation" que foi usado na configuração do Wiki do Arch que você vinculou.

Pode ser que a opção ScrollButton seja manipulada antes de ButtonMapping , permitindo que você atribua a rolagem a um e apenas um botão.

Para alternar entre configurações, você pode usar algo como este script:

#!/bin/sh
MOUSENAME="Logitech USB Trackball"
CUR_SC_BUTTON=$(xinput --list-props "$MOUSENAME" | grep "Scrolling Button (" | cut -d : -f 2)
case $CUR_SC_BUTTON in
    8)
        # mouse is currently right-handed, switch to left
        xinput --set-prop "$MOUSENAME" "libinput Button Scrolling Button" 9
        xinput --set-button-map "$MOUSENAME" 3 2 1 4 5 6 7 9 8
        # note: may need to switch 9 and 8 around, depending on how
        # ButtonMapping and ScrollingButton interact
        ;;
    9)
        # mouse is currently left-handed, switch to right
        xinput --set-prop "$MOUSENAME" "libinput Button Scrolling Button" 8
        xinput --set-button-map "$MOUSENAME" 1 2 3 4 5 6 7 8 9
        ;;
esac

Aviso de isenção de responsabilidade: eu não testei esse roteiro sozinho, agora o escrevi.

Para que o botão "inútil" mude as configurações do mouse, você usaria a ferramenta apropriada em seu ambiente de trabalho de preferência para atribuir esse script para ser executado quando o botão do mouse for pressionado.

    
por 01.09.2018 / 13:04