473 lines
26 KiB
HTML
473 lines
26 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
|
|
<TITLE>Linux Portuguese-HOWTO: Configuração do X</TITLE>
|
|
<LINK HREF="Portuguese-HOWTO-6.html" REL=next>
|
|
<LINK HREF="Portuguese-HOWTO-4.html" REL=previous>
|
|
<LINK HREF="Portuguese-HOWTO.html#toc5" REL=contents>
|
|
</HEAD>
|
|
<BODY>
|
|
<A HREF="Portuguese-HOWTO-6.html">Next</A>
|
|
<A HREF="Portuguese-HOWTO-4.html">Previous</A>
|
|
<A HREF="Portuguese-HOWTO.html#toc5">Contents</A>
|
|
<HR>
|
|
<H2><A NAME="CONF-X"></A> <A NAME="s5">5. Configuração do X</A></H2>
|
|
|
|
<P>Quando o servidor X está ativo, ele coloca o teclado do computador em um modo
|
|
de operação chamado <EM>raw</EM> (cru), em oposição ao modo normal, chamado
|
|
<EM>cooked</EM> (isto mesmo: cozido). No modo raw o sistema operativo não processa
|
|
seqüências acento-letra. O servidor X é uma daquelas raras aplicações que,
|
|
por dever de ofício, tem que tratar o teclado ``em baixo nível''.
|
|
<P>O X vem equipado com um utilitário destinado à configuração do teclado,
|
|
chamado <EM>xmodmap</EM>, que cumpre uma função correspondente à do comando
|
|
<EM>loadkeys</EM>, ou seja, lê um arquivo de mapa de teclado do X, expecificando
|
|
as equivalências entre os <EM>keycodes</EM> e respectivos <EM>keysymbols</EM>.
|
|
<P>Eis um excerto deste arquivo:
|
|
<PRE>
|
|
keycode 47 = ccedilla Ccedilla dead_acute dead_doubleacute
|
|
keycode 48 = masculine ordfeminine dead_circumflex dead_caron
|
|
keycode 49 = backslash bar notsign
|
|
keycode 50 = Shift_L
|
|
keycode 51 = dead_tilde dead_circumflex dead_grave dead_breve
|
|
</PRE>
|
|
|
|
Observem que, ao contrário do loadkeys, o xmodmap não possui um diretório
|
|
padrão onde o arquivo é procurado.
|
|
<P>A configuração do 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 entanto
|
|
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 <B>Backspace</B>, por
|
|
exemplo, tem o número 14 no console, e 22 no X (em um computador do tipo
|
|
IBM-PC).
|
|
<P>As versões 3.2 e posteriores do XFree86 permitam definir <EM>dead-keys</EM>, mas
|
|
o seu tratamento é responsabilidade da aplicação, conforme visto na seção
|
|
<A HREF="Portuguese-HOWTO-2.html#SEC:DIFXC">Modo texto versus Sistema de Janelas X</A>. Há modos de
|
|
contornar esta limitação e tornar o tratamento de <EM>dead-keys</EM> transparente
|
|
às aplicações, conforme mostrado na seção
|
|
<A HREF="#SEC:CONTOR-X">Contornando os limites do X</A>.
|
|
<P>Dividimos a configuração em duas partes: Uma que deve ser feita antes do
|
|
<EM>login</EM> do usuário e outra depois.
|
|
<P>
|
|
<H2><A NAME="ss5.1">5.1 Configuração do xinit</A>
|
|
</H2>
|
|
|
|
<P>Junto com este documento são fornecidos vários mapas de teclado para uso no
|
|
X. Para automatizar o processo de configuração do teclado basta copiar o
|
|
arquivo adequado para o diretório <CODE>/usr/X11R6/lib/X11/xinit</CODE>, onde
|
|
normalmente ficam os arquivos de início da seção de trabalho no X. Na
|
|
distribuição Slackware esse diretório é um link simbólico para
|
|
<CODE>/var/X11R6/lib/xinit</CODE> e na Debian e na Red Hat para
|
|
<CODE>/etc/X11/xinit</CODE>.
|
|
<P>Nas distribuições Slackware e Red Hat, verifique se no referido diretório
|
|
existe um arquivo chamado <CODE>.Xmodmap</CODE>. Se existir, copie o
|
|
<CODE>Xmodmap.</CODE><alguma-coisa> para ele, ou faça um link.
|
|
Normalmente o arquivo de configuração <CODE>xinitrc</CODE> possui os comandos
|
|
para carregá-lo automaticamente. Veja o seguinte trecho:
|
|
<P>
|
|
<PRE>
|
|
#!/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
|
|
</PRE>
|
|
<P>Na distribuição Debian o mapa de teclado padrão do X é
|
|
<CODE>/etc/X11/Xmodmap</CODE>, basta copiar o mapa desejado para aquele
|
|
arquivo. Ele será carregado pelo xinitrc, que por sua vez é um link simbólico
|
|
para <CODE>/etc/X11/Xsession</CODE>, sempre que iniciar a seção de trabalho do
|
|
usuário.
|
|
<P>
|
|
<H2><A NAME="ss5.2">5.2 Configuração do XDM</A>
|
|
</H2>
|
|
|
|
<P>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 <B>antes</B> 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.
|
|
<P>É preciso fazer uma pequena alteração no arquivo de configuração Xsetup_0.
|
|
Esse arquivo deve estar no diretório <CODE>/usr/X11R6/lib/X11/xdm</CODE>, que
|
|
na Slackware é um link simbólico para <CODE>/var/X11R6/lib/xdm</CODE> e
|
|
<CODE>/etc/X11/xdm</CODE> na Debian e -- sujeito a confirmação -- RedHat. Eis
|
|
o conteúdo completo desse arquivo:
|
|
<PRE>
|
|
#!/bin/sh
|
|
#
|
|
# /usr/X11R6/lib/X11/xdm/Xsetup_0
|
|
#
|
|
|
|
sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
|
|
sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap
|
|
|
|
# merge in defaults and keymaps
|
|
|
|
if [ -r $sysresources ]; then
|
|
xrdb -merge $sysresources
|
|
fi
|
|
|
|
if [ -r $sysmodmap ]; then
|
|
xmodmap $sysmodmap
|
|
fi
|
|
|
|
xconsole -geometry 480x130-0-0 -daemon -notify -verbose -exitOnFail
|
|
</PRE>
|
|
<P>A distribuição Debian tem um <CODE>Xsetup_0</CODE> um pouco diferente, em
|
|
<CODE>/etc/X11/xdm/Xsetup_0</CODE>, mas basta acrescentar-lhe o seguinte:
|
|
<P>
|
|
<PRE>
|
|
sysmodmap=/etc/X11/Xmodmap
|
|
sysresources=/etc/X11/Xresources
|
|
|
|
if [ -f $sysresources ]; then
|
|
xrdb -merge $sysresources
|
|
fi
|
|
|
|
if [ -f $sysmodmap ]; then
|
|
xmodmap $sysmodmap
|
|
fi
|
|
</PRE>
|
|
<P>Se no seu computador o login do usuário também for feito sempre via xdm, não é
|
|
necessário mexer no xinitrc, como mostrado na seção anterior, já que o mapa de
|
|
teclado será carregado antes do início na seção do usuário.
|
|
<P>
|
|
<H2><A NAME="ss5.3">5.3 Compose</A>
|
|
</H2>
|
|
|
|
<P>Uma das coisas mais importantes a definir quando vamos utilizar acentuação
|
|
por meio de <EM>dead-keys</EM> é o conjunto de <EM>regras de composição</EM>. Essas
|
|
regras determinam, por exemplo que a composição do caracter <B>'</B> com
|
|
a letra <B>e</B> gerará um <B>é</B>.
|
|
<P>Ao contrário do console, no qual podemos definir as regras de composição no
|
|
próprio mapa de teclado, no X essas regras são colocadas no arquivo
|
|
<CODE>/usr/X11R6/lib/X11/locale/???/Compose</CODE>, onde ??? é a codificação
|
|
em uso (no nosso caso, iso8859-1).
|
|
<P>Para facilitar o uso dos mapas para teclados que não têm o c-cedilhado, como o
|
|
US+ (veja adiante) é conveniente definirmos uma nova regra de composição,
|
|
permitindo que o <B>Ç</B> seja gerado pela seqüência <CODE>'C</CODE>. Se não fizermos
|
|
isso, seremos obrigados a digitar <CODE><dead_cedilla-C></CODE>, sedo o
|
|
<EM>dead_cedilla</EM> produzido pela combinação <CODE>AltGR-=</CODE>, o que não é nada
|
|
confortável. Além disso, no teclado americano somos obrigados a usar as aspas
|
|
duplas para gerar o trema.
|
|
<P>O arquivo <CODE>Compose</CODE> fornecido foi feito procurando imitar ao máximo o
|
|
comportamento do console e possui as seguintes facilidades para geração de
|
|
caracteres:
|
|
<UL>
|
|
<LI>C-cedilha: tecla <CODE>Ç</CODE> ou seqüência
|
|
<acento-agudo>-C</LI>
|
|
<LI>Apóstrofo: tecla <CODE>'</CODE> ou seqüências
|
|
<acento-agudo>-<acento-agudo> e
|
|
<acento-agudo>-<espaço></LI>
|
|
<LI>Acento grave: seqüências <acento-grave>-<acento-grave> e
|
|
<acento-grave>-<espaço></LI>
|
|
<LI>Aspas: tecla <CODE>"</CODE> ou seqüência <trema>-<trema></LI>
|
|
<LI>Trema: seqüência <trema>-<espaço></LI>
|
|
<LI>Til: seqüências <til>-<espaço> e <til>-<til></LI>
|
|
<LI>Circumflexo: seqüências <circumflexo>-<espaço> e
|
|
<circumflexo>-<circumflexo></LI>
|
|
</UL>
|
|
<P>Para incluirmos as novas regras, basta aplicar uma alteração à definição
|
|
original. O arquivo <CODE>Compose.patch</CODE> pode ser obtido via WWW na página do
|
|
Portuguese HOWTO. Para aplicar a atualização, copie-o para o diretório
|
|
<CODE>/usr/X11R6/lib/X11/locale/iso8859-1/</CODE>, faça uma cópia de reserva do
|
|
<CODE>Compose</CODE> original e invoque o utilitário <EM>patch</EM>:
|
|
<PRE>
|
|
cp -p Compose Compose.backup
|
|
patch < Compose.patch
|
|
</PRE>
|
|
<P>Caso você prefira não aplicar o ``patch'', um arquivo <CODE>Compose</CODE> pronto
|
|
também é fornecido. Lembre-se de fazer cópia do original <B>antes</B> de
|
|
substituí-lo!
|
|
<H2><A NAME="SEC:LOCALE"></A> <A NAME="ss5.4">5.4 Locale</A>
|
|
</H2>
|
|
|
|
<P>Para os usuários brasileiros, pode haver mais uma alteração a fazer no X.
|
|
Conforme vimos na seção
|
|
<A HREF="Portuguese-HOWTO-4.html#SEC:LIBC">Biblioteca libc</A>, uma
|
|
variável de ambiente (LANG ou LC_ALL) configura o suporte internacional
|
|
existente na biblioteca de funções padrão do sistema (<EM>libc</EM>). A biblioteca
|
|
de funções do X (<EM>Xlib</EM>) usa a variável LANG para identificar a língua em
|
|
uso mas até a revisão 6.3, na qual é baseado o XFree86, não era incluída a
|
|
combinação ``pt_BR'', correspondente a Português/Brasil. Como resultado, cada
|
|
vez que executarmos um aplicativo X com LC_ALL definido como ``pt_BR'' ele
|
|
emitirá a mensagem ``Warning: locale not supported by Xlib, locale set to C''.
|
|
<P>Para incluir o local pt_BR no X11R6.3 basta alterar três arquivos existentes
|
|
no diretório <CODE>/usr/X11R6/lib/X11/locale</CODE>. Pegue o arquivo
|
|
<CODE>Xlocale.patch</CODE> via WWW na página do Portuguese HOWTO. Para aplicar a
|
|
atualização, copie-o para o diretório <CODE>/usr/X11R6/lib/X11/locale</CODE>,
|
|
faça uma cópia de reserva dos arquivos a serem alterados e invoque o
|
|
utilitário <EM>patch</EM>:
|
|
<PRE>
|
|
cp -p compose.dir compose.dir.backup
|
|
cp -p locale.alias locale.alias.backup
|
|
cp -p locale.dir locale.dir.backup
|
|
patch < Xlocale.patch
|
|
</PRE>
|
|
<P>Caso você prefira não aplicar o ``patch'', arquivos prontos também são
|
|
fornecidos. Lembre-se de fazer cópias dos originais <B>antes</B> de
|
|
substituí-los!
|
|
<P>Em setembro de 1998 o fix-2 da revisão 6.4 do X Window System incluiu
|
|
oficialmente o suporte ao local pt_BR. Infelizmente neste mesmo fix-2 foi
|
|
introduzida uma falha em uma das funções de tratamento de <EM>input contexts</EM>
|
|
da Xlib que provoca violações de acesso à memória. Uma das aplicações afetadas
|
|
é o processador de textos LyX. Uma correção provavelmente será incluída no
|
|
fix-4. O X11R6.4 deverá ser a base para a versão 4 do XFree86.
|
|
<P>
|
|
<H2><A NAME="ss5.5">5.5 Geração de mapas com o XKeyCaps</A>
|
|
</H2>
|
|
|
|
<P>O programa XKeyCaps, criado por
|
|
<A HREF="http://www.jwz.org/">Jamie Zawinski</A> é uma interface gráfica para o <CODE>xmodmap</CODE>, que mostra na tela o
|
|
desenho de um teclado e permite modificar interativamente os símbolos gerados
|
|
por cada tecla e gerar automaticamente o arquivo <CODE>.Xmodmap</CODE> correspondente.
|
|
<P>Ele pode ser obtido via WWW em
|
|
<A HREF="http://www.jwz.org/xkeycaps/">http://www.jwz.org/xkeycaps/</A> e, a
|
|
partir da versão 2.43, já incoropra também suporte para o desenho brasileiro
|
|
(ABNT2), uma contribuição de Andre Gerhard.
|
|
<P>
|
|
<H2><A NAME="SEC:CONTOR-X"></A> <A NAME="ss5.6">5.6 Contornando os limites do X</A>
|
|
</H2>
|
|
|
|
<P>Conforme foi explicado na seção
|
|
<A HREF="Portuguese-HOWTO-2.html#SEC:DIFXC">Modo texto versus Sistema de Janelas X</A>, o tratamento de acentos deve ser feito pela aplicação,
|
|
mas ainda há muitos programas que não levam isto em consideração, tais como
|
|
Netscape Navigator/Communicator e Nedit. Como não é possível modificar muitos
|
|
deles, é preciso encontrar outro tipo de solução.
|
|
<P>
|
|
<H3>Alteração da biblioteca Xlib</H3>
|
|
|
|
<P>Linux, assim como a maioria dos sistemas operacionais modernos, usa um
|
|
sistema de vínculo de programas a bibliotecas de funções chamado ``ligação
|
|
dinâmica'' (<EM>dynamic binding</EM>). Deste modo, podemos modificar o
|
|
comportamento de um programa alterando uma dessas bibliotecas. Maiores
|
|
informações sobre este tema pode ser obtida nos manuais do Linux com os
|
|
comandos
|
|
<PRE>
|
|
man ld.so
|
|
man ldconfig
|
|
man ldd
|
|
man dlopen
|
|
</PRE>
|
|
|
|
Thomas Quinot criou uma alteração para a biblioteca de funções do X
|
|
(<EM>Xlib</EM>) introduzindo o tratamento de acentos na função <B>XLookupString</B>,
|
|
Tudo que se tem a fazer é substituir o arquivo contendo esta biblioteca por
|
|
outro, que pode ser obtido via internet no endereço
|
|
<P>
|
|
<BLOCKQUOTE>
|
|
<A HREF="http://web.fdn.fr/~tquinot/dead-keys.en.html">http://web.fdn.fr/~tquinot/dead-keys.en.html</A></BLOCKQUOTE>
|
|
<P>Existem duas versões do arquivo, uma para sistemas onde as bibliotecas do X
|
|
suportam o uso seguro de <EM>threads</EM> (Debian 2.x, Red Hat 5.x, etc.) e outra
|
|
para os sistemas que não possuem tal atributo (Slackware, Caldera 1.x). Se
|
|
você não sabe o que são threads não se preocupe com isso, mas saiba que eles
|
|
permitem criar um programa capaz de se dividir em sub-processos que rodam
|
|
concorrentemente em um computador. Para analisar sua <EM>Xlib</EM> rode o seguinte
|
|
comando:
|
|
<P>
|
|
<BLOCKQUOTE>
|
|
nm --dynamic /usr/X11R6/lib/libXext.so.6|grep _Xglobal_lock
|
|
</BLOCKQUOTE>
|
|
<P>Se aparecer ``<CODE>U _Xglobal_lock</CODE>'' seu sistema suporta threads e o arquivo
|
|
a obter é <CODE>libX11-XF3.3.1-TS.tar.gz</CODE>. Se não aparecer, seu sistema não
|
|
suporta threads e o arquivo a obter é <CODE>libX11-XF3.3.1.tar.gz</CODE>. Tendo
|
|
obtido o arquivo, copie-o para um diretório temporário e extraia seu conteúdo.
|
|
Mova o arquivo <CODE>/usr/X11R6/libX11.so.6.1</CODE> para outro diretório,
|
|
para preservá-lo. Não é suficiente renomeá-lo! Remova-o para um diretório cujo
|
|
nome <B>não</B> esteja contido no arquivo <CODE>/etc/ld.so.conf</CODE>. Depois,
|
|
mova o novo arquivo para o lugar do antigo e rode o programa <EM>ldconfig</EM>
|
|
(isto deve ser feito pelo usuário <B>root</B>):
|
|
<PRE>
|
|
cp libX11-XF3.3.1-TS.tar.gz /tmp
|
|
cd /tmp
|
|
tar xzf libX11-XF3.3.1-TS.tar.gz
|
|
mkdir /usr/X11R6/oldlib
|
|
mv /usr/X11R6/lib/libX11.so.6.1 /usr/X11R6/oldlib
|
|
mv libX11.so.6.1 /usr/X11R6/lib
|
|
chown root:root /usr/X11R6/lib/libX11.so.6.1
|
|
chmod 755 /usr/X11R6/lib/libX11.so.6.1
|
|
/sbin/ldconfig
|
|
</PRE>
|
|
<P>É aconselhável que a operação seja realizada quando nenhuma aplicação X
|
|
estiver rodando. A seguir, edite o arquivo de configuração do servidor X,
|
|
chamado <CODE>XF86Config</CODE>. Este arquivo fica no diretório <CODE>/etc</CODE>
|
|
(Slackware) ou <CODE>/etc/X11</CODE> (Debian, Red Hat). Procure a seção
|
|
``Keyboard'' e inclua a opção ``XkbDisable'', conforme mostrado a seguir:
|
|
<PRE>
|
|
Section "Keyboard"
|
|
Protocol "Standard"
|
|
XkbDisable
|
|
EndSection
|
|
</PRE>
|
|
<P>A opção XkbDisable inabilita a extensão XKEYBOARD do servidor X, o que neste
|
|
caso serve para sinalizar à função <B>XLookupString</B> que ela deve tratar os
|
|
acentos. Se quisermos voltar ao comportamento normal, basta retirar a opção
|
|
do <CODE>XF86Config</CODE>.
|
|
<P>Configure o mapa de teclado do X conforme explicado nas seções anteriores
|
|
deste documento. Para testar o resultado, rode o programa <EM>xedit</EM> e digite
|
|
alguns caracteres acentuados.
|
|
<P>
|
|
<H3>Alteração no kernel do Linux</H3>
|
|
|
|
<P>
|
|
<BLOCKQUOTE>
|
|
Esta seção é baseada em contribuição enviada por Bruno Barberi Gnecco
|
|
e na documentação do diacrd. Podem haver ainda alguns erros e se alguém os
|
|
detectar, por favor avise-me.
|
|
</BLOCKQUOTE>
|
|
<P>Seguindo a regra geral do mundo *nix, existe sempre mais de um modo se
|
|
resolver o mesmo problema. Conforme vimos anteriormente, existem dois modos de
|
|
operação do teclado, chamados <EM>raw</EM> e <EM>cooked</EM>. Estes modos de operação
|
|
podem ser mudados com o programa <B>kbd_mode</B>, integrante do pacote kbd, o
|
|
que não é recomendável fazer a não ser para restaurar o estado do console após
|
|
um desastre com o servidor X, por exemplo. No modo raw o kernel não processa
|
|
os diacríticos (acentos).
|
|
<P>Cedric Adjih criou uma alteração para o kernel que permitia tratar os acentos
|
|
mesmo em modo raw, inicialmente voltada para o teclado de desenho francês.
|
|
Enéas Queiroz, André D. Balsa e Claudemir Todo Bom fizeram melhorias e o
|
|
adaptaram para os teclados internacional, português e ABNT. O tratemanto de
|
|
acentos é feito parte pelo kernel, parte por um processo que roda em
|
|
retaguarda (<EM>daemon</EM>) chamado <B>diacrd</B>, conforme descrito a seguir:
|
|
<UL>
|
|
<LI>Uma modificação no kernel faz que todos os dados lidos do teclado
|
|
sejam redirecionados para um dispositivo especial do sistema chamado
|
|
<CODE>/dev/rawkbd</CODE> quando o teclado estiver em modo <EM>raw</EM>.</LI>
|
|
<LI>Os dados que o kernel grava no <CODE>/dev/rawkbd</CODE> são lidos pelo
|
|
programa <CODE>diacrd</CODE>, que processa as seqüências acento-letra e reescreve
|
|
no <CODE>/dev/rawkbd</CODE> os caracteres acentuados na forma de códigos de
|
|
varredura (<EM>scancodes</EM>) que normalmente não existem no teclado.</LI>
|
|
<LI>O kernel lê no <CODE>/dev/rawkbd</CODE> os códigos gravados pelo
|
|
<CODE>diacrd</CODE> e os passa à aplicação, que no caso é o servidor X.</LI>
|
|
<LI>O servidor X mapeia os códigos de varredura para caracteres. Um mapa de
|
|
teclado especial permite então gerar as letras acentuadas.</LI>
|
|
</UL>
|
|
<P>O diacrd pode ser obtido via FTP anônimo no endereço
|
|
<BLOCKQUOTE>
|
|
<A HREF="ftp://metalab.unc.edu/pub/Linux/system/keyboards">ftp://metalab.unc.edu/pub/Linux/system/keyboards</A></BLOCKQUOTE>
|
|
|
|
Há versões diferentes, de acordo com o tipo de teclado e, pelo menos por
|
|
enquanto, não se pode reconfigurá-lo sem recompilar. Para fazer a
|
|
instalação, de acordo com o arquivo ``README'', deve-se fazer o seguinte (pelo
|
|
usuário <B>root</B>):
|
|
<UL>
|
|
<LI>Obtenha o arquivo -.tar.gz correspondente a seu teclado. Extraia seu
|
|
conteúdo, o que deverá criar um diretório chamado
|
|
<CODE>diacrd-<versão></CODE>.</LI>
|
|
<LI>Edite o arquivo <CODE>diacrd.c</CODE> e remova os comentários desejados, de
|
|
acordo com suas preferências. Pode-se incluir capacidade de rodar o
|
|
programa <B>xmodmap</B> e ejetar o CD-ROM sob controle do pressionamento de
|
|
uma combinação de teclas.</LI>
|
|
<LI>Aplique a modificação no kernel. Para isto, execute o comando
|
|
``make patch-usr-src''.</LI>
|
|
<LI>Crie o dispositivo <CODE>/dev/rawkbd</CODE> executando o comando
|
|
``make rawkbd''.</LI>
|
|
<LI>Compile o diacrd e instale-o executando os comandos ``make'' e
|
|
``make install''.</LI>
|
|
<LI>Compile e instale o kernel, com os comandos
|
|
<PRE>
|
|
cd /usr/src/linux
|
|
make config
|
|
make zlilo
|
|
</PRE>
|
|
|
|
Para maiores informações sobre compilação/instalação do kernel, leia o
|
|
Kernel-HOWTO, disponível via Internet nos repositórios do LDP mencionados
|
|
na seção
|
|
<A HREF="Portuguese-HOWTO-1.html#SEC:ONDE">Onde encontrar a versão mais atual</A>.</LI>
|
|
<LI>Dê um ``reboot'' no computador. Verifique se o suporte ao dispositivo
|
|
rawkbd foi instalado com sucesso com o comando
|
|
<PRE>
|
|
dmesg | grep RAWKBD
|
|
</PRE>
|
|
|
|
Deve aparecer
|
|
<PRE>
|
|
RAWKBD interface for diacriticals translation enabled...
|
|
</PRE>
|
|
|
|
e teste o dispositivo <CODE>/dev/rawkbd</CODE> com o comando
|
|
<PRE>
|
|
printf "### TESTANDO ###" >> /dev/rawkbd
|
|
</PRE>
|
|
|
|
Veja na seção
|
|
<A HREF="Portuguese-HOWTO-3.html#CONF-CONS">Configuração do console</A> como
|
|
carregar um mapa com suporte à acentuação. O pacote diacrd vem com um
|
|
arquivo chamada <CODE>usintl.map</CODE>, que corresponde ao nosso
|
|
<CODE>us+.map</CODE>. Se seu teclado não for do tipo americano, use o
|
|
<CODE>pt.map</CODE> ou <CODE>abnt-2.map</CODE>.</LI>
|
|
<LI>Substitua o arquivo <CODE>/usr/X11R6/lib/X11/xkb/keycodes/xfree86</CODE>
|
|
pelo arquivo fornecido junto com o diacrd.</LI>
|
|
<LI>Se tudo correr bem, rode o programa <B>diacrd</B>. Depois ative o X e
|
|
use o <B>xmodmap</B> para carregar o mapa <CODE>xmodmap.diacrd</CODE>.</LI>
|
|
</UL>
|
|
<P>Se a geração de acentos funcionar, é preciso tornar permanentes as alterações
|
|
necessárias. Pode-se fazê-lo incluindo a carga do diacrd no arquivo
|
|
<CODE>/etc/rc.d/rc.local</CODE> (Slackware).
|
|
<BLOCKQUOTE>
|
|
Se algum dos leitores tiver criado um script de ativação do diacrd para a
|
|
distribuição Debian ou Red Hat, por favor envie-o para que seja incluído
|
|
aqui.
|
|
</BLOCKQUOTE>
|
|
|
|
Mais informações sobre o diacrd podem ser encontradas no ``Dead keys
|
|
Mini-HOWTO'' de Claudemir Todo Bom, disponível em
|
|
<A HREF="http://linux.unicamp.br/docs/diversos/deadkeys.html">http://linux.unicamp.br/docs/diversos/deadkeys.html</A>.
|
|
<P>
|
|
<H3>Comparação entre as duas soluções</H3>
|
|
|
|
<P>Em termos de resultados práticos, a Xlib modificada e o diacrd são
|
|
equivalentes. Há porém algumas diferenças entre as duas soluções que merecem
|
|
atenção.
|
|
<P>Diacrd exige uma alteração no kernel do Linux para resolver um problema que o
|
|
kernel já resolve, o que não deixa de parecer um tanto redundante. A
|
|
dependência de um processo de usuário (o <EM>daemon</EM> kerneld) é uma
|
|
desvantagem, pois se esse programa deixar de funcionar perde-se o suporte à
|
|
acentuação no X. Trata-se de uma solução ainda em desenvolvimento e, segundo o
|
|
conteúdo da documentação que o acompanha, o ideal seria que todo o tratamento
|
|
fosse feito pelo kernel, sem depender de outro programa.
|
|
<P>Até o momento da publicação deste HOWTO, o diacrd ainda não era compatível com
|
|
a versão 2.2 do kernel do Linux.
|
|
<P>A solução via Xlib é, pelo menos em teoria, totalmente transparente às
|
|
aplicações e permite reconfiguração em tempo de execução, bastando alterar o
|
|
mapa de teclado do X e as regras de composição. Já o diacrd precisa ser
|
|
recompilado se quisermos trocar o tipo de teclado, mas é possível que novas
|
|
versões incorporem algum recurso de reconfiguração.
|
|
<P>O diacrd só funciona no teclado do próprio computador. Se quisermos usar um
|
|
<EM>display</EM> remoto, seja um terminal X, seja um outro computador, não teremos
|
|
suporte à acentuação. A troca da Xlib, por outro lado, enquadra-se plenamente
|
|
na filosofia do X de que o servidor provê <EM>mecanismo</EM>, deixando a cargo da
|
|
aplicação a definição de <EM>políticas</EM>. Exemplo da vantagem deste paradigma é
|
|
poder usar as técnicas descritas na seção
|
|
<A HREF="#CONF-X">Configuração do X</A> em outros sistemas operativos e com terminais X.
|
|
<P>A solução via Xlib parece-me mais ``limpa'' e é minha predileta, mas, como
|
|
sempre, fica a critério do usuário ou do administrador do sistema qual
|
|
alternativa escolher. De qualquer modo, sempre é bom lembrar qua ambas as
|
|
soluções são remendos. Considerando-se a rápida evolução que está a ocorrer no
|
|
campo do software livre, com o desenvolvimendo de ambientes de trabalho como
|
|
<A HREF="http://www.kde.org/">KDE</A>,
|
|
<A HREF="http://www.gnome.org/">GNOME</A> e
|
|
<A HREF="http://www.gnustep.org/">GNUStep</A>, podemos supor que em breve
|
|
nenhum desses remendos será mais necessário.
|
|
<P>
|
|
<HR>
|
|
<A HREF="Portuguese-HOWTO-6.html">Next</A>
|
|
<A HREF="Portuguese-HOWTO-4.html">Previous</A>
|
|
<A HREF="Portuguese-HOWTO.html#toc5">Contents</A>
|
|
</BODY>
|
|
</HTML>
|