4 minutos
Mapeando mouse no Xorg
Apesar do post se tratar da configuração de um Madcatz R.A.T.3, ele serve para entender o mapeamento de qualquer mouse, para que você possa configurar o seu da melhor forma possível.
O que percebi enquanto usava esse modelo de mouse, sem muito suporte pelo X.Org Server é que ele se perdia com os botões e isso me impossibilitava de clicar, mas movimentando normalmente o ponteiro do mouse. Sim, acontecia isso e eu só lembro disso quando reinstalo o sistema e percebo que o mouse não funciona, daí a utilidade de um teclado e terminal.
Você primeiramente precisa saber o nome do seu mouse, para isso use o comando:
$ lsinput
Se não estiver disponível, instale em sistemas derivados de Debian com:
Nota: No Debian, o suporte a todos os botões só funcionou seguindo estes passos, já no Ubuntu eu resolvi com este vídeo.
$ sudo apt-get install input-utils
Procure pela identificação do seu mouse, no meu caso:
/dev/input/event5
bustype : BUS_USB
vendor : 0x738
product : 0x1703
version : 256
name : "Madcatz Mad Catz R.A.T.3 Mouse"
phys : "usb-0000:00:14.0-4/input0"
uniq : ""
bits ev : EV_SYN EV_KEY EV_REL EV_MSC
Agora sei o nome “real” do meu mouse, ou que o sistema entende Madcatz Mad Catz R.A.T.3 Mouse.
Feito isso, precisamos mapear os botões, primeiro conte quantos botões tem seu mouse.
ok, já contou?
O próximo passo é saber quais botões mapear, para isso use o comando:
$ xev
Dentro da janela branca que apareceu, você coloca o ponteiro do mouse (bem espefico, pra ninguém colocar o mouse na tela do computador) e sem movimentar ele, pressione os botões do mouse. Observe que a saída será semelhante a esta:
ButtonPress event, serial 36, synthetic NO, window 0x1a00001,
root 0x2d9, subw 0x0, time 1120490, (1,5), root:(791,274),
state 0x0, button 5, same_screen YES
Pois bem, observe o número na frente do button sempre muda, pois bem, esse número é o que precisamos.
Deixe a janela aberta, e preencha uma linha no bloco de notas ou em algum lugar com 0, repita a quantidade de zeros igual ao número total de botões do seu mouse. Mouse wheel up e down também contam, no meu caso fica assim:
0 0 0 0 0 0 0 0 0 0 0 0 0 0
Agora lembra da janelinha que vimos com o comando xev
, clique em algum
botão do mouse.
Eu cliquei e apareceu button 5, igual no exemplo ali em cima. Conto os zeros e na posição 5, eu substituo o zero pelo próprio número 5:
0 0 0 0 5 0 0 0 0 0 0 0 0 0
Fazendo o mesmo procedimento com todos os botões do meu mouse, chego no seguinte resultado:
1 2 3 4 5 0 0 8 9 0 0 0 13 14
Agora já temos o nome e o mapeamento, eu te mostro a solução mais encontrada para o meu mouse na internet:
Section "InputClass"
Identifier "Mouse Remap"
MatchProduct "Madcatz Mad Catz R.A.T.3 Mouse"
MatchDevicePath "/dev/input/event*"
Option "ButtonMapping" "1 2 3 4 5 0 0 8 9 0 0 0 13 14"
EndSection
Analisando os passos que seguimos, tudo faz sentido, toda vez que existir um evento de entrada, no caso:
/dev/input/event5
Mapeamos o /dev/input/event*, com asterisco para que ele observe
todos os eventos e só faça o remap quando o MatchProduct for igual ao
nome do produto (lembra do comando lsinput
e do campo name?). Quando
as condições forem aceitas, ele faz o remapeamento correto.
E não se esqueça, para salvar em Debian e Ubuntu, eu utilizei a pasta
/usr/share/X11/xorg.conf.d
com a extensão .conf
. Ficando algo como:
/usr/share/X11/xorg.conf.d/rat3.conf
Com o conteúdo:
Section "InputClass"
Identifier "Mouse Remap"
MatchProduct "Madcatz Mad Catz R.A.T.3 Mouse"
MatchDevicePath "/dev/input/event*"
Option "ButtonMapping" "1 2 3 4 5 0 0 8 9 0 0 0 13 14"
EndSection