Mapeando mouse no Xorg

 linux

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

Referências


comments powered by Disqus