Botões laterais do mouse

Iniciado por Marco leal, 13 de Setembro de 2016, 18:44

tópico anterior - próximo tópico

Marco leal

Olá, eu tenho um mouse que possui dois botões laterais de avançar e voltar páginas, queria saber como faço para desabilitar eles? existe algum programa para ubuntu que resolva esse problema? Obrigado.

druidaobelix

#1
Citação de: Marco leal online 13 de Setembro de 2016, 18:44
Olá, eu tenho um mouse que possui dois botões laterais de avançar e voltar páginas, queria saber como faço para desabilitar eles? existe algum programa para ubuntu que resolva esse problema? Obrigado.

Então, /Marco leal/,

O que você pergunta é se há um programa específico para **desabilitar** o funcionamento desses botões adicionais.

Bem, programa para habilitar ou desabilitar os botões laterais, ou melhor dizendo, para configurar o mouse, de forma completa, assim, que me recorde de forma imediata somente para o mouse da marca RAZER e ainda assim usando uma ppa.

Programas que antes faziam bem essa função não estão mais ativos para versões mais recentes do Ubuntu, especialmente a 16.04, que possui algumas modificações importantes no servidor X, mas pode ser até que haja algum que desconheço, vamos ver se há alguma contribuição do Fórum nesse sentido.

Mas em geral, independentemente de algum software específico, será possível configurar o funcionamento dos botões do mouse através de uma forma mais analítica, atuando diretamente sobre os parâmetros que regulam essa questão.
www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

druidaobelix

#2
Como não sabemos o modelo e marca exatos do seu mouse e, por consequência, menos ainda quais são os parâmetros dele, então vou demonstrar um exemplo baseado num mouse semelhante ao seu que tenho aqui disponível, e cujo método aqui funciona, e depois você tenta adaptar para o caso específico do seu mouse.

Tenho num determinado equipamento um Microsoft Wireless Mouse 5000 - model 1387 - FCC ID: C3K1387, o qual possui 5 botões, mas que na verdade executam e, assim, equivalem a 6 botões (e talvez mais alguma que nunca prestei lá muita atenção nisso e talvez não saiba).

São os dois principais - esquerdo e direito -, a roda central (whell), que executa o scroll (=rolagem), mas que também pode ser pressionada, num movimento para cima e para baixo (up + down), o que equivale a mais um botão (fecha abas, por exemplo) e ainda dois laterais, que servem exatamente, por exemplo, para avançar ou voltar páginas dentro do navegador.

É sobre esse mouse modelo que iremos trabalhar e a partir do qual você tenta aí aplicar o esquema no seu mouse específico.

Nesse link do fabricante é possível ver o referido mouse e suas especificações:

https://www.microsoft.com/uk/hardware/mouseandkeyboard/productdetails.aspx?pid=120
www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

druidaobelix

#3
Identificando os dispositivos de entrada do sistema

Usando uma janela de terminal, que pode ser aberta pelo ícone correspondente no Dash ou ainda usando as teclas Ctrl Alt T acionadas simultaneamente, inicialmente vamos identificar o mouse no sistema fazendo o seguinte comando:

xinput list

Vair obter uma saída semelhante a seguinte forma:

⎡ Virtual core pointer                       id=2   [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                 id=4   [slave  pointer  (2)]
⎜   ↳ Microsoft Microsoft® 2.4GHz Transceiver v6.0   id=11   [slave  pointer  (2)]
⎜   ↳ Microsoft Microsoft® 2.4GHz Transceiver v6.0   id=12   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                 id=14   [slave  pointer  (2)]
⎣ Virtual core keyboard                      id=3   [master keyboard (2)]
    ↳ Virtual core XTEST keyboard                id=5   [slave  keyboard (3)]
    ↳ Power Button                               id=6   [slave  keyboard (3)]
    ↳ Video Bus                                  id=7   [slave  keyboard (3)]
    ↳ Power Button                               id=8   [slave  keyboard (3)]
    ↳ Sleep Button                               id=9   [slave  keyboard (3)]
    ↳ Microsoft Microsoft® 2.4GHz Transceiver v6.0   id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard               id=13   [slave  keyboard (3)]

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

druidaobelix

A saída do comando acima poderá ser ligeiramente diferente no seu sistema em razão das características próprias do seu equipamento e dos específicos dispositivos de entrada que possua.

Nesse caso do exemplo, como se trata de um notebook, o sistema possui também um Touchpad, além do mouse externo de mesa já referido antes, bem como o teclado do próprio notebook e mais um teclado externo, também wireless, igualmente da Microsoft, o que explica o tipo de registros acima verificados.

O mouse externo de mesa com os tais 6 botões corresponde à entrada acima:

CitarMicrosoft Microsoft® 2.4GHz Transceiver v6.0   id=11   [slave  pointer  (2)]

Na verdade, por uma característica própria do específico hardware, que não vem exatamente ao caso no presente exemplo, o xinput identifica o mouse duplamente (id=11 e id=12), porém apenas um deles corresponde de fato aos parâmetros que nos interessam.É possível que no seu caso, dependendo da marca e modelo do seu mouse, ocorra algo semelhante, então você terá que verificar para qual dos dois as alterações produzem de fato efeito.

Aqui, no caso presente, como dito, corresponde ao identificador de id=11

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

druidaobelix

Obtendo os parâmetros de configuração do id=11

Em seguinda para obter os parâmetros é fazer para o específico id que se quer listar:

xinput list 11

Vair obter uma saída do tipo:


Microsoft Microsoft® 2.4GHz Transceiver v6.0 id=11 [slave  pointer  (2)]
Reporting 11 classes:
Class originated from: 11. Type: XIButtonClass
Buttons supported: 13
Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown"
Button state:
Class originated from: 11. Type: XIKeyClass
Keycodes supported: 248
Class originated from: 11. Type: XIValuatorClass
Detail for Valuator 0:
  Label: Rel X
  Range: -1.000000 - -1.000000
  Resolution: 1 units/m
  Mode: relative
Class originated from: 11. Type: XIValuatorClass
Detail for Valuator 1:
  Label: Rel Y
  Range: -1.000000 - -1.000000
  Resolution: 1 units/m
  Mode: relative
Class originated from: 11. Type: XIValuatorClass
Detail for Valuator 2:
  Label: Rel Horiz Wheel
  Range: -1.000000 - -1.000000
  Resolution: 1 units/m
  Mode: relative
Class originated from: 11. Type: XIValuatorClass
Detail for Valuator 3:
  Label: Rel Dial
  Range: -1.000000 - -1.000000
  Resolution: 1 units/m
  Mode: relative
Class originated from: 11. Type: XIValuatorClass
Detail for Valuator 4:
  Label: Rel Vert Wheel
  Range: -1.000000 - -1.000000
  Resolution: 1 units/m
  Mode: relative
Class originated from: 11. Type: XIValuatorClass
Detail for Valuator 5:
  Label: Rel Misc
  Range: -1.000000 - -1.000000
  Resolution: 1 units/m
  Mode: relative
Class originated from: 11. Type: XIScrollClass
Scroll info for Valuator 2
  type: 2 (horizontal)
  increment: 1.000000
  flags: 0x0
Class originated from: 11. Type: XIScrollClass
Scroll info for Valuator 3
  type: 2 (horizontal)
  increment: 1.000000
  flags: 0x0
Class originated from: 11. Type: XIScrollClass
Scroll info for Valuator 4
  type: 1 (vertical)
  increment: -1.000000
  flags: 0x2 ( preferred )

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

druidaobelix

Note que existem outros componentes no hardware que são identificados como botões extras, como se o mouse tivesse 13 botões (internamente certamente existem os dispositivos eletrônicos correspondentes):

Buttons supported: 13
      Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown"

A cada uma dessas entradas, apenas para efeitos de identificação, você pode associar uma sequencia numérica do seguinte tipo:


Button labels:

1 - "Button Left"
2 - "Button Middle"
3 - "Button Right"
4 - "Button Wheel Up"
5 - "Button Wheel Down"
6 - "Button Horiz Wheel Left"
7 - "Button Horiz Wheel Right"
8 - "Button Side"
9 - "Button Extra"
10- "Button Unknown"
11- "Button Unknown"
12- "Button Unknown"
13- "Button Unknown"

Ou seja, se está apenas ordenando de forma numérica sequencial para efeitos de simples identificação.

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

druidaobelix

#7
Obtendo a sequência numérica dos botões

Para constatar essa sequência, execute o seguinte comando:

xinput get-button-map 11

Vai obter a saída:

1 2 3 4 5 6 7 8 9 10 11 12 13

No caso específico os botões que se quer anular correspondem (por dedução) aos números 8 (Button Side) e 9 (Button Extra), já que os iniciais são os básicos do mouse e os demais estão vinculados ao Whell (=roda), além do que os finais a partir do 10 não fazem sentido, então, por exclusão, são os botões 8 e 9.
www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

druidaobelix

Desabilitando o funcionamento de específicos botões

Como o que se quer desabilitar o funcionamento são os botões laterais correspondentes aos números 8 e 9, então é fazer:

xinput set-button-map 11 1 2 3 4 5 6 7 0 0 10 11 12 13

Observe que após o comando 'set' vai o id (no caso 11) que se quer alterar e na posição respectiva o valor é alterado para 0 (zero).

Dessa forma os botões 8 e 9 deixam de funcionar.

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

druidaobelix

Tornando a alteração permanente

O que se disse até agora é a primeira parte da questão, pois aquela alteração se perde ao reiniciar a sessão ou o sistema.


A solução pode ser acrescentar a linha de comando acima nos "Aplicativos iniciais de sessão".

Para tanto, vá ao Dash (primeiro ícone da coluna de ícones, à esquerda) e localize o ícone "Aplicativos iniciais de sessão".

Clique em Adicionar e escolha um nome qualquer.

(aqui usei o nome mudamouse6buttons, claro que pode ser qualquer nome)

Copie e cole o respectivo comando na caixa de nome 'Comando".

Click em Fechar.

Reinicie a sessão.

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

druidaobelix

#10
Tornando a alteração permanente 2 - um outro modo

Uma outra solução, mais direta, é criar um arquivo com o nome .xsessionrc na sua /home/username [observe que há um . (ponto) antes do nome, portanto, trata-se de um arquivo oculto] contendo aquela linha de comando. Onde esta "username", como sempre, é apenas uma referência genérica ao nome real do seu usuário, aquele que de fato você usa aí no seu sistema.

Assim sendo:

gedit .xsessionrc

Vai abrir um arquivo "em branco", então adicione o comando de alteração que será executado sempre que iniciar a sessão:

xinput set-button-map 11 1 2 3 4 5 6 7 0 0 10 11 12 13

Salvar e Sair

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

druidaobelix

Reabilitando o funcionamento dos botões

Se quiser temporariamente voltar a habilitar o funcionamento dos botões é só introduzir novamente a sequência original, fazendo:

xinput set-button-map 11 1 2 3 4 5 6 7 8 9 10 11 12 13

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

druidaobelix

xev - identificando os botões do mouse - forma adicional

Apenas complementando a informação, embora seja quase certa a possibilidade de identificar as exatas referências numéricas que correspondem aos botões do mouse, como antes explicado e especialmente no post #6 e #7 retro, entretanto, em caso de alguma dificuldade, em razão de um específico modelo de mouse, também se pode utilizar do utilitário xev ( print contents of X events) para tentar alcançar essa identificação.

O que o xev faz é basicamente criar uma janela e em seguida dizer ao servidor X (que é quem controla a interface gráfica do sistema) para que sejam enviadas ao terminal onde ele está sendo executado informações sobre os eventos que aconteçam naquela janela, ou seja, é apenas uma forma de monitoramento do dispositivo de entrada, no caso o mapeamento do mouse (mas também pode ser usado para mapeamento de teclado).

Embora possua várias possibilidades de uso, para o que aqui importa bastam essas:


Para chamar o programa simplesmente digite no terminal:

xev

Se quiser que a janela criada tenha um nome qualquer, pode usar, por exemplo:

xev -name testabuttonmouse

Todos os eventos que ocorrem serão monitorados, mas como aqui o que se quer é apenas a identificação dos botões do mouse, então é melhor restringir o que é mostrado no terminal para apenas o clicar/uso dos botões fazendo:

xev -event button

ou se preferir de uma forma completa:

xev -name nomejanela -event button


A partir daí basta posicionar o cursor do mouse sobre o pequeno quadrado criado na janela e então usar os botões do mouse e ir obtendo as informações respectivas no terminal.

No terminal, para o modelo aqui exposto, se obtém:

- ao clicar usando o botão esquerdo:

ButtonRelease event, serial 25, synthetic NO, window 0x3c00001,
    root 0xc1, subw 0x3c00002, time 8529257, (42,45), root:(107,97),
    state 0x110, button 1, same_screen YES

- idem usando o botão direito:

ButtonRelease event, serial 25, synthetic NO, window 0x3c00001,
    root 0xc1, subw 0x3c00002, time 8533098, (42,39), root:(107,91),
    state 0x410, button 3, same_screen YES

- idem pressionando a roda (wheel -up/down):

ButtonPress event, serial 25, synthetic NO, window 0x3c00001,
    root 0xc1, subw 0x3c00002, time 8535450, (42,39), root:(107,91),
    state 0x10, button 2, same_screen YES


- idem fazendo scroll para frente usando a roda (wheel):

ButtonPress event, serial 25, synthetic NO, window 0x3c00001,
    root 0xc1, subw 0x3c00002, time 8837748, (44,40), root:(109,92),
    state 0x10, button 4, same_screen YES

- idem fazendo scroll para trás usando a roda (wheel):

ButtonRelease event, serial 25, synthetic NO, window 0x3c00001,
    root 0xc1, subw 0x3c00002, time 8874864, (37,30), root:(102,82),
    state 0x1010, button 5, same_screen YES

- idem usando o botão lateral esquerdo:

ButtonPress event, serial 25, synthetic NO, window 0x3c00001,
    root 0xc1, subw 0x3c00002, time 8918269, (34,37), root:(99,89),
    state 0x10, button 8, same_screen YES

- idem usando o botão lateral direito:

ButtonPress event, serial 25, synthetic NO, window 0x3c00001,
    root 0xc1, subw 0x3c00002, time 8943657, (38,33), root:(103,85),
    state 0x10, button 9, same_screen YES


Claramente demonstrado que os botões acionados possuem a correspondência numérica conforme antes mencionado e também dessa forma fica fácil identificar.

www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

druidaobelix

É isso.

Aqui esse método funciona para o específico modelo de mouse de mesa mencionado.

Mas, apenas por curiosidade, por qual razão mesmo você quer desabilitar os botões laterais adicionais do seu mouse?

Geralmente é uma funcionalidade que pode ser interessante.
www.arredondar.org.br
Vencedor Desafio de Impacto Social Google 2016!
Você também pode participar e fazer a diferença.

JFMMão de Ferro

Obrigado druidaobelix pela informação, e explicação, nunca tinha encontrado nada semelhante, porque já há muito tempo que quero modificar o trabalho da roda, se possível, pondo ao contrário do que está a deslocação para cima e para baixo.

Comando:    xinput list

⎡ Virtual core pointer                       id=2   [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                 id=4   [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                      id=9   [slave  pointer  (2)]
⎣ Virtual core keyboard                      id=3   [master keyboard (2)]
    ↳ Virtual core XTEST keyboard                id=5   [slave  keyboard (3)]
    ↳ Power Button                               id=6   [slave  keyboard (3)]
    ↳ Power Button                               id=7   [slave  keyboard (3)]
    ↳ UVC Camera (046d:0825)                     id=8   [slave  keyboard (3)]
    ↳ Eee PC WMI hotkeys                         id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard               id=11   [slave  keyboard (3)]

O meu rato:        Logitech USB Receiver                      id=9   [slave  pointer  (2)]

Comando:    xinput-get-button-map 9

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Resultado de rodar para mim

ButtonRelease event, serial 37, synthetic NO, window 0x7000001,
    root 0x298, subw 0x7000002, time 10270769, (21,37), root:(208,453),
    state 0x800, button 4, same_screen YES

LeaveNotify event, serial 37, synthetic NO, window 0x7000001,
    root 0x298, subw 0x0, time 10270769, (21,37), root:(208,453),
    mode NotifyUngrab, detail NotifyInferior, same_screen YES,
    focus NO, state 0

ButtonPress event, serial 37, synthetic NO, window 0x7000001,
    root 0x298, subw 0x7000002, time 10272497, (21,37), root:(208,453),
    state 0x0, button 4, same_screen YES

EnterNotify event, serial 37, synthetic NO, window 0x7000001,
    root 0x298, subw 0x0, time 10272497, (21,37), root:(208,453),
    mode NotifyGrab, detail NotifyInferior, same_screen YES,
    focus NO, state 2048

KeymapNotify event, serial 37, synthetic NO, window 0x0,
    keys:  4294967192 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0


Resultado de rodar para fora

ButtonRelease event, serial 37, synthetic NO, window 0x7000001,
    root 0x298, subw 0x7000002, time 10748586, (21,50), root:(208,466),
    state 0x1000, button 5, same_screen YES

LeaveNotify event, serial 37, synthetic NO, window 0x7000001,
    root 0x298, subw 0x0, time 10748586, (21,50), root:(208,466),
    mode NotifyUngrab, detail NotifyInferior, same_screen YES,
    focus NO, state 0

ButtonPress event, serial 37, synthetic NO, window 0x7000001,
    root 0x298, subw 0x7000002, time 10749042, (21,50), root:(208,466),
    state 0x0, button 5, same_screen YES

EnterNotify event, serial 37, synthetic NO, window 0x7000001,
    root 0x298, subw 0x0, time 10749042, (21,50), root:(208,466),
    mode NotifyGrab, detail NotifyInferior, same_screen YES,
    focus NO, state 4096

KeymapNotify event, serial 37, synthetic NO, window 0x0,
    keys:  4294967192 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

Será que basta modificar o número Botao 4 para Botão 5 , e o Botão 5 para Botão 4 ?

J.F.M.M.F.