Página seguinte Página anterior Índice

4. A configuração do Sistema de Janelas X (X Window System)

-------> Não corte aqui, ou vai destruir seu monitor.

O Sistema de Janelas X vem equipado com um utilitário destinado à configuração do teclado, chamado xmodmap, que cumpre uma função idêntica ao comando loadkeys, ou seja, lê um ficheiro de mapa de teclado de X, expecificando as equivalencias entre os scancodes e respectivos keycodes.

Eis um excerto deste ficheiro:

keycode 47 = Ccedilla
keycode 48 = masculine ordfeminine
keycode 51 = Dtilde Dcircumflex_accent

Observem que, ao contrário do loadkeys, o xmodmap não possui um diretório padrão onde o arquivo é procurado.

A configuração do Sistema de Janelas X não interfere de forma alguma com a configuração do modo de texto. De facto, é possível ter o seu X bem configurado, e no entatanto não ter realizado qualquer tipo de configuração ao modo de texto, e vice-versa. Outro ponto importante de se observar é que os códigos numéricos das teclas no X não correspondem aos do console. A tecla Backspace, por exemplo, tem o número 14 no console, e 22 no X.

As versões antigas deste documento afirmavam que na versão XFree 3.1.x não é possível a utilização de dead-keys. Eu nunca fiz esta experiência e não tenho como confirmar a informação. É certo, porém, que embora as versões 3.2 e posteriores do XFree permitam a definição de dead-keys, o tratamento dessas teclas é responsabilidade da aplicação. Isto deve-se so facto de o X Consortium ter chegado à conclusão de que o sistema de mapeamento de teclas não tratava de forma satisfatória toda a imensa variedade de línguas escritas nas várias partes do mundo. Deste modo, decidiu-se que o ``peso'' relativo à gestão do teclado fosse transferido para as aplicações X.

4.1 Configuração do xinit

Junto com este documento são fornecidos três mapas de teclado para uso no X. Para automatizar o processo de configuração do teclado basta copiar um desses arquivos para o diretório /usr/X11R6/lib/X11/xinit, onde normalmente ficam os arquivos de iníco da seção de trabalho no X. No Slackware esse diretório é um link simbólico para /var/X11R6/lib/xinit e no Red Hat para /etc/X11/xinit.

Verifique se no referido diretório existe um arquivo chamado .Xmodmap. Se existir, copie o Xmodmap.<alguma-coisa> para ele, ou faça um link. Normalmente o arquivo de configuração xinitrc possui os comandos para carregá-lo automaticamente. Veja o seguinte trecho:

#!/bin/sh
# $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap

# merge in defaults and keymaps

if [ -f $sysresources ]; then
    xrdb -merge $sysresources
fi

if [ -f $sysmodmap ]; then
    xmodmap $sysmodmap
fi

4.2 Configuração do XDM

Existe ainda um pequeno problema: no meu computador, por exemplo, o sistema carrega diretamente o X ao dar boot e o login é feito pelo X Display Manager (xdm). Como o xdm faz o login antes de iniciar a seção de trabalho, o mapa de teclado não será carregado, o que pode criar problemas se o usuário usa caracteres como ``['' ou ``]'' em sua senha, pois nos teclados ABNT-2 e português esses símbolos são gerados por teclas cujos códigos numéricos não são os mesmos do teclado americano.

Para resolver isso é necessário fazer uma pequena alteração no arquivo de configuração Xsetup_0. Esse arquivo deve estar no diretório /usr/X11R6/lib/X11/xdm, que no Slackware é um link simbólico para /var/X11R6/lib/xdm e /etc/X11/xdm no RedHat (sujeito a confirmação). Eis o conteúdo completo desse arquivo:

#!/bin/sh
# $XConsortium: Xsetup_0,v 1.3 93/09/28 14:30:31 gildea Exp $

sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap

# merge in defaults and keymaps

if [ -f $sysresources ]; then
    xrdb -merge $sysresources
fi

if [ -f $sysmodmap ]; then
    xmodmap $sysmodmap
fi

xconsole -geometry 480x130-0-0 -daemon -notify -verbose \
         -fn fixed -exitOnFail

4.3 Compose

Uma das coisas mais importantes a definir quando vamos utilizar acentuação por meio de dead-keys é o conjunto de regras de composição. Essas regras determinam, por exemplo que a composição do caractere ' com a letra e gerará um é.

Ao contrário do console, no qual podemos definir as regras de composição no mapa de teclado, no X essas regras são colocadas no arquivo /usr/X11R6/lib/X11/locale/iso8859-1/Compose.

Para facilitar o uso do teclado US+ (veja adiante) é conveniente definirmos uma nova regra de composição, permitindo que o Ç seja gerado pela seqüência 'C. Se não fizermos isso, seremos obrigados a digitar <dead_cedilla-C>, sedo o dead_cedilla produzido pela combinação AltGR-=, o que não é nada confortável.

Para incluirmos as novas regras, basta aplicar a seguinte alteração usando o utilitário patch:

*** Compose.orig        Tue Jun  3 23:39:14 1997
--- Compose     Sun Dec 28 02:07:41 1997
***************
*** 209,212 ****
--- 209,216 ----
  <Multi_key> <asterisk> <a>           : "\345"        aring
  <Multi_key> <a> <e>                  : "\346"        ae
+ <Multi_key> <C> <apostrophe>         : "\307"        Ccedilla
+ <Multi_key> <apostrophe> <C>         : "\307"        Ccedilla
+ <Multi_key> <c> <apostrophe>         : "\347"        ccedilla
+ <Multi_key> <apostrophe> <c>         : "\347"        ccedilla
  <Multi_key> <C> <comma>                      : "\307"        Ccedilla
  <Multi_key> <comma> <C>                      : "\307"        Ccedilla
***************
*** 380,383 ****
--- 384,389 ----
  <dead_tilde> <a>                        : "\343"        atilde
  <dead_diaeresis> <a>                    : "\344"        adiaeresis
+ <dead_acute> <C>                        : "\307"        Ccedilla
+ <dead_acute> <c>                        : "\347"        ccedilla
  <dead_cedilla> <C>                      : "\307"        Ccedilla
  <dead_cedilla> <c>                      : "\347"        ccedilla
***************
*** 626,629 ****
--- 632,639 ----
  Ctrl<T> <asterisk> <a>                       : "\345"        aring
  Ctrl<T> <a> <e>                              : "\346"        ae
+ Ctrl<T> <C> <apostrophe>             : "\307"        Ccedilla
+ Ctrl<T> <apostrophe> <C>             : "\307"        Ccedilla
+ Ctrl<T> <c> <apostrophe>             : "\347"        ccedilla
+ Ctrl<T> <apostrophe> <c>             : "\347"        ccedilla
  Ctrl<T> <C> <comma>                  : "\307"        Ccedilla
  Ctrl<T> <comma> <C>                  : "\307"        Ccedilla

O arquivo Compose.patch pode ser obtido em minha página pessoal. Para aplicar a atualização, copie-o para o diretório /usr/X11R6/lib/X11/locale/iso8859-1/ e invoque o utilitário patch:

patch < Co}pose.patch


Página seguinte Página anterior Índice