------->
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.
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
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
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