Configuração de teclado e dispositivos de entrada em geral a partir do HAL no Xorg 1.5 e superiores

A partir do Xorg 1.5, a configuração "default" dos dispositivos de entrada (teclado, mouse etc) passa a ser feita pelo HAL ao invés dos drivers que acompanham o Xorg. Este artigo pretende mostrar o porquê dessa mudança e como resolver o problema se seu sistema simplesmente parou de funcionar como deveria após o upgrade do Xorg.

[ Hits: 35.991 ]

Por: Cláudio Henrique Fortes Félix em 17/06/2009 | Blog: http://www.helpo.com.br


Introdução



Se você também é do tipo ávido por experimentar todas as últimas novidades que vivem aparecendo em nossos adorados sistemas GNU/Linux, certamente já passou por algumas inevitáveis dores de cabeça em que inexplicavelmente alguma coisa pára de funcionar.

Recentemente fui vítima disso após fazer o upgrade de meu Slackware 12.2 para a versão current e verificar que meu teclado insistia em funcionar com o layout errado (US), mesmo com a clara regra no xorg.conf especificando um teclado br/abnt2. Após a tradicional análise dos logs e uma boa pesquisa, descobri o porquê, aprendi mais um pouquinho e resolvi escrever este artigo, pois suponho que muita gente ainda vá esbarrar no mesmo problema, que no fundo nada mais é que o resultado da evolução natural do nosso querido sistema.

O servidor X originalmente foi feito para funcionar em diversas plataformas Unix numa época em que não se tinha qualquer padrão garantido entre elas. Por causa disso acabava por duplicar grande parte da funcionalidade que o próprio sistema operacional já disponibilizava, incluindo a abstração de dispositivos de entrada como teclado e mouse. Felizmente hoje temos uma base de sistemas livres GNU/Linux que fornece um ambiente muito mais padronizado, permitindo que o servidor X tire proveito efetivo das funcionalidades já oferecidas pelo sistema operacional.

No caso específico dos dispositivos de entrada, já há algum tempo o kernel do Linux oferece um driver para acesso genérico a dispositivos de I/O: o evdev. Este driver cuida dos detalhes específicos de funcionamento dos dispositivos de entrada e apresenta ao espaço de usuário uma interface para os mesmos. Porém, restava o problema de como o X deveria perguntar ao sistema que dispositivos estariam presentes e como eles deveriam ser tratados de forma específica (por exemplo, qual seria a função de cada botão de um mouse não padrão, ou o mapa de teclado a ser utilizado).

Atualmente isso é tratado por meio do HAL (hardware abstraction layer). O HAL possui um daemon que fica monitorando a criação ou remoção de dispositivos pelo UDEV - sistema de gerenciamento dinâmico de dispositivos, que cria ou deleta entradas no diretório /dev representando os dispositivos conectados ao sistema - e os aplicativos podem então pedir informações sobre os dispositivos existentes ao HAL por meio do protocolo DBUS, que oferece uma forma padronizada de comunicação entre processos.

Enfim, o que ocorre a partir do Xorg 1.5 é que, ao invés de utilizar drivers próprios para tratar os dispositivos de entrada (xkb, mouse etc), o servidor X passou a utilizar o módulo evdev do kernel, obtendo durante sua inicialização a informação de que dispositivos estariam presentes e com que configuração deveria utilizá-los por meio de uma chamada DBUS ao HAL.

Nas seções seguintes pretendo mostrar como identificar se o problema está acontecendo no seu sistema e como reconfigurá-lo para que tudo volte a funcionar como deveria.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Identificando o problema
   3. Resolvendo o problema de forma "evolutiva"
   4. Resolvendo o problema de forma "reacionária"
Outros artigos deste autor

Acessando computadores remotos protegidos por NAT ou firewall com túnel SSH reverso direcionado por DNS dinâmico

Configuração do OpenOffice para o português do Brasil (pt-BR) a partir de uma instalação do BrOffice

Importando extratos do Banco do Brasil para o Kmymoney (gerenciador de finanças pessoais)

Leitura recomendada

Integrando Nagios com Asterisk

MaraDNS: Simples - Seguro - Robusto (parte 2)

Traceroute com ICMP e TCP

Compilando e instalando o Wine, WineTools e Internet Explorer(s) no Linux

Cable modem no Mandrake 10

  
Comentários
[1] Comentário enviado por fco em 17/06/2009 - 15:02h

Muito bom o artigo! Belamente escrito!

Passei pelo tormento de atualizar o xorg no Slackware current.

As coisas ficaram doidonas. :)

O mesmo problema do teclado, perda de performance da placa de vídeo, travadas legais no KDE4.

O artigo é uma luz para começar a por as coisas no eixo.

Mas, confesso que prefiro a simplicidade das coisas antigas... :)

Abraço,
Xico.

[2] Comentário enviado por xerxeslins em 17/06/2009 - 16:07h

Senti essa mudança há alguns meses ao atualizar o Arch Linux, antes que essa modificação fosse feita na maioria das distros... já que Arch sempre se mantém moderna, embora não tão estável.

Tomara que essa configuração seja logo implantada no processo de instalação das distros de agora em diante, enquanto isso seu excelente artigo será imprescindível. Artigo realmente é muito esclarecedor =D

Outra opção é usar o comando:

setxkbmap -model abnt2 br

no /etc/rc.d/rc.local

Para ser executado automaticamente ao inicializar o sistema. Provisoriamente é assim que faço aqui.

Valeu!


[3] Comentário enviado por aaron.binner em 17/06/2009 - 17:01h

Também percebi esta mudança na minha ultima atualização, mas resolvi da forma "reacionária" apenas avaliando o arquivo de log do xorg, e, à primeira impressão repreendi a mudança, mais acredito que os desenvolvedores estão pensando somente na melhora do desempenho e na diminiução de trabalho para nós usuários. Ótimo artigo, muito bem explicado, e agora sei como resolver o problema da maneira 'correta'. VALEU!!!

[4] Comentário enviado por pablover em 18/06/2009 - 08:57h

Gostei demais do seu artigo. Ajudou a esclarecer várias coisas. Porém após eu configurar o "br" e "abnt2", a tecla de interrogação para de funcionar. Você sabe por que isso acontece?

[5] Comentário enviado por dfsantos em 19/06/2009 - 11:59h

Amigo parabens pelo belo artigo. otima qualidade.

[6] Comentário enviado por chffelix em 22/06/2009 - 22:24h

Obrigado pessoal! É sempre um prazer poder participar e trocar novas idéias com vocês. Em breve devo postar alguns updates, pois tive problemas no acesso via NX usando o novo método - talvez seja uma questão de tempo para que o nxclient seja adaptado, mas o teclado fica totalmente louco dentro dele:( . Sobre a questão da interrogação pablover, não tive problemas. Como foi que você fez a configuração? Editou quais arquivos?

Abraços!

[7] Comentário enviado por elton.linux em 08/07/2009 - 18:20h

Parabéns!!!

Uso archlinux + LXDE e estava com esse problema. Antes configurava no XORG, mas agora o HAL toma conta o que creio ter ficado melhor.

Só um detalho, como diria o REI ROBERTO CARLOS, no ARCHLINUX para reiniciar o HAL faça:

#/etc/rc.d/hal restart

Valeu
Abraço

[8] Comentário enviado por zereis em 02/09/2009 - 10:48h

Caros colegas,
Tive problemas ao atualizar o xorg. O teclado continua com o layout abnt2, mas perdi as teclas Page Down, End, seta para baixo (virou /) e o ponto do teclado numérico virou vírgula. Para resolver, tem alguns truques, mas só funcionam naquela Sessão. Se reiniciar o X, perde-se a solução e tem-se que refazer o comando. Uma da soluções é usar o comando setxkbmap -model abnt2 br; Outro é remapeando a tecla, especificando a ação específica dela; uma terceiro solução é fazendo Ctrl+Alt+F1 e voltando com Ctrl+Alt+F7. Só que, repito, ao reiniciar o X, o problema volta.
Tentei automatizar as soluções, tanto colocando o comando setxkbmap -model abnt2 br no arquivo /etc/rc.d/rc.local, ou fazendo um script e colocando em Autostart. Não funcionaram.
No arquivo /etc/hal/fdi/policy/10-keymap.fdi está informando abnt2 e br nos locais específicos.
De tanto tentar resolver o problema, acabei criando outro que não consigo resolver: perdi o console pelas teclas Ctrl+Alt+Fn. Parece que chama-se o console mas a resolução da tela não permite-se que as letras sejam visualizadas. A tela preta fica até tipo no quarto superior da tela. Abaixo vê-se o X mas sem ação nenhuma sobre a tela. A digitar Ctrl+Alt+F7 volta-se ao X, normalmente.
Ao tentar Option "AutoAddDevices" "off" no xorg.conf, o mouse simplesmente fica congelado no centro da tela.
Att.
José Reis

[9] Comentário enviado por yermandu em 15/02/2010 - 16:14h

Cara

Valeu !!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts