sábado, 12 de abril de 2008

Mouse Serial no Linux

Algumas pessoas têm dificuldades em configurar um mouse para usar no Linux. Esta pequena dica tentará, resumidamente, mostrar umas maneiras de se conseguir isso. Os métodos que descrevo aqui são baseados em comandos.

Antes de qualquer coisa algumas informações são interessantes:

  • Os mouses seriais geralmente são conectados na porta COM1;
  • No Linux, a porta COM1 é mapeada para o dispositivo /dev/ttyS0;
  • Os protocolos da Microsoft e o da MouseSystems são os mais comuns;
  • O X foi feito pensando em mouses de tres botões da Microsoft;

Existem várias maneiras de se configurar um mouse: utilizar um programa de configuração que veio com a distribuição; editar diretamente o arquivo de configuração do Xorg; Editar os arquivos de inicialização do GPM.

O mais simples deles é usar algum programinha de configuração com alguma interface gráfica. Um bom exemplo é o MOUSECONFIG do Slackware. Com ele o usuário apenas diz qual o tipo de mouse que tem intalado em seu computador e diz em que porta ele está conectado. O programa faz o resto. Tentei este método, mas ele não funcionou para mim.

A segunda maneira é configurar o arquivo xorg.conf ou XF86Config (dependendo da distribuição). Siga os passos:

Edite o arquivo de configuração do X. No Slackware (padrão BSD) o arquivo fica no endereço: /etc/X11/xorg.conf. Não se esqueça de fazer um backup do arquivo original. Localize e edite estas linhas:

Section "InputDevice"

Identifier "NOME_DO_MOUSE" # NOME QUE VC OU O SISTEMA DERAM AO MOUSE

driver "mouse" # DRIVE QUE ACESSA O MOUSE

Option "Protocol" "PROTOCOLO" # DETECTAR O PROTOCOLO AUTOMATICAMENTE

Option "Device" "DISPOSITIVO" # INDICA ONDE O MOUSE ESTA CONECTADO

Protocolo: tente os tres protocolos mais comuns que são: Auto, Microsoft e MouseSystems.

Auto: Faz o sistema reconhecer automaticamente o tipo de mouse usado. Isso pode funcionar, mas é necessário ficar mexendo no mouse enquando inicia o X, para que seja reconhecido.

Microsoft: Funciona com a maioria dos mouses feitos especialmente para o Window$.

MouseSystems: Funciona para os mouses que obedecem a este padrão industral, que funciona baseando-se na existência de 3 botões. A maioria dos mouses baratos de 3 botões funciona ou pode funcionar com esse protocolo.

Dispositivo: É o arquivo que representa um dispositivo real e físico conectado ao sistema. Os mouses mais comuns são conectados ou no conector PS/2 ou no conector COM1 (os mais antigos) ou, ainda, no conector COM2 (mais difícil de se ver). Como esta dica refere-se a mouses seriais, o dispositivo considerado aqui deverá estar instalado na porta COM1.

PS/2: Um padrão de conecão de dispositivos de entrada de dados usado principalmente como entradas de teclado e mouse.

COM1: Geralmente esta porta é montada no dispositivo virtual /dev/ttyS0.

COM2: Geralmente esta porta é montada no dispositivo virtual /dev/ttyS1.

Obs: Aqui usei o termo "geralmente" porque é possível que o usuário/técnico modifique a configuração das portas em placas de Form Factor AT, simplesmente trocando a posição dos cabos referentes a cada porta na placa-mãe.

Um exemplo de configuração do xorg.conf que funciona em boa parte dos cados é o seguinte:

Option "Protocol" "Microsoft"

Option "Device" "/dev/ttyS0"

Esta pequena modificação funcionou uma vez para mim.

O terceiro jeito de se fazer o mouse funcionar é utilizando o serviço chamado GPM. O GPM é um serviço do linux que faz o mouse funcionar em programas executados em terminal/console. O que devemos fazer é enganar o X para que ele leia o arquivo gerado pelo GPM, pensando que está lendo o mouse. Siga os passos adiante:

Edite aquelas linhas do PROTOCOLO e do DISPOSITIVO para que fiquem deste jeito:

Option "Protocol" "MouseSystems" # OBRIGATORIAMENTE MOUSESYSTEMS

Option "Device" "/dev/gpmdata" # DISPOSITIVO FICTÍCIO GERADO PELO GPM

MouseSystems: O GPM gera um arquivo fictício chamado gpmdata que recebe repete todas as informações lidas do mouse. No entanto, esse arquivo é convertido para protocolo da MouseSystems por ser uma espécie de padrão industria largamente aceito.

GpmData: o dispositivo fictício criado pelo GPM para repassar o que foi lido do mouse.

Depois de ter configurado o xorg.conf para usar o protocolo da MouseSystems e o disposirivo fictício /dev/gpmdata, agora vamos executar os comando que irão iniciar o serviço do GPM.

Primeiramente pare o serviço, caso o GPM já esteja rodando.

gpm -k

Depois execute novamente o GPM com os parâmetros dados abaixo:

gpm -R msc -m /dev/ttyS0 -t pnp

Esse comando vai fazer o seguinte:

gpm -> chamado ao serviço GPM

-R msc -> Copia (Repete) as informações recebidas do mouse no formato do protocolo MouseSystems. Esse parâmetro cria o arquivo /dev/gpmdata.

-m /dev/ttyS0 -> Indica onde o mouse está conectado. Neste caso na porta serial COM1.

-t pnp -> Indica o tipo de mouse que está conectado. Os mais fáceis de funcionar são os ms (Microsoft), msc (MouseSystems) e pnp (Plug-and-Play). Aqui usei o plug-and-play porque funcionou comigo.

Se isso der certo com você, inclua este comando acima num arquivo chamado rc.gpm, cujo caminho completo será /etc/rd.d/rc.gpm (em distribuições baseadas em BSD). Dê as permissões de execucão (comando chmod +x /etc/rc.d/rc.gpm. Esse arquivo será executado toda vez que o sistema for inicializado, para você não ter que digitar o comando toda vida.

Depois de executar um desses três procedimentos descritos acima é só chamar o X. Em algumas distribuições isso é feito com o comando startx. Para "matar" o X, aperte as teclas [CTRL]+[ALT]+[BACKSPACE]. Se não der certo com uma configuração, basta matar o X, fazer as edições necessárias e iniciar o X novamente até que o mouse seja reconhecido.

Esta postagem foi feita com a intenção de ajudar pessoas que instalam o linux e que não conseguem fazer o mouse funcionar. Ela não é uma solução definitiva, visto a grande diversidade de distribuições, tipos de mouse. Mas fica aí minha contribuição.

Obrigado por ler até aqui. Boa sorte.

Um comentário:

  1. Valew pelo artigo, me ajudou muito com problemos com o mouse serial no Puppy Linux!
    Obrigado.

    ResponderExcluir