Como desativar os botões Avançar / Voltar no meu mouse


36

Meu mouse tem um recurso infeliz. No lado esquerdo, exatamente onde meu polegar se senta com tanta suavidade quando o uso, existem dois botões que são tão sensíveis que um simples pincel fará com que eles cliquem.

Estou falando, é claro, dos botões irritantes de avançar / voltar que, se pressionados em um navegador, podem tornar muito mais difícil assistir a um vídeo do YouTube de uma hora. Existe uma maneira de desativá-los? Isso seria tratado pelo X?


2
Eu tenho quase certeza de que você pode desativá-lo usando xinput, mas não sei detalhes ... #
1125

Esta pergunta ea resposta também se aplica a volta botões / forward sobre teclados, por exemplo, no Thinkpad teclado
Daniel S. Sterling

Respostas:


43

Inicie o programa xevem um terminal. Mova o mouse dentro da xevjanela; você verá muitas coisas rolando. Pressione cada botão por vez. Em seguida, volte para a janela do terminal e pressione Ctrl+ C. xevmostra uma descrição de cada evento de entrada, em particular ButtonPresse ButtonReleasede cliques do mouse (você também verá vários MotionNotifymovimentos de mouse e outros eventos).

É provável que os botões de avançar e voltar estejam mapeados para os botões do mouse, talvez os botões 8 e 9:

ButtonPress event, serial 29, synthetic NO, window 0x2e00001,
    root 0x105, subw 0x0, time 2889100159, (166,67), root:(1769,98),
    state 0x0, button 8, same_screen YES

Se for esse o caso, remapeie esses botões para uma ação diferente no seu navegador, se puder. Como alternativa, você pode remapear os botões para diferentes números de botão aos quais o navegador não reage ou desativar os botões no nível do sistema. Para fazer isso, coloque essas linhas em um arquivo chamado ~/.Xmodmap:

! Remap button 8 to 10 and disable button 9.
pointer = 1 2 3 4 5 6 7 10 0

Testá-lo com o comando xmodmap ~/.Xmodmap. A maioria dos ambientes de desktop e gerenciadores de janelas executam esse comando automaticamente quando você faz login; se o seu não tiver, faça com que seja executado quando o X iniciar.

Também é possível que o mouse envie um evento de teclado quando você pressiona estes botões:

KeyPress event, serial 32, synthetic NO, window 0x2e00001,
    root 0x105, subw 0x0, time 2889100963, (957,357), root:(2560,388),
    state 0x0, keycode 166 (keysym 0x1008ff26, XF86Back), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

Nesse caso, coloque linhas como estas em ~/.Xmodmap:

keycode 166 = NoSymbol
keycode 167 = NoSymbol

2
Obrigado pela pergunta e pela resposta. Aliás, para reduzir a insanidade da xevsaída, apenas canalizá-lo através do grep: xev | grep -A2 ButtonPress; isso deixará todos os eventos de movimento do mouse, eventos de foco etc. e apenas mostrará os ButtonPresseventos, que são tudo o que você precisa aqui.
Lambart

Obrigado! Ajudou em alguns segundos! :-)
Brian Haak

Isso também funciona em Wayland!
Ray Foss

2

Você pode usar xevpara encontrar para qual chave mapeia o botão e usar o código abaixo (em $ HOME / .xsessionrc) para mapeá-lo para algo que você não está usando.

xmodmap -e 'keycode THE_CODE_HERE = XF86Launch1'

Como alternativa, você poderá fazer isso a partir de uma GUI de uso do Gnome / KDE ou de qualquer outro desktop moderno.

Outra opção seria hackear o xorg.conf para remover as definições de botão.


1

apenas um comando rápido para corrigi-lo, não muito diferente de outras respostas:

xmodmap -e "pointer = 1 2 3 4 5 6 7 0 0 0 0 0 0" #the fix

teste

xmodmap -pp # check the changes
xterm -e xev # test the nullified buttons

# to restore in case you are going to play some game that uses them
xmodmap -e "pointer = 1 2 3 4 5 6 7 8 9 10 11 12 13"

você pode colocar o cmd de correção nos aplicativos de inicialização.

melhor seria usar o xdotool para verificar se a janela ativa é um de seus navegadores e chamar o xmodmap on demand para desativar / ativar o estou, mas isso exigiria algum script:>

Não vi motivo para manter os botões acima de 7 ativados, qualquer motivo?


0

Pode ser feito com o arquivo de configuração do xorg

Aqui está um exemplo que desabilita a rolagem horizontal (salve o novo arquivo e reinicie)

nano /etc/X11/xorg.conf.d/40-libinput-mouse-left-right.conf

Section "InputClass"
        Identifier "Logitech catchall"
        MatchIsPointer  "on"
        Driver "libinput"
        Option "HorizontalScrolling" "false"
EndSection

Outros comandos úteis

xinput list
xinput list-props 15

Agora, para esta pergunta, o arquivo de configuração do xorg pode ser usado para remapear o botão, aqui está um exemplo

Section "InputClass"
    # ...
    Option "ButtonMapping" "1 9 3 4 5 6 7 8 2"
    # ...
EndSection

0

Se você está tentando os xmodmapcomandos (em X, não Weyland) e você está recebendo o erro BadValue (integer parameter out of range for operation)em X_SetPointerMapping, você pode precisar usar xinputem seu lugar. Execute xinputsem parâmetros para obter os IDs do dispositivo (procure um pelo ponteiro) e execute

xinput set-button-map [pointer-device-id] 1 2 3 4 5 0 0 0 0

No meu caso, meu mouse era o dispositivo nº 4 e eu precisava transformar os botões 6 e 7 em 8 e 9 para avançar e voltar ao trabalho, então usei

xinput set-button-map 4 1 2 3 4 5 8 9 8 9

(Mantive os botões 8 e 9 também mapeados para 8 e 9 no caso de eu trocar de mouse.)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.