Piter Punk's HomePage - Artigos
 
English version
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].


Links Principal Artigos Piter Punk Dicas Programas
 
Powered by Slackware Linux - Written in VIm (the best one!) Last Update: 30 Oct 2004