Entendendo os Mouses
Piter PUNK
1. Introdu��o
Este � um artigo simples, mostrando os tipos de mouses, protocolos e como
configur�-los. Aproveitamos para mostrar como mapear bot�es e como
configurar dois mouses ao mesmo tempo.
2. Tipos de Mouse
A primeira coisa a fazer � como se comunicar com o seu mouse, obviamente
n�o estamos falando em us�-lo como microfone como o Scotty no Jornada nas
Estrelas 4 (slackware - to the REAL nerds), mas queremos saber qual
o protocolo devemos usar.
Al�m do protocolo, os mouses ainda variam quanto � forma de conex�o. Ou
seja, os conectores dos mouses s�o diferentes fisicamente entre si. Nesse
quesito, existem basicamente quatro tipos de mouse:
- Mouses Seriais - com um conector igual ao de joystick
de atari, conhecido como DB9. Se voc� tem um
mouse serial realmente antigo, pode ser que
ele tenha um conector DB25 do tamanho de um
conector de impressora!!!
- Mouses PS/2 - com um conector redondo, conhecido como PS/2 ou
miniDIN.
- Mouses USB - com um conector retangular na ponta, muito do sem
gra�a.
- Mouses de Bus - Ah... a diversidade e o caos...
No mundo real, existem s� os tr�s primeiros tipos. Mouses de bus s�o raros,
e mais raros ainda os que funcionam. Os mouses seriais caminham a passos
largos para o desaparecimento, mas ainda existe uma base instalada razo�vel
deles.
A nossa comunica��o com algum hardware se d� atrav�s de arquivos localizados
dentro do /dev. Assim, o /dev/hda � o seu disco r�gido, o /dev/rtc � o chip
de rel�gio e por a� vai... nessa linha, temos as entradas em que os mouses s�o
ligados.
- Mouses Seriais -> entradas seriais: /dev/ttyS*
- Mouses PS/2 -> entrada PS2: /dev/psaux
- Mouses USB -> entrada USB: /dev/input/mice
No /dev/ttyS* o * pode ser 0, 1, 2 ou 3. Normalmente � o 0. Existe um link
no /dev, chamado /dev/mouse que aponta qual o dispositivo est� sendo utilizado
para a sua comunica��o com o mouse. � poss�vel saber essa configura��o com um
simples ls:
[email protected]:~$ ls -l /dev/mouse
lrwxrwxrwx 1 root root 10 2004-07-30 02:03 /dev/mouse -> input/mice
Ou seja, o meu mouse padr�o � um mouse USB. Nessa m�quina tenho conectado
tamb�m um mouse PS2 (�, s� para escrever este artigo), mas o principal �
o USB. Para mudar o link de um mouse para outro, � poss�vel fazer isso "na
m�o" com o comando ln ou utilizar o mouseconfig. Ao usar o mouseconfig,
lembre-se de que ele configura o mouse apenas no modo texto, n�o tendo
efeito sobre o X.
Agora podemos pensar no segundo passo, o protocolo. Por incr�vel que pare�a,
dois mouses com o mesmo conector podem n�o falar a mesma l�ngua. Principalmente
se o seu mouse for um mouse de "rodinha". Ah! Para ajudar, os nomes dos
protocolos s�o diferentes no X e no gpm (console).
Seriais:
gpm: bare, ms, pnp e ms3*
X: Microsoft, IntelliMouse*
PS/2:
gpm: ps2, imps2*, exps2*, netmouse
X: PS/2, IMPS/2*, ExplorerPS/2*, NetScrollPS/2*, NetMousePS/2
USB:
Praticamente os mesmos do PS/2. Nunca vi um que n�o seja
IMPS/2 no X e imps2 no gpm, mas devem existir.
Todos os protocolos que eu listei com um * do lado s�o protocolos para
mouses com "rodinha". Apenas lembre-se que o gpm ignora solenemente a rodinha
do mouse, apesar de suportar o protocolo utilizado por eles. Os protocolos
mais comuns s�o os primeiros das listas, ficando para o fim os protocolos
mais ex�ticos. Existem uma s�rie de outros protocolos, mas coloquei na lista
apenas os mais "encontr�veis".
3. Configura��o do GPM
Sem maiores segredos, praticamente � s� rodar o mouseconfig e fazer:
/etc/rc.d/rc.gpm restart
Para quem quiser fazer "na m�o" a configura��o, vale a pena uma olhadinha
no pr�prio /etc/rc.d/rc.gpm. Costuma ser suficiente, para os pregui�osos,
a sintaxe de uma linha de comando para chamar o gpm seria algo assim:
gpm -t protocolo -m dispositivo
No caso de um mouse USB por exemplo:
gpm -t imps2 -m /dev/input/mice
Existem v�rias outras op��es, mas a maior parte delas n�o costuma ser
utilizada.
4. Configura��o do X
Aqui a coisa � mais interessante, principalmente porque neste caso a tem�vel
"rodinha" do mouse est� presente. Para quem n�o sabe, o padr�o PS2 original
previa apenas 3 bot�es. Nada de rodinhas e de 5, 6 ou 7 bot�es em um mouse.
E isso causou um verdadeiro samba do crioulo doido, j� que cada fabricante
fez um "puxadinho" no protocolo para suportar a rodinha e os bot�es extras.
O mais comum desses "puxadinhos" � o IMPS/2, o segundo mais comum � o
ExplorerPS/2. Geralmente os mouses com muitos bot�es obedecem ao segundo
protocolo, mas isso n�o � uma regra.
Uma entrada de mouse dentro do /etc/X11/xorg.conf se parece com isso:
Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Device" "/dev/psaux"
Option "Protocol" "IMPS/2"
Option "Buttons" "5"
Option "ZAxisMapping" "4 5"
EndSection
Cada uma das linhas a� dentro tem uma utilidade:
- Identifier -> O nome pelo qual esse mouse ser� identificado
- Driver -> O que � esse dispositivo, no caso de mouses,
sempre ser� "mouse"
- Device -> O dispositivo utilizado, nesse caso, � um
mouse conectado � porta PS/2
- Protocolo -> O protocolo do mouse
- Buttons -> Quantidade de bot�es
- ZAxisMapping -> Quais bot�es s�o utilizados para a rodinha.
Deu para ver que essa sintaxe � referente a um mouse que possui a
rodinha. Ele � um mouse com tr�s bot�es, o da esquerda, a rodinha e o
da direita. N�s colocamos "Buttons" "5", para avisar que existem dois
bot�es "virtuais", o movimento da rodinha para cima e o movimento da
rodinha para baixo.
Se o seu mouse possuir 5 bot�es: o esquerdo, a rodinha, o direito e mais
dois laterais (por exemplo), voc� deve colocar "Buttons 7" se quiser usar
os dois bot�es laterais e mapear a rodinha para os bot�es 6 e 7. Esta �
a configura��o que uso para um Dr.Hank nessas condi��es:
Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Device" "/dev/psaux"
Option "Protocol" "ExplorerPS/2"
Option "Buttons" "7"
Option "ZAxisMapping" "6 7"
EndSection
Vemos a� o protocolo diferente (ExplorerPS/2) e a mudan�a na quantidade
de bot�es e no mapeamento deles. Mas surge agora um novo problema, muitos
gerenciadores de janelas e programas por a� s� mapeiam o movimento da
rodinha nos bot�es 5 e 6, o q fazer?
Uma solu��o seria simplesmente ignorar os �ltimos bot�es e colocar
"Buttons" "5" e "ZAxisMapping" "4 5". Mas, e se quisermos usar todos os
bot�es?
Simples, vamos "trocar" os bot�es do mouse de lugar! Vamos primeiro imprimir
como esses bot�es est�o mapeados:
[email protected]:~$ xmodmap -pp
There are 7 pointer buttons defined.
Physical Button
Button Code
1 1
2 2
3 3
4 4
5 5
6 6
7 7
Esse monte de coisas estranhas est� dizendo: Olha, o bot�o 1 do mouse manda
o c�digo do bot�o 1, o bot�o 2 manda o do 2 e por a� vai... Vamos mudar
essa tabela para que ele diga algo assim: O bot�o 1 manda o c�digo 1, o 2
manda o 2, mas o 4 manda o c�digo 6, o 5 manda o 7 e vice-versa. Confuso?
N�o se preocupe, isso piora.
[email protected]:~$ xmodmap -e "pointer = 1 2 3 6 7 4 5"
Pronto! Com isso trocamos os bot�es de lugar, perceba que ao inv�s do t�pico:
1 2 3 4 5 6 7, invertemos as posi��es do 6 com o 4 e do 5 com o 7. Essa nova
disposi��o faz com que quando usemos a rodinha (bot�es 6 e 7) o X entenda que
estamos usando os bot�es 4 e 5. E todos os programas que usam a rodinha do
mouse funcionam felizes -:)
Se mesmo assim a rodinha n�o funcionou, voc� pode trocar o protocolo que
est� no xorg.conf por outro (ou at� mesmo pelo "Auto" para poder descobrir
que raios de mouse � esse seu). Ah! Se a rodinha funcionou (e voc� precisou
do xmodmap) crie um arquivo .Xmodmap na sua �rea e coloque dentro dele o
comando que voc� enviou para o xmodmap. O meu est� assim:
[email protected]:~$ more .Xmodmap
keycode 113 = Mode_switch
keycode 47 = semicolon colon ccedilla Ccedilla
pointer = 1 2 3 6 7 4 5
Esse arquivo ser� lido sempre que voc� entrar no X. As configura��es aqui
foram testadas em mouses da A4Tech (USB), MTek (USB e PS2), DrHank (PS2) e
Compaq (PS2) e Troni (PS2). Todos, menos o da Compaq, com rodinha. O da Troni,
mesmo tendo 5 bot�es e insistindo que � ExplorerPS2 n�o aceita a
configura��o que indiquei, dois bot�es dele se comportam sempre como sendo
o bot�o 2 (bot�o do meio).
4.1. Dois mouses
Quem tem um notebook sabe o quanto aquela superf�cie que faz as vezes de
mouse enche o saco. Quem tem o mouse estilo "clit�ris" entre o J e o K padece
mais ainda. � muito comum a pessoa ter um segundo mouse, externo, para passar
um pouco menos de raiva.
O que nem todo mundo sabe, � que d� para configurar dois mouses de modo
simult�neo. Assim, voc� pode continuar usando o mouse do seu notebook e um
mouse externo sem precisar ficar editando arquivos de configura��o toda vez
que troca de mouse.
Antes de come�ar, os dois mouses devem acessar dispositivos diferentes, um
pode ser USB e outro PS/2, um Serial e um USB, um Serial e um PS/2 ou, at�
mesmo, dois mouses USB.
A maior parte dos mouses embutidos em notebooks s�o PS2, ent�o irei
considerar que o mouse "padr�o" � um PS2 e o externo � um USB. Caso este n�o
seja o seu caso, basta usar um pouco a cabe�a e adaptar as configura��es.
Section "InputDevice"
Identifier "MousePadrao"
Driver "mouse"
Option "Device" "/dev/psaux"
Option "Protocol" "PS/2"
EndSection
Section "InputDevice"
Identifier "MouseExterno"
Driver "mouse"
Option "Device" "/dev/input/mice"
Option "Protocol" "IMPS/2"
Option "Buttons" "5"
Option "ZAxisMapping" "4 5"
Option "Resolution" "256"
EndSection
Estas s�o as entradas para os dois mouses. Nas entradas em si, n�o
existe nada que indique qual mouse � qual e o que eles est�o fazendo,
isso � feito por outra se��o no xorg.conf:
Section "ServerLayout"
Identifier "Simple Layout"
Screen "Screen 1"
InputDevice "MousePadrao" "CorePointer"
InputDevice "Keyboard1" "CoreKeyboard"
InputDevice "MouseExterno" "AlwaysCore"
EndSection
Pronto! As duas linhas que falam dos mouses fazem com que os dois sejam
"obedecidos". O MousePadrao � o "CorePointer" e o segundo Mouse envia dados
para ele. Agora voc� pode inclusive fazer uma "guerra" de mouses com cada um
puxando o mouse para um lado.
No segundo mouse (MouseExterno) existe uma op��o "Resolution", ela informa
qual a resolu��o do mouse. Quanto maior a resolu��o, mais preciso o seu mouse.
Mexer nesse par�metro altera a velocidade do mouse na tela, se voc� est�
irritado com isso, esse � o bom lugar para mudar.
5. Conclus�es
S�o algumas configura��es simples para o mouse, mas que fazem toda a
diferen�a. Ainda existe muito o que falar sobre esse assunto, inclusive pela
quantidade de modelos e tipos de mouses que existem no mercado. Mas, este
artigo, j� d� uma boa "introdu��o" ao assunto.
Ah! Eu sei que o plural de mouse � "mice", mas no documento preferi utilizar
mouses por que eu quis e pronto. Quaisquer outras d�vidas ou sugest�es, o
e-mail � aquele de sempre:
[email protected].
|