[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Acentuação no X em sistemas Debian 2.x - Parte 2



Olá pessoal,

Já falamos que os programas I18N somente necessitam que o sistema X
seja configurado para que aceitem acentuação. Pois bem, se esse é o
seu caso, a página Xkb-Br , de Ricardo Y. Igarashi, 
<http://lie-br.conectiva.com.br/~iga/> contém instruções e arquivos
necessários para incluir mapas de teclado para o X, com configuração
para dead-keys e teclado ABNT2, de uma forma, a meu ver, bastante
limpa, sendo uma opção a considerar. O script preparado pelo Ricardo
inclui os arquivos necessários e altera o que for preciso. A partir
daí, o sistema X reconhece o teclado ABNT2 e o US com suporte a 
acentos de uma forma natural. Eu mesmo fiz testes com essa solução e
pude constatar que funciona. Meu sistema é Debian 2.1, com kernel
2.0.36 e teclado US101 e a versão do XFree86 é a 3.3.2.3 . Recomendo
bastante. 

Porém, se você, como eu, usa o StarOffice, quer que o Corel WordPerfect
reconheca a sequência 'c como ç, ou pretende usar outra solução, vamos
falar sobre o patch do Quinot.

O Linux Portuguese-HOWTO e a página do Ricardo Igarashi falam sobre uma
modificação implementada na biblioteca Xlib pelo francês Thomas Quinot.
Pois bem, consegui o patch, apliquei-o aos fontes do X, recompilei o
sistema (Uau ! Que experiência ! A compilação demorou mais de 4 horas em
meu Pentium-133 ...), substituí o arquivo da biblioteca, configurei o
mapa de teclado e efetuei os testes. Vejam os resultados:

a) rxvt e xterm - acentuação normal
b) Netscape Communicator versão 4.5 - acentuação normal
c) StarOffice 5.1 - RECONHECE a sequência 'c para gerar o c-cedilha
                    Todos os acentos reconhecidos em letras minúsculas E
                    maiúsculas
                    Resumindo: Acentuação normal
d) Corel WordPerfect 8 - Acentuação normal e a sequência 'c é aceita,
                         desde que usemos uma Xlib compilada com libc5
e) xedit - acentuação normal

Em virtude que somente uma biblioteca do X deve ser modificada, eu criei
os seguintes arquivos:

libX11-XF3.3.2.3-libc5.tar.gz - arquivo libX11.so.6.1, compilado com
                                libc5 p/ sistema XFree86 3.3.2.3
libX11-XF3.3.2.3.tar.gz       - arquivo libX11.so.6.1, compilado com
                                libc6 p/ sistema XFree86 3.3.2.3
libX11-XF3.3.3.1-libc5.tar.gz - arquivo libX11.so.6.1, compilado com
                                libc5 p/ sistema XFree86 3.3.3.1
libX11-XF3.3.3.1.tar.gz       - arquivo libX11.so.6.1, compilado com
                                libc6 p/ sistema XFree86 3.3.3.1

Observações:
1 - Em todos eles, inclui, junto com o arquivo libX11.so.6.1, o patch 
    original XFree86-3.3.1-dead-keys.diff para aqueles que queiram
    por si mesmos construir os pacotes do XFree86 com a alteração.
2 - Para os arquivos da versão 3.3.3.1 do XFree86, eu compilei usando o
    pacote fonte (release nr. 10) que está na distribuição Potato.

Os arquivos acima serão enviados para 3 integrantes da lista que me
pediram anteriormente. Já peço a eles que divulguem os endereços de
suas páginas, aqui na lista ou em outras, se quiserem, assim que os
tiver disponibilizado.

As instruções abaixo constam do Linux-Portuguese HOWTO e devem ser
executadas com o servidor X desativado: 

1 - Configure a acentuação no console, inclusive os mapas de teclado
adequados ao seu caso (ABNT2 ou US c/acentos).

2 - Faça as alterações descritas no HOWTO para o arquivo
/usr/X11R6/lib/X11/locale/iso8859-1/Compose para que possa-
mos utilizar a sequência 'c para gerar o c-cedilha. Será
que é necessário se estivermos usando o teclado ABNT2 ?
Alguém quer testar ?

3 - Se definiu os locales, será necessário também alterar os
arquivos correspondentes no X (Veja no HOWTO):

/usr/X11R6/lib/X11/locale/compose.dir
/usr/X11R6/lib/X11/locale/locale.alias
/usr/X11R6/lib/X11/locale/locale.dir

4 - Tendo obtido o arquivo apropriado para a versão do sistema
XFree86 que estiver utilizando, na versão compilada com libc6,
copie para um diretório temporário. Extraia seu conteúdo e mova
o arquivo /usr/X11R6/lib/libX11.so.6.1 para outro diretório para
guardá-lo como backup. Precisa movê-lo, não apenas renomear, para
qualquer diretório cujo nome NÃO esteja contido no arquivo
/etc/ld.so.conf, nem pode movê-lo para /usr/lib e /lib . Depois,
mova o novo arquivo para o lugar do antigo e execute o programa
ldconfig (deve ser feito pelo usuário root). Exemplo:

cp libX11-XF3.3.2.3.tar.gz /tmp
cd /tmp
tar xvfz libX11-XF3.3.2.3.tar.gz
mkdir /usr/X11R6/oldlib      --> diretório criado para abrigar o
                                 arquivo a ser substituído
mv /usr/X11R6/lib/libX11.so.6.1 /usr/X11R6/oldlib
mv libX11.so.6.1 /usr/X11R6/lib
/sbin/ldconfig

5 - Se estiver utilizando o Corel WordPerfect 8 e quiser que ele
reconheça a sequência 'c para gerar o c-cedilha, será necessário
também efetuar as instruções acima com mais um arquivo :
libX11-XF3.3.2.3-libc5.tar.gz. A biblioteca libX11 compilada com
libc5 fica gravada no diretório /usr/lib/libc5-compat/ . Exemplo:

cp libX11-XF3.3.2.3-libc5.tar.gz /tmp
cd /tmp
tar xvfz libX11-XF3.3.2.3-libc5.tar.gz
mkdir /usr/lib/oldlib
mv /usr/lib/libc5-compat/libX11.so.6.1 /usr/lib/oldlib/
mv libX11.so.6.1 /usr/lib/libc5-compat/
/sbin/ldconfig

6 - Inclua a linha XkbDisable no arquivo /etc/X11/XF86Config, seção
Keyboard . Antes, porém, salve o arquivo original.

7 - Com a alteração acima, a tecla BackSpace deixa de funcionar como
tal, assumindo a função da tecla Delete. Para resolver isso, edite o
arquivo /etc/X11/Xmodmap e descomente a linha ! keycode 22 = BackSpace
(basta excluir o ponto de exclamação). Salve o arquivo antes de
alterá-lo.

8 - Reinicie o servidor X. Faça os testes.

Ufa, pessoal, creio que não faltou nada. A solução (?) está aí. Uma
outra solução é apresentada pelo Carlos A.M. dos Santos em sua página
<http://www.inf.ufrgs.br/~casantos/Xaw-dead-keys/> mas não a testei.

Fiquem a vontade para adotar a melhor solução que acharem.
Estou à disposição para qualquer outra dúvida.
Desculpem o mail longo, mas foi necessário.

[]
Fernando



Reply to: