Estou executando o Firefox versão 67 no Ubuntu 18.10 LTS.
Eu tenho um mouse Logitech M-UAG120 com uma roda de rolagem. A roda de rolagem tem uma maneira de empurrá-la lateralmente para a esquerda e para a direita. O que eu preciso é que a ação de empurrar para a esquerda faça o mesmo que Alt-LEFT do Firefox para voltar uma página e a operação oposta para empurrar a roda de rolagem para a direita. No momento, o Firefox não está respondendo a nenhum dos eventos X para nenhuma das operações de deslocamento da roda de rolagem. (Estou chamando essas "operações de push" porque isso não é o mesmo que clicar no botão do meio do mouse pressionando verticalmente a roda de rolagem, que está funcionando corretamente). A operação de rolagem também funciona corretamente.
Executei o xev e determinei que está gerando esses eventos X:
- Operação de pressão da roda de rolagem esquerda: Botão 6
- Operação de pressão da roda de rolagem direita: Botão 7
Pesquisei em http://kb.mozillazine.org/About:config e não encontrei nada específico para esses eventos, pesquisei na web e não encontrei.
Como configuro o mouse ou o Firefox para que os eventos X sejam consistentes para que produzam os mesmos comportamentos? Não desejo instalar drivers especiais para este mouse, se possível.
Atualização nº 1
No meu desktop Ubuntu 18.10 LTS, que tem um mouse Logitech M525 Bluetooth , as operações de push da roda de rolagem esquerda e direita geram um conjunto diferente de eventos X do que o mouse com fio usado em meu laptop, conforme visto em xev :
- Operação de pressão da roda de rolagem esquerda: Botão 8
- Operação de pressão da roda de rolagem direita: Botão 9
E as operações de push da roda de rolagem esquerda/direita desse mouse em particular funcionam como eu esperava.
Atualização nº 2:
Testei o mouse Logitech M-UAG120 novamente em ambas as máquinas (meu laptop e meu desktop, ambos executando o Ubuntu 18.10 LTS), e os eventos X gerados são consistentemente diferentes do mouse Logitech M525 Bluetooth .
Eu especulo que os eventos X específicos não são padronizados em dispositivos de mouse, mas isso é surpreendente, pois ambos os dispositivos de mouse são da Logitech.
Solução
Encontrei a seguinte solução:
Eu adicionei
/usr/share/X11/xorg.conf.d/71-Logitech-Optical-Tilt-Wheel-Mouse-M-UAG120.conf
:E reiniciado.
É intrigante para mim que reiniciar o gerenciador de exibição gdm usando
sudo service gdm restart
não funcionou: isso me impediu de fazer login (continuava voltando para o prompt de senha, embora eu não tivesse CAPSLOCK ativado nem nada), então tive que recorrer à reinicialização.TL;DR Material de referência
Material de referência que achei útil para entender o que foi dito acima:
xinput para encontrar o ID do dispositivo e os parâmetros do botão
Por ID do dispositivo, quero dizer o
id=10
número abaixo. Por "parâmetros de botão" quero dizer o significado dos parâmetros usados nosButtonMapping
arquivos/usr/share/X11/xorg.conf.d/71-Logitech-Optical-Tilt-Wheel-Mouse-M-UAG120.conf
.Grep para encontrar o dispositivo depois de conectado:
Veja o que o sistema acha que são os significados dos botões:
Estou especulando que as strings entre aspas são valores enumerados baseados em 1 correspondentes a
ButtonMapping
, mas ainda não tenho prova disso. Então, supondo que esteja correto, podemos numerá-los:Essa especulação também parece combinar com Logitech_Marble_Mouse -- Basic_function .
Assim, as
ButtonMapping
posições para 8 e 9 correspondem às ações "browser back" e "browser forward" que desejo que o sistema passe para o aplicativo Firefox X. Como eu queria preservar todos os outros comportamentos, a linha chave no/usr/share/X11/xorg.conf.d/71-Logitech-Optical-Tilt-Wheel-Mouse-M-UAG120.conf
arquivo é:(Os
^
parâmetros 6 e 7 marcados sendo alterados, apenas).Mapeamento de botões
A seção Mapeamento de botões da página man libinput(4) descreve o mecanismo.
"libinput" é o que eu encontrei porque no Ubuntu 16.04 e Logitech M570 afirma:
Alterando dinamicamente o mapa de botões usando o comando xinput
A página man input(1) tem uma opção para verificar diretamente os parâmetros do botão para a
ButtonMapping
opção sem reiniciar o gerenciador de exibição ou o servidor X:Então o comando que eu poderia usar, sem precisar reiniciar/reiniciar nada, era:
Atribuindo botões
Logitech_Marble_Mouse -- A atribuição de botões é específica do ArchLinux e do dispositivo, mas ainda assim foi bastante útil, especificamente onde afirma:
Exceto que eu realmente tive que alterar os parâmetros 6 e 7 no meu
ButtonMapping
para este dispositivo de mouse. O texto acima não explicou por que declarou "Não altere".página de manual do xorg.conf(5)
A página de manual xorg.conf(5) mostra como os arquivos conf funcionam, mas esteja ciente de que, como o comportamento muda de lançamento para lançamento, certifique-se de que você está no lançamento correto, como pode ser visto no topo de suas páginas da web :
lsusb -d VENDEDOR:DISPOSITIVO
A execução do comando lsusb ( página man lsusb(8) ) me ajudou a identificar o fornecedor e o ID do dispositivo:
Foi isso que acabei usando dentro da
MatchUSBID
opção naInputClass
seção do arquivo71-Logitech-Optical-Tilt-Wheel-Mouse-M-UAG120.conf
. Veja a resposta de Govelius para Problema atribuindo layouts diferentes para vários dispositivos de entrada simultâneos no Linux ./var/log/Xorg*.log arquivos
/var/log/Xorg.*.log
Encontrando os arquivos modificados mais recentemente :Em seguida, vasculhando-o para ver o meu
ButtonMapping
está aparecendo:Logitech Optical Tilt Wheel Mouse M-UAG120
aparece e o subseqüenteButtonMapping
.Configuração da classe de entrada
A seção InputClass da página de manual libinput(4) descreve todas as opções, incluindo a
MatchUSBID
opção.