<!--
      Guia de Referencia para a instalacao do Teclado e Pagina
      de codigo Portuguesas.

      (c)1995 Joao Carlos Rodrigues Pereira, jcrp@caravela.di.fc.ul.pt
      (c)1997-1999 Carlos A M dos Santos, casantos@cpmet.ufpel.tche.br

  Histórico

  3.2 - 24 de maio de 1999

   * Informação sobre o WordPerfect 8.
   * Informação sobre o XKeyCaps
   * Informações corretas sobre o idioma Klingon, o planeta Kling e Jornada
     nas Estrelas, fornecidas pelo Klaus. Este HOWTO nunca mais será o
     mesmo...
   * Início da organização de uma bibliografia.
   * Removida a seção ``Colocação do console em modo Unicode'' (obsoleta).
   * Removido http://mirror.pop-mg.rnp.br/LDP/ da lista de espelhos do LDP
     (parece estar fora do ar).
   * Sunsite.unc.edu agora é Metalab.unc.edu.
   * Finalmente temos um espelho oficial em Portugal!
   * LyX com mensagens em Português e manuais sendo traduzidos.
   * Referência para a lista LIE-BR
   * Separação silábica no groff.
   * Incluída na seção sobre libc5 uma discussão sobre o uso da variável LANG,
     sua necessidade para o man e a mensagem de erro ``Warning: locale not
     supported by C library, locale unchanged'' que a Xlib gera.
   * Novo endereço do LDP-br na UNICAMP
   * Ponteiro para o Dead keys Mini-HOWTO
   * Correção das informações sobre LaTeX (algoritmo não tem acento - esta
     doeu!). Acréscimo das contibuições do Klaus.
   * Reorganização da ordem de algumas seções (aplicativos em ordem albabética
     para facilitar a busca).
   * Inclusão do comando loadunimap e correção da informação sobre carga
     automática de mapas de tela.
   * Informações sobre S.u.S.E. e Conectiva
   * Seções sobre configuração de fonte e teclado com subseções individuais
     para cada distribuição.
   * Descrição mais detalhada das regras definidas no novo arquivo Compose.
   * Correções e acréscimos nos mapas de teclado NCD e Sun.
   * Brevemente, mapas de teclado para Macintosh (assim que eu descobrir como
     dar boot do MkLinux ou LinuxPPC *sem* precisar do MacOS.

  3.1 - 1 de janeiro de 1999

   * Aleta sobre a necessidade do pacote ``locale'' na Debian
   * Alterado o uso do comando `export' nos scripts para manter
     compatibilidade com Bourne-shell
   * Incluido um comentário sobre o bug do tratamento de XIC no X11R6.4 fix-2
   * Localização dos diretórios de fontes e mapas de teclado do pacote KBD
   * Informações mais detalhadas sobre o X
   * Troca do nome da seção em que se compara o X com o modo de texto e
     reorganização de alguns de seus parágrafos
   * Incluídas informações sobre lista de algoritmos no LaTeX e ambiente proof
   * Corrigida informação sobre o minicom - contribuição de Arnaldo Carvalho
     de Melo <acme@conectiva.com.br>
   * Informações sobre localização das fontes, mapas de teclado e scripts de
     configuração no Red Hat - contribuição de Ricardo Y. Igarashi
     <iga@originet.com.br>
   * Inclusão de informações sobre o comportamento da tecla ``Delete'' no
     xemacs.
   * Correção da URL do diacrd

  3.0 - 28 de outubro de 1998

   * Distribuição preferencial agora é Debian
   * Informações atualizadas sobre Xemacs
   * Novo endereço do SGMLtools
   * Referências servidores WWW do II/UFRGS e LinUSP
   * Melhores explicações sobre Xlib
   * Correção da informação sobre a modificação feita por Thomas Quinot na
     Xlib e inclusão de instruções de instalação no XFree86 e X11R6
   * Informações sobre o diacrd
   * Informações mais detalhadas sobre groff e man

  2.1 - 17 de julho de 1998

   * Configuração global do Emacs
   * Informações sobre TeX/LaTeX
   * Informações sobre dicionários para o Ispel
   * Fortune
   * LyX
   * Referência à libX11 de Thomas Quinot e maiores informações sobre suporte
     à internacionalizalção no X
   * Agradecimentos

  2.0 - 24 Dezembro 1997

   * Novo mantenedor
   * Correções nos mapas para o teclado português
   * Inclusão dos mapas de teclado ABNT-2 e US+
   * Supressão de informações desatualizadas (incluindo toda a seção
     Bibliografia Aconselhada)

  0.3 - Update (14 Setembro 1995)

   * Correcoes

     * Endereco do coordenador mudou
     * Sistema de janelas X -> Sistema de janelas X (X-Window Sistem)

   * Aviso sobre a diferenca entre conf. de X e Texto, nao inter-dependentes

  0.2 - Update (3 Setembro 1995)

   * Correcoes      
       
     * Gestor de janelas X -> Sistema de janelas X 
     * LEMACS - nova entrada
     * Emacs - dados acrescentados, os anteriores eram nulos !
     * pequenas correcoes de sintaxe

  0.1 - Versao original  (1 Setembro 1995)

-->

<!DOCTYPE LINUXDOC SYSTEM>

<ARTICLE>

<!--

    SGMLtools 1.0 não trata corretamente espaços e quebras de linha em
    títulos, subtítulos e nomes, por isso esta coisa horrível aí adiante.

-->
<TITLE>Linux Portuguese-HOWTO
<SUBTITLE>Configurações do Linux para a Língua Portuguesa
<AUTHOR><name>Carlos A. M. dos Santos &lt;<HTMLURL URL="mailto:casantos@cpmet.ufpel.tche.br" name="casantos@cpmet.ufpel.tche.br">&gt;
<INST>CPMet/UFPEL -- Pelotas, RS, Brasil
<DATE>v3.2, 24 May 1999
<ABSTRACT>
Este documento pretende ser um guia de referência de configuração do
<BF/Linux/ e seus programas, teclados e fontes de caracteres, permitindo
sua utilização mais confortável por pessoas que falem a Língua Portuguesa.
</ABSTRACT>

<TOC>

<SECT>Introdução
<P>
À semelhança de outras línguas faladas na Europa, a Língua Portuguesa tem
características especiais, como a utilização de caracteres acentuados, que
tornam o seu suporte difícil, pouco intuitivo ou até mesmo impossível, por
parte do software utilizado nos nossos computadores. 

Nossa língua assume particularidades em cada um dos países em que é falada e
mesmo dentro de um único país como o Brasil, de dimensões continentais e com
influências culturais de muitos outros povos. Este documento foi originalmente
escrito por um português, mas agora é mantido por um brasileiro. Há uma
mistura de sotaques que deve se manter por um bom tempo, pois não há razão
para alterar o texto original senão para fazer de adições e correções, até por
respeito ao primeiro autor. Termos ``estrangeiros'' desnecessários foram
substituídos por correspondentes da Língua Portuguesa, preservando-se apenas
os que já fazem parte do jargão da informática.

<SECT1>Finalidades deste HOWTO
<P>
Este HOWTO é um guia de referência de configuração do sistema operativo Linux
e seus programas, teclados e fontes de caracteres, permitindo sua utilização
mais confortável por pessoas que falem a Língua Portuguesa. Como os programas
mais antigos não foram desenhados com suporte a caracteres acentuados ou
internacionalização, às vezes é preciso usar algum artifício que permita
contornar o problema, mas o resultado nem sempre é totalmente satisfatório e
em alguns casos chega ser frustrante. As dificuldades encontradas centram-se
essencialmente em torno de quatro pontos: 

<ITEMIZE>
<ITEM>a introdução de caracteres acentuados através do teclado, como seja a
      escrita de jo&tilde;ao em vez da sua forma correcta: joão; 
<ITEM>a exibição dos mesmos na tela do computador. O suporte resume-se
      normalmente à correcta localização das teclas, nada mais;
<ITEM>o correto tratamento de convenções nacionais de formato de datas, horas e
      valores monetários;
<ITEM>a exibição de mensagens, títulos e demais informações dos programas em
      outra língua que não o Inglês, que é a língua original da maioria desses
      programas.
</ITEMIZE>

Versões anteriores do Portuguese HOWTO concentravam-se em contornar as duas
primeiras dificuldades mencionadas, de forma a fazer que, dentro do possível,
tanto o sistema operativo como os programas nele utilizados aceitassem os
caracteres acentuados e usassem os teclados com suporte para o Português.
Embora esse objetivo ainda seja perseguido, os problemas de teclado e
caracteres já têm soluções satisfatórias, pelo menos para as aplicações mais
usadas. As próximas versões deverão se dedicar mais aos dois últimos
problemas.

O texto contém uma já não tão breve discussão sobre o tratamento
do teclado e das fontes de caracteres do console pelo Linux, bem como do
suporte a várias línguas nacionais. O Sistema de Janelas X também é discutido,
fazendo-se uma comparação entre ele e o modo de texto. Por fim, são fornecidas
instruções para a configuração do sistema operativo e de diversos aplicativos
importantes.

O documento tem se tornado menos <EM/slackwariano/, incluindo cada vez mais
informações relativas a outras distribuições. Slackware e Caldera
ainda se baseiam na versão 5 da biblioteca de funções do sistema para Linux
(<EM/libc/), enquanto Debian, Red Hat, TurboLinux, S.u.S.E e Stampede já
suportam a versão 6 (que na verdade é a glibc versão 2). Esta nova versão da
biblioteca está um passo adiante no suporte a internacionalização e
localização.  A partir da versão 3.2 do Portuguese-HOWTO as particularidades
de cada distribuição serão destacadas quando houver necessidade. A tentativa
de tornar Debian uma distribuição ``de referência'' a partir da versão 3.0 do
HOWTO fracassou miseravelmente porque o número de diferenças entre as
distribuições é muito grande.

A intenção original de não tentar concentrar toda a informação em um único
texto, tratando apenas de alguns temas essenciais e fornecendo referências
para outras fontes, também fracassou. O HOWTO em sua versão 3.1 já alcançava
38 páginas impressas em formato A4, o que está longe de poder ser chamado de
sucinto. As principais razões para tal gigantismo são a necessidade de
discutir diferenças entre as distribuições e a necessidade de fornecer
informações mais detalhadas sobre aplicativos.

Excetuando-se aspectos muito específicos do Linux, como a configuração do modo
texto e do <EM/kernel/, a maioria das informações contidas neste documento
pode ser aplicada a outros sistemas Unix. Exemplos são as configurações do
Sistema de Janelas X e de vários aplicativos, que foram aplicadas em Solaris
2.&lcub;5,6,7&rcub; e Digital UNIX 3.2. Os mapas de teclado para terminais X e
estações de trabalho Sun foram criados e são usados em máquinas que rodam
Solaris. O documento poderá um dia se tornar o ``Unix Portuguese HOWTO'',
embora no momento não se tenha intenção ou meios de fazê-lo.

<SECT1>Onde encontrar a versão mais atual<LABEL ID="SEC:ONDE">
<P>
Os Linux HOWTO fazem parte do Projeto de Documentação Linux (Linux
Documentation Project -- LDP). Os documentos do LDP são mantidos em servidores
da Universidade da Carolina do Norte (UNC) e do Instituto de Tecnologia de
Massachusetts (MIT), nos Estados Unidos da América, e podem ser obtidos via
FTP anônimo nos seguintes endereços:
<ITEMIZE>
<ITEM><URL URL="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO"> (conhecida
    anteriormente como <TT/sunsite.unc.edu/).
<ITEM><URL URL="ftp://tsx-11.mit.edu/pub/linux/docs/HOWTO">
</ITEMIZE>

Pode-se também folhear os documentos HOWTO em formato HTML no endereço
<ITEMIZE>
<ITEM><URL URL="http://metalab.unc.edu/LDP/HOWTO">
</ITEMIZE>

Muitas localidades mantêm cópias desses documentos. Deve-se dar preferência ao
acesso à cópia mais próxima, para economizar o precioso tráfego internacional
na Internet e também evitar a sobrecarga da máquina metalab.unc.edu. Uma lista
completa dessas localidades pode ser obtida em 
<ITEMIZE>
<ITEM><URL URL="http://metalab.unc.edu/LDP/mirrors.html">
</ITEMIZE>

Eis uma lista dos endereços recomendados:

Brasil
<ITEMIZE>
<ITEM><URL URL="http://linusp.usp.br/LDP/">
<ITEM><URL URL="http://www.conectiva.com.br/LDP/">
<ITEM><URL URL="http://www.opensite.com.br/linux/">
<ITEM><URL URL="http://taubate.valley-bbs.com.br/LDP/">
<ITEM><URL URL="http://linux.unicamp.br/docs/">
</ITEMIZE>

Portugal
<ITEMIZE>
<ITEM><URL URL="http://gil.di.uminho.pt/mirrors/LDP/">
<ITEM><URL URL="http://deneb.cec.pt/LDP/">
<ITEM><URL URL="http://ftp.dei.uc.pt/LDP/">
<ITEM><URL URL="http://www.sc.uevora.pt/LDP/">
<ITEM><URL URL="http://lwp.ualg.pt/docs/LDP/">
<ITEM><URL URL="http://linux.global-one.pt/LDP/">
<ITEM><URL URL="http://linux.ispgaya.pt/LDP/">
<ITEM><URL URL="http://ae.fe.up.pt/LDP/">
</ITEMIZE>

Os Linux HOWTO estão disponíveis em diversos formatos: texto simples,
PostScript, DVI, HTML, RTF e Lyx. O formato original é SGML e os demais são
gerados usando o SGMLtools (maiores informações em <URL
URL="http://www.sgmltools.org/">).

<SECT1>Página oficial na WWW
<P>
A página oficial do Linux Portuguese-HOWTO, assim como os diversos arquivos de
configuração do sistema e programas aplicativos mencionados no texto, podem
ser encontrados nos seguintes endereços:

<ITEMIZE>
<ITEM>Brasil: <URL URL="http://linusp.usp.br/~casantos/">
<ITEM>Portugal: <URL URL="http://linux.fe.up.pt/howto/">
</ITEMIZE>

<SECT1>Como enviar colaborações
<P>
Toda a formatação deste HOWTO, incluindo a numeração das seções é feita pelo
SGMLtools. Por isso, ao enviar sugestões ou correções, mencione <BF/os
títulos das seções/ onde as alterações sugeridas devem ocorrer e não os
números. Nunca refira-se a um parágrafo como sendo ``o terceiro da seção
3.1''; cite as palavras inicias do trecho a ser modificado.

Envie sugestões e correções via correio eletrônico em texto simples,
opcionalmente com acentuação no código ISO-8859-1.  Se o texto não for
composto em um sistema *NIX, certifique-se de usar a codificação correta.
Todas as mensagens recebidas serão lidas, mas nem todas receberão resposta
direta, devido à falta de tempo para tanto.

Não envie documentos no formato proprietário de processadores de texto nem
em formato HTML (o que infelizmente parece ser o comportamento
normal do Netscape Communicator e do Microsoft Outlook).

Mensagens perguntando como configurar seu modem, placa de vídeo ou rede
não serão respondidas. Para esse tipo de consulta é aconselhável
procurar uma lista de discussão sobre Linux em Português ou acompanhar os
grupos de discussão de Linux na USENET <TT/comp.os.linux.*/.

``Flames'' terão o destino costumeiro: <TT>/dev/null</TT>.

</SECT1>

<SECT>Informações gerais

<SECT1>Conjuntos de caracteres
<P>
Um conjunto de caracteres é definido de acordo com os símbolos constantes no
alfabeto utilizado para escrita em uma ou mais línguas. A Organização
Internacional de Normas (<EM/International Standards Organization/ - ISO)
padronizou através da norma ISO-8859 vários desses conjuntos, identificados
por ISO-8859-<EM/x/ onde o <EM/x/ corresponde a um determinado alfabeto. O
conjunto ISO-8859 utiliza 8 bits para representar cada caracter, o que permite
uma gama de 256 sinais (valores de zero a 255). Em cada um dos conjuntos, os
códigos zero a 127 correspondem ao conjunto ASCII (<EM/American Standard Code
for Information Interchange/) e os códigos 160 a 255 são usados para
caracteres nacionais.

Para a língua portuguesa, recomenda-se o uso do conjunto ISO-8859-1, que
compreende o alfabeto latino e letras acentuadas usadas pelas línguas do
oeste da Europa e América. Este conjunto de caracteres também é frequentemente
chamado de Latin-1 ou ISO Latin-1.

Um padrão mais recente é o Unicode, definido pela norma ISO-10646, que permite
definir caracteres cuja representação interna no computador utiliza mais de um
byte (ou <EM/octeto/ na nomenclatura ISO). Todas as versões mais recentes de
sistemas Unix suportam Unicode (ou pelo menos seus fabricantes alegam
suportar).

Além dos caracteres alfanuméricos e sinais de acentuação, é possível também
gerar sinais <EM/semigráficos/ para desenho de linhas e bordas.
Esses sinais podem aproveitar códigos não utilizados pelo conjunto oficial,
tornando-os não portáveis.

O <BF/Linux/ foi desenhado internamente de modo a facilitar a sua fácil
configuração e extensão em tempo de execução, não constituindo o tratamento do
teclado e fontes de caracteres excepção. Ele possui uma implementação ``nível
1'' do padrão Unicode. Maiores detalhes podem ser encontrados nos manuais do
Linux, que podem ser lido com os comandos
<VERB>
    man unicode
    man utf-8
    man iso_8859_1
    man ascii
</VERB>
mas antes disso certifique-se de que o <EM/man/ está configurado corretamente,
conforme mostrado na seção <REF ID="SEC:MAN" name="Man, groff, troff">.

<SECT1>Modo texto versus Sistema de Janelas X<LABEL ID="SEC:DIFXC">
<P>
Alguns sistemas operativos, tais como MacOS, Microsoft Windows e NeXT, possuem
interfaces gráficas próprias. No Linux, assim como na maioria dos
sistemas compatíveis com Unix, é de uso corrente um ambiente gráfico criado
para ser ``multiplataforma'': o X Window System, que também foi projetado para
suportar diversos conjuntos de caracteres, idiomas e formatos de teclado, mas
ainda <BF/não/ suporta totalmente o padrão Unicode e sim uma extensão do
ISO-8859.

<QUOTE>
A rigor o X Window System <BF/não/ é uma interface gráfica com o usuário, mas
a combinação de um protocolo de comunicação com uma interface com programas
aplicativos (API) <EM/sobre a qual/ se construíram várias interfaces gráficas.
Tanto o protocolo quanto o Sistema de Janelas definem um conjunto de
<EM/mecanismos/ e não <EM/políticas/ (elementos característicos da política de
uma Interface Gráfica com o Usuário são menus, botões e caixas de diálogo).
O uso do termo ``XWindows'' é incorreto e deve ser evitado, dando-se
preferência ao nome genérico ``X''.
</QUOTE>

Existem muitas semelhanças entre os dois ambientes.  Ambos se baseiam em
padrões internacionais para definição de conjuntos de caracteres. Tanto no X
quanto no console do Linux pode-se definir uma tecla chamada <EM/Compose/
cujo pressionamento seguido de duas outras gerará o caracter correspondente.
Assim sendo, o pressionamento da seqüência <BF/compose-,-c/ gerará um c
cedilhado.

O tratamento do console é feito diretamente pelo sistema operativo e
aplicações comuns não se envolvem com o processamento dos códigos de varredura
do teclado, recebendo um caracter ou uma seqüência deles ao ser pressionada
cada tecla, de tal sorte que tendo sido corretamente configurados o
teclado e a fonte de caracteres pouco mais se tem a fazer.

O X possui uma arquitetura muito diferente: tanto o teclado quanto a(s)
tela(s) -- pode haver mais de uma tela -- são controlados por uma aplicação
especial chamada <EM/servidor X/. O pressionamento de uma tecla gera uma
mensagem (chamada de <EM/evento/) que é passada pelo servidor X à aplicação
<EM/cliente/. Há um programa muito útil chamado <EM/xev/ que permite observar
cada evento a ele transmitido. Cliente e servidor se comunicam via
rede usando um conjunto de regras chamado <EM/protocolo X/ e podem rodar em
máquinas diferentes. A máquina onde roda o servidor é chamada <EM/estação de
trabalho/ ou <EM/terminal X/ e a máquina onde roda a aplicação (programa
cliente) também é chamada de <EM/cliente/.

Foge ao escopo deste texto a discussão mais profunda do tratamento de eventos
no X. Para maiores informações, sugere-se a consulta aos documentos
mencionados na seção <REF ID="SEC:BIBLIOGRAFIA" name="Leituras recomendadas">, mas
é importante esclarecer que o evento enviado pelo servidor ao cliente não
contém o código numérico da tecla, chamado <EM/keycode/ na terminologia do X.
Ao invés disso, é enviado um símbolo, chamado <EM/keysymbol/ ou <EM/keysym/,
obtido pela consulta a uma tabela de conversão mantida na memória do servidor.
Esta tabela pode ser modificada total ou parcialmente a qualquer momento por
meio de requisições definidas no protocolo X.

Existe um programa chamado <EM/xmodmap/ capaz de ler um arquivo contendo uma
tabela de conversão <EM/keycode/--&gt;<EM/keysym/ e enviá-la, também na forma
de mensagens no protocolo X, ao servidor. É responsabilidade do cliente e
não do servidor interpretar o <EM/keysym/, o que significa que a
aplicação deve saber esperar mais um caracter ao receber uma ``tecla
morta'' para compor uma letra acentuada.

Desde a revisão 5 do X existe na bibliotaca de funções (<EM/Xlib/) um
mecanismo sofisticado de suporte à geração de caracteres em diversos códigos.
A função de tratamento de entrada de texto que já existia nas versões
anteriores, chamada <BF/XLookupString/, entretanto,  não processa as
seqüências de acentos e letras de modo transparente às aplicações. Ao invés
disso foi incluído um método de composição usando <EM/contextos de entrada/
(<EM/input contexts/) por meio das funções <BF/XmbLookupString/ e
<BF/XwcLookupString/, cujo uso é responsabilidade da aplicação -- ou do seu
programador, melhor dizendo -- mesmo no caso da tecla <EM/Compose/.  Isto
deve-se so fato de o <EM/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, o que cria uma dificuldade quando usamos aquelas mais
antigas, que não usam o novo método de tratar a entrada.

Por essas razões é normalmente mais difícil conseguir acrescentar suporte à
geração de caracteres acentuados em aplicativos que rodam sob o X,
principalmente quando não se possui o código fonte. Aplicativos feitos para
rodar apenas em modo texto, tais como <BF/vi/ e <BF/minicom/ dependerão
totalmente dos recursos do emulador de terminal em uso quando rodando em uma
janela do X. Se for usada uma versão atual do <EM/xterm/ ou <EM/rxvt/ o
emulador fará o tratamento correto dos acentos.

O francês Thomas Quinot, cansado de esperar uma solução melhor para o problema
da acentuação no X, resolveu implementar uma modificação para a Xlib proposta
por André D. Balsa, que adiciona suporte à acentuação direta conforme mostrado
na seção~<REF ID="SEC:CONTOR-X" name="Contornando os limites do X">. Isso
permite usar aplicações como <EM/xfig/ ou <EM/xedit/ sem que seja necessário
alterá-las. O truque parece funcionar apenas para caracteres do código
ISO-8859-1 mas é suficiente para o Português e outras línguas. Como bem
observa Balsa, a longo prazo todos os programas deverão ser modificados para
usar os novos recursos do X, mas como a longo prazo estaremos todos mortos a
solução de curto prazo de Quinot torna-se bastante atraente...

</SECT1>

</SECT>

<SECT>Configuração do console (modo texto)<LABEL ID="CONF-CONS">
<P>
O documento de referência sobre a configuração do console do Linux é o
<htmlurl
URL="http://metalab.unc.edu/pub/Linux/docs/HOWTO/Keyboard-and-Console-HOWTO"
name="Keyboard and Console HOWTO">, de Andries Brouwer, que pode ser
encontrado nos repositórios do LDP. Conforme lá descrito, a configuração da
fonte de caracteres e mapa de teclado é feita usando o pacote KBD, encontrado
em todas as distribuições de Linux. 

<SECT1>Mapas de teclado
<P>
Cada tecla do PC possui um código numérico. Ao pressionarmos uma delas o
processador controlador do teclado envia ao computador esse código <EM/de
varredura/, também conhecido como <EM/scancode/, junto com um sinal de que a
tecla foi pressionada ou solta. As seqüências de eventos são então
processadas pelo <EM/driver/ de teclado e armazenadas em uma fila de
caracteres que é lida pelas aplicações por meio da chamada de funções do
sistema operativo. 

Um mapa de teclado é um arquivo de texto que estabelace as correspondências
entre o <EM/scancode/ de tecla e o caracter (ou seqüência de caracteres)
a gerar quando ela for pressionada, chamado <EM/keycode/. Por exemplo:
<VERB>
    # atribuição da tecla '-' do teclado numérico à tecla com código 74
    keycode  74 = KP_Subtract     

    # atribuição da tecla '4' do teclado numérico à tecla com código 75
    keycode  75 = KP_4            

    # etc...

    keycode  76 = KP_5            # tecla 5
    keycode  77 = KP_6            # tecla 6
    keycode  78 = KP_Add          # soma
    keycode  79 = KP_1            # tecla 1
    keycode  80 = KP_2            # tecla 2
</VERB>

Além das teclas alfabéticas, numéricas e de símbolos, existem outras
chamadas <EM/modificadoras/ que permitem gerar códigos que não
correspondem a nenhum sinal gráfico: <EM/Shift Control
Alt/ e <EM/Meta/. Esta última normalmente não é encontrada em
teclados de PCs, apenas em estações de trabalho de fabricantes como Sun,
SGI, HP e Digital (eles não gostam de ser chamados de ``DEC''). O editor de
texto Emacs usa muito a tecla <EM/Meta/.

O arquivo de mapa permite também especificar teclas especiais chamadas
``teclas mortas'' (<EM/deadkeys/). Quando pressionadas elas não resultam no
aparecimento de um caracter na tela, limitando-se a alterar o comportamento da
tecla pressionada a seguir para que, por exemplo, ao se digitar um
<BF/&tilde;/ seguida de um <BF/a/, seja gerado um `ã'.

</SECT1>

<SECT1>Mapas de tradução de tela
<P>
Um mapa de tradução de tela permite especificar qual o caracter X a ser
exibido na tela, quando um programa deseja exibir um caracter Y.  Desta
forma, poderíamos fazer com que ao escrever o caracter com o código do
<TT/c-cedilhado/ na tela, fosse na realidade exibido um outro caracter de
código diferente mas cuja <EM/imagem/ na nossa fonte de caracteres
correspondesse à imagem de um <TT/c-cedilhado/.

Este mapeamento é necessário apenas quando queremos usar uma fonte cujos
caracteres não possuem códigos diretamente correspondentes aos do conjunto
usado no mapa de teclado.

<!-- *** O que é uma fonte? *** -->

<SECT1>Comandos do pacote KBD
<P>
<DESCRIP>
<TAG/Loadkeys/
   Permite carregar um mapa de teclado. Por exemplo, o comando 
   a seguir carrega o mapa armazenado no arquivo <TT/portugal.map/.
<VERB>
    loadkeys /usr/lib/kbd/keytables/portugal.map
</VERB>
<TAG/Setfont/
   Permite o carregamento de uma fonte de caracteres de tela, possibilitando a
   alteração das fontes utilizadas em modo de texto. O comando a seguir, por
   exemplo, irá carregar uma fonte com o conjunto Latin-1: 
<VERB>
    setfont lat1u-16.psf
</VERB>
<TAG/Showfont/
   mostra todos os caracteres existentes na fonte que está atualmente em uso
   no console. O X também tem um comanto chamado showfont, que serve para
   mostrar as características de uma determinada fonte, mas não os caracteres
   em si. Para esta última finalidade se usa o comando <EM/xfd/. Se o
   programa showfont do pacote KBD for invocado em um emulador de terminal X,
   como <EM/xterm/, ele gerará um erro ``GIO_SCRNMAP: Invalid argument'', mas
   não provocará nenhum dano.
<TAG/Mapscr/
   Permite carregar um mapa de tradução de tela. Suponhamos que exista o arquivo
   <TT>/etc/portugal.trad</TT>. Se executarmos o comando
<VERB>
    mapscrn /etc/portugal.trad
</VERB>
   então a partir deste momento as traduções lá definidas serão usadas.
<TAG/Loadunimap/
   Carrega um mapa de tradução de Unicode para a fonte de tela. O mapa padrão,
   chamado ``def.uni'' considera que estamos usando a fonte normal do IBM-PC.
   Este comando <BF/não/ é necessário quando usamos uma fonte com caracteres
   definidos no padrão Unicode, pois o programa setfont carrega
   automaticamente a tabela de mapeamento adequada. O comando a seguir
   carregará o mapa de tradução para as fontes latin-1:
<VERB>
    loadunimap lat1
</VERB>
</DESCRIP>

<!-- 

    Esta seção não é realmente necessária.

<SECT1>Colocação do console em modo Unicode
<P>
<QUOTE>
  <BF/Nota/: a configuração descrita nesta seção não é obrigatória. Ela é
  mantida aqui apenas como referência para os usuários.
</QUOTE>

Para colocar o console no modo Unicode permitindo o uso dos acentos e
caracteres semigráficos, pode ser usado o comando
<VERB>
    echo -n -e '\033(B'
</VERB>

A ativação do modo Unicode deve ser feita para cada terminal virtual, mas
é muito mais fácil criar um arquivo <TT>/etc/issue</TT> que contenha as
seqüências de configuração. Isso pode ser feito usando este pequeno
script:
<VERB>
    #!/bin/sh
    echo -e '\033(B\033&lsqb;H\033&lsqb;J\033&lsqb;37m\033&lsqb;44m\033&lsqb;K' > /etc/issue
    echo -e '      Welcome to \\n (\\s \\m \\r) \\l\033&lsqb;K' >> /etc/issue
    echo -e '      \\d \\t (\\U)\033&lsqb;K' >> /etc/issue
    echo -e '\033&lsqb;K\033&lsqb;37m\033&lsqb;40m' >> /etc/issue
    echo -e >> issue
</VERB>

Esse arquivo contém seqüências de escape para o agetty, que é usado nas
distribuições Slackware e Debian. Ele faz apresentar no topo da tela um quadro
colorido com várias informações úteis. No meu computador, por exemplo, aparece
a seguinte mensagem em letras brancas sobre um fundo azul: 
<VERB>

    Welcome to doncarlo (Linux i586 2.0.33) tty5
    Fri Jul 17  1998 03:12:37 (4 users)

</VERB>

Outras distribuições usam programas diferentes para ativar o login do
usuário, o que pode obrigar a fazer alterações. Se algum dos leitores
tiver um arquivo adequado para outros *getty (mingetty, getty-ps, mgetty,
etc.) por favor envie-me uma cópia para que seja incluida aqui. 

Na Slackware é importante também editar o arquivo <TT>/etc/rc.d/rc.S</TT>
e comentar as linhas com os comandos que geram um novo <TT>/etc/issue
cada</TT> vez que o o sistema é iniciado. 

Uma alternativa ao método anterior é colocar no início do
<TT>/etc/rc.d/rc.S</TT> a seguinte seqüência de comandos: 
<VERB>
    # Configuração das consolas
    #

    # activacao do modo de mapeamento Latin-1
    #
    for tty in /dev/tty&lsqb;1-9&rsqb;*
    do
	    echo -n -e "\\033(B" &gt; $tty
    done
</VERB>
</SECT1>

-->

<SECT1>Carregamento de uma fonte de caracteres<LABEL ID="SEC:CARFONTE">
<P>
O pacote KBD contém dois tipos de fontes com codificação latin-1:
<ITEMIZE>
<ITEM>as que já possuem uma tabela de mapeamento unicode, carregada
      automaticamente pelo programa <TT/setfont/. Estas fontes têm nomes
      <TT/lat1u-*.psf/;
<ITEM>as que não possuem tabela de mapeamento. Neste caso é preciso carregar
      uma com o programa <TT/loadunimap/. Estas têm nomes <TT/lat1-*.psf/
      (o ``u'' indica Unicode).
</ITEMIZE>

Nas versões mais novas do KBD os arquivos são comprimidos com <TT/gzip/.  É
preciso carregar uma fonte que tenha os caractres latinos acentuados no padrão
ISO 8859-1 e <EM/também/ os símbolos semigráficos. As fontes de nome
<TT/iso01.*/ não possuem esses símbolos. A fonte mais recomendada é a
<TT/lat1u-16.psf/.

As versões mais antigas do pacote KBD mantinham essas fontes no diretório
<TT>/usr/lib/kbd/consolefonts</TT>, que foi trocado depois da versão 0.92 por
<TT>/usr/share/consolefonts</TT>. Dependendo da sua distribuição e do quanto
ela esteja atualizada o diretório poderá ser um ou outro.

<SECT2>Slackware
<P>
Foi criado o script <TT>/etc/rc.d/rc.font</TT>, contendo o seguinte: 

<VERB>
    #!/bin/sh
    #
    # /etc/rc.d/rc.font
    #
    # Seleciona uma das fontes de caracteres disponiveis em
    # /usr/lib/kbd/consolefonts.
    #
    setfont lat1u-16.psf

    # O comando a seguir é totalmente desnecessário
    # com a fonte lat1u-16.psf.
    # loadunimap lat1u

    # Remova o comentário da linha abaixo se estiver usando uma fonte sem
    # tabela de mapeamento de Unicode para tela:
    # loadunimap lat1
</VERB>

<SECT2>Debian
<P>
Edite o arquivo <TT>/etc/kbd/config</TT> e coloque uma linha contendo
<VERB>
    CONSOLE_FONT=lat1u-16.psf
</VERB>
esse arquivo é processado pelo script <TT>/etc/rc.boot/kbd</TT>. Execute-o
para ativar a nova fonte sem ter que dar ``reboot''. Lembre-se sempre: Linux
<BF/não/ é Windows!

<SECT2>Red Hat
<P>
Edite o arquivo <TT>/etc/sysconfig/i18n</TT> e veja se contém o seguinte:
<VERB>
    LANG=pt_BR
    LINGUAS=pt_BR
    LC_CTYPE=ISO-8859-1
    LC_ALL=pt_BR
    SYSFONT=lat1u-16
    SYSTERM=linux-lat
</VERB>

<SECT2>Conectiva Red Hat Linux
<P>
Se você selecionar a língua correta durante a instalação não há nada mais a
fazer. A configuração é feita extatamente como do Red Hat.

<SECT2>S.u.S.E.
<P>
Edite o arquivo <TT>/etc/rc.config</TT> e procure uma linha que começa com
``FONT='' (linha 64, em minha máquina com S.u.S.E. verão 5.6) e coloque
<VERB>
    FONT=lat1u-16.psf
</VERB>

Edite os scripts <TT/boot.setup/ e <TT/single/ contidos no diretório
<TT>/etc/rc.d</TT>. Procure a linha contendo o comando
<TT>/usr/bin/loadunimap</TT> e remova-a ou ponha no seu início um ``#''
para deixá-la como comentário. Veja comentários sobre este comando na
seção~<REF ID="SEC:CARFONTE" name="Carregamento de uma fonte de caracteres">.

<SECT2>Testando a fonte
<P>
Experimente algumas teclas como ``,.&verbar;!"&num;&dollar;%&amp;/()=?'',
etc. e use o comando <TT/showfont/ para mostrar a fonte em uso.

</SECT1>

<SECT1>Carregando um mapa de teclado
<P>
A seguir é necessário carregar o mapa de teclado adequado. Até a versão 0.92
do pacote KBD esses mapas ficavam no diretório <TT>/usr/lib/kbd/keytables</TT>
passando mais tarde para <TT>/usr/share/keytables</TT>.  Dependendo da
distribuição você terá um diretório ou outro. Os mapas para diversos tipos de
teclados são apresentados mais adiante. 

<SECT2>Slackware.
<P>
Foi criado o script <TT>/etc/rc.d/rc.keyboard</TT>, contendo o seguinte: 
<VERB>
    #!/bin/sh
    #
    # /etc/rc.d/rc.keyboard
    #
    # Seleciona um dos mapas de teclado disponíveis no diretório
    # /usr/lib/kbd/keytables
    #
    loadkeys abnt2
</VERB>
e acrescentei as seguintes linhas ao <TT>/etc/rc.d/rc.S</TT>,
imediatamente antes do tratamento do <TT>/etc/rc.d/rc.keyboard</TT>: 
<VERB>
    # Carrega uma fonte de caracteres se existe um script rc.font.
    if &lsqb; -x /etc/rc.d/rc.font &rsqb;; then
      /etc/rc.d/rc.font start
    fi

    # Carrega um mapa de teclado se existe um script rc.keyboard.
    if &lsqb; -x /etc/rc.d/rc.keyboard &rsqb;; then
      /etc/rc.d/rc.keyboard start
    fi
</VERB>

<SECT2>Debian.
<P>
Certifique-se de ter instalado o pacote <EM/kbd/ e depois faça o seguinte:
<ITEMIZE>
<ITEM>copie os arquivos com os mapas de teclado fornecidos (veja a seção <ref
      id="SEC:FICHEIROS" name="Ficheiros necessários">) para o diretório
      <TT>/usr/share/keytables/</TT>. Não é necessário descomprimi-los;
<ITEM>copie o mapa correspondente ao seu teclado para o arquivo
      <TT>/etc/kbd/default.map.gz</TT>.
<ITEM>rode o script <TT>/etc/init.d/keymaps.sh</TT>.
</ITEMIZE>

<SECT2>Red Hat.
<P>
Certifique-se de ter instalado o pacote <EM/kbd/. Copie os arquivos com os
mapas de teclado fornecidos (veja a seção <REF ID="SEC:FICHEIROS"
name="Ficheiros necessários">) para o diretório
<TT>/usr/lib/kbd/keytables/</TT> (ou
<TT>/usr/lib/kbd/keymaps/i386/qwerty/</TT>, a pertir do Red Hat 5.2). Não
é necessário descomprimi-los.

Edite o arquivo /etc/sysconfig/keyboard e coloque o nome do mapa a usar na
variável KEYTABLE, como por exemplo
<VERB>
    KEYTABLE="abnt2"
</VERB>

<SECT2>Conectiva Red Hat Linux.
<P>
O CRHL já vem com os mapas de teclado para Português. Se você selecionou o
teclado correto durante a instalação, não há mais nada a fazer. Caso
contrário, edite o arquivo <TT>/etc/sysconfig/keyboard</TT> e coloque
<VERB>
    KEYTABLE="nome"
</VERB>
Onde ``nome'' é <EM/br-abnt2/, <EM/pt/ ou <EM/us-acentos/ caso o desenho do
seu teclado seja ABNT-2, português ou americano.


<SECT2>S.u.S.E..
<P>
Certifique-se de ter instalado o pacote <EM/kbd/. Copie os arquivos com os
mapas de teclado fornecidos (veja a seção <REF ID="SEC:FICHEIROS"
name="Ficheiros necessários">) para o diretório
<TT>/usr/lib/kbd/keytables/</TT>. Não é necessário descomprimi-los.

Descomprima o mapa de teclado adequado, copiando para o arquivo
<TT>/etc/default.keytab</TT>, usando por exemplo um comando como
<VERB>
    zcat /usr/lib/kbd/keytables/pt.map.gz &gt; /etc/default.keytab
</VERB>

<SECT2>Testando o teclado
<P>
Experimente pressionar a tecla <BF/c-cedilhado/ (se o teclado não tem esta
tecla, digite <TT/'c/). Verifique se todas as letras acentuadas, maiúsculas e
minúsculas são geradas corretamente e aparecem na tela. Se aparecer algum
caracter estranho verifique se carregou o mapa de teclado e a fonte de
caracteres corretos, pois provavelmente uma dessas operações foi mal sucedida.

Se ao invés de c-cedilha minúsculo aparecer um maiúsculo é provável que uma
tabela de mapeamento Unicode incorreta esteja a ser carregada. Este problema
ocorrerá na distribuição S.u.S.E. se não se fizerem as alterações nos scripts
do sistema mencionadas anteriormente.
</SECT1>

<SECT1>Verificando erros
<P>
Mas, e se alguns dos caracteres continuarem a não aparecer? Bem, antes de mais
nada verifique se a fonte e o mapa de teclado adequados foram carregados. Um
caso especial é quando queremos usar uma fonte que não segue a codificação ISO
Latin-1 (é o caso da fonte padrão do console do PC). Teríamos então de
<EM/convencer/ a tela a mostrar os caracteres certos em cada caso.

Poderíamos recorrer ao comando <EM/mapscrn/.  O arquivo com a tabela de
tradução teria no entanto de ser criado por nós, seguindo um processo moroso
de tentativa e erro até encontrar o caracter cuja imagem desejávamos. Ou, de
uma forma mais fácil, poderíamos usar o comando <EM/showfont/. 

Se usarmos a fonte de caracteres correta, o uso deste último comando será
desnecessário. É até recomendável que não se use tal recurso, pois embora ele
permita criar uma tabela de caracteres ``personalizada'' em um computador,
será difícil que um documento acentuado produzido nessa máquina possa ser lido
em outra que não tenha a mesma configuração. 

</SECT>

<SECT>Biblioteca de funções libc e aplicativos GNU<LABEL ID="SEC:LIBC">
<P>
A biblioteca padrão de funções do Linux suporta Internacionalização e
Localização segundo o padrão POSIX (Portable Operating System Interface).
Trata-se de uma norma estabelecida pelo IEEE (Institute of Electrical and
Electronics Engineers) para intercomunicação entre diferentes sistemas
operativos. Existe também um padrão estabelecido pelo ANSI (American National
Standards Institute) para a linguagem de programação C que permite escrever
programas com suporte internacional.

<SECT1>Configurando o suporte internacional
<P>
Resumidamente, podemos dizer que as funções que tratam informações dependentes
da língua ou do país podem ter seu comportamento modificado, bastando para
tanto estabelecer algumas variáveis de ambiente. E que funções são essas?
Podemos citar as de formatação de datas, valores monetários e mensagens de
erro do sistema. Se você não sabe o que é uma variável de ambiente, sugiro que
leia o manual com o comando
<VERB>
    man environ
</VERB>

O padrão POSIX permite usar diversas variáveis de configuração, cada uma delas
definindo o tratamento dado a um tipo de informação, a saber
<DESCRIP>
<TAG/LC_COLLATE/
    Define regras para comparação entre caracteres no alfabeto local. Por
    exemplo, a letra `ã' deve ser tratada como idêntica ao `a' no Português
    quando ordenamos alfabeticamente.

<TAG/LC_CTYPE/
    Define regras para comparação entre caracteres maiúsculos e
    minúsculos. Se estivermos trabalhando com o código ASCII, sabemos que o
    código numérico de uma letra minúscula é 32 a mais do que a maiúscula
    correspondente, mas para uma letra acentuada esta regra não é válida!

<TAG/LC_MONETARY/
    Muda o comportamento das funções de formatação de valores monetários e
    permite descobrir, por exemplo, o símbolo da moeda local, ou se usa ponto
    ou vírgula como separador de milhares e de casas decimais.

<TAG/LC_MESSAGES/
    Estabelece a língua em que as mensagens serão apresentadas e como é uma
    resposta afirmativa ou negativa (S/N).

<TAG/LC_NUMERIC/
    Estabelece o comportamento das funções de leitura/escrita de valores
    numéricos permitindo, por exemplo que usemos a vírgula decimal.

<TAG/LC_TIME/
    Define a formatação de datas e horas.

<TAG/LC_ALL/
    Define de uma só vez todas as categorias. Se usarmos LC_ALL, não
    precisaremos definir nenhuma das outras, a não ser que queiramos um
    comportamento diferente para aquele ítem específico.

<TAG/LANG/
    Define de uma só vez todas as categorias, se LC_ALL não estiver definida.
    Também é usada pelo comando <TT/man/ para compor os caminhos pelos quais
    ele procurará as páginas do manual. Veja as observações a respeito desta
    variável nas seções <REF ID="SEC:LOCALE" NAME="Locale">, <REF
    ID="SEC:LOCALE" NAME="Locale"> e <REF ID="SEC:LOCALE" NAME="Locale">.
</DESCRIP>

Maiores informações podem ser obtidas no manual do sistema com o comando
<VERB>
    man 7 locale 
</VERB>
O `7' no comando anterior é necessário para evitar confusão com uma função
homônima da linguagem Perl. Note que as configurações acima afetam, em
princípio, apenas as funções disponíveis na biblioteca de funções da linguagem
C. Na prática, todos os programas que rodam em Linux usam aquela biblioteca,
mas o sistema operativo não provê, catálogos de mensagens em
diversas línguas para todos os programas.

A identificação da língua e do local é feita por dois códigos de duas letras,
separados por um sinal ``_''. Se omitirmos o código de país, assume-se o país
padrão para a língua informada, mas deve haver um catálogo correspondente.
Deste modo, o código ``pt_PT'' significa Português de Portugal, enquanto
``pt_BR'' significa Português do Brasil. Escolher uma combinação língua/local
basta então colocar em seu arquivo <TT>/etc/profile</TT> uma linha contendo
<VERB>
    LC_ALL="pt_PT"
    export LC_ALL
</VERB>
Usuários brasileiros devem usar ``pt_BR'' ao invés de ``pt_PT''. Teste o
resultado com os comandos a seguir (<TT>/inexistente</TT> é o nome de um
arquivo que <BF/não/ existe):
<VERB>
    echo ÁÉÍÓÚ | tr '&lsqb;:upper:&rsqb;' '&lsqb;:lower:&rsqb;'
    tar tf /inexistente
    ls -l /
    date
    cal 1 1999
</VERB>
O resultado do primeiro deverá ser ``<TT/áéíóú/''. Os comandos <TT/tar/ e
<TT/ls/ devem retornar mensagens em Português e <TT/cal/ deve mostrar um
calendário de janeiro de 1999, com <EM/do se te qu qu se sá/ no cabeçalho dos
dias da semana.

Na distribuição Debian, certifique-se de ter instalado o pacote ``locales'',
que pertence ao grupo ``admin''. O nome do arquivo que contém o pacote (na
versão 2.0 da distribuição) é <TT/locales_2.0.7t-1.deb/ e em meu CD
está no diretório <TT>debian/main/binary-i386/admin</TT>.
</SECT1>

<SECT1>Problemas com a libc 5
<P>
Até meados de 1997 todas as distribuições de Linux usavam a mesma biblioteca
<EM/libc/, que estava na versão 5, desenvolvida a partir de uma versão
mais antiga da libc do projeto GNU. Esta biblioteca possuia suporte muito
limitado à internacionalização e normalmente nenhum dos catálogos de locais
era incluído na distribuição, ficando o inglês como língua padrão.

A versão 6 da libc do Linux baseia-se na versão 2 da libc do projeto GNU. O
suporte à internacionalização foi muito melhorado, além de incluir outros
atributos que não interessam para os fins deste HOWTO. Se sua distribuição for
a Debian versão 2, Red Hat versão 5 ou qualquer outra que use a nova libc,
então não há mais nada a fazer além do descrito na seção anterior.

Mas se você usa uma distribuição ainda baseada na libc 5 (Slackware, Caldera
1.x ou uma versão mais antiga de Debian ou Red Hat) é preciso instalar a
coleção de locais. Não tente copiar a coleção de uma distribuição mais
recente, pois os formatos dos arquivos são incompatíveis. Pegue na página do
Portuguese HOWTO o arquivo <TT/locales-pt.tgz/. Para instalá-lo na
distribuição Slackware, basta (como usuário <BF/root/) usar o comando
<VERB>
    installpkg locales-pt.tgz
</VERB>
e para outras distribuições use o comando
<VERB>
    tar xzf locales-pt.tgz -C /
</VERB>

Verifique se há dois subdiretórios do <TT>/usr/share/locale</TT> chamados
<TT/pt_BR/ e <TT/pt_PT/. Basta então configurar a variável de ambiente
LC_ALL, como já descrito.

</SECT>

<SECT>Configuração do X<LABEL ID="CONF-X">
<P>
Quando o servidor X está ativo, ele coloca o teclado do computador em um modo
de operação chamado <EM/raw/ (cru), em oposição ao modo normal, chamado
<EM/cooked/ (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''.

O X vem equipado com um utilitário destinado à configuração do teclado,
chamado <EM/xmodmap/, que cumpre uma função correspondente à do comando
<EM/loadkeys/, ou seja, lê um arquivo de mapa de teclado do X, expecificando
as equivalências entre os <EM/keycodes/ e respectivos <EM/keysymbols/.

Eis um excerto deste arquivo:
<VERB>
    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
</VERB>
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 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 <BF/Backspace/, por
exemplo, tem o número 14 no console, e 22 no X (em um computador do tipo
IBM-PC). 

As versões 3.2 e posteriores do XFree86 permitam definir <EM/dead-keys/, mas
o seu tratamento é responsabilidade da aplicação, conforme visto na seção~<ref
id="SEC:DIFXC" name="Modo texto versus Sistema de Janelas X">. Há modos de
contornar esta limitação e tornar o tratamento de <EM/dead-keys/ transparente
às aplicações, conforme mostrado na seção <REF ID="SEC:CONTOR-X"
name="Contornando os limites do X">.

Dividimos a configuração em duas partes: Uma que deve ser feita antes do
<EM/login/ do usuário e outra depois.

<SECT1>Configuração do xinit
<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 <TT>/usr/X11R6/lib/X11/xinit</TT>, 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
<TT>/var/X11R6/lib/xinit</TT> e na Debian e na Red Hat para
<TT>/etc/X11/xinit</TT>. 

Nas distribuições Slackware e Red Hat, verifique se no referido diretório
existe um arquivo chamado <TT>.Xmodmap</TT>. Se existir, copie o
<TT>Xmodmap.</TT>&lt;alguma-coisa&gt;  para ele, ou faça um link.
Normalmente o arquivo de configuração <TT>xinitrc</TT> possui os comandos
para carregá-lo automaticamente. Veja o seguinte trecho: 

<VERB>
    #!/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 &lsqb; -f $sysresources &rsqb;; then
	xrdb -merge $sysresources
    fi

    if &lsqb; -f $sysmodmap &rsqb;; then
	xmodmap $sysmodmap
    fi
</VERB>

Na distribuição Debian o mapa de teclado padrão do X é
<TT>/etc/X11/Xmodmap</TT>, basta copiar o mapa desejado para aquele
arquivo.  Ele será carregado pelo xinitrc, que por sua vez é um link simbólico
para <TT>/etc/X11/Xsession</TT>, sempre que iniciar a seção de trabalho do
usuário.

<SECT1>Configuração do XDM
<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 <BF/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 ``&lsqb;'' ou ``&rsqb;'' 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. 

É preciso fazer uma pequena alteração no arquivo de configuração Xsetup_0.
Esse arquivo deve estar no diretório <TT>/usr/X11R6/lib/X11/xdm</TT>, que
na Slackware é um link simbólico para <TT>/var/X11R6/lib/xdm</TT> e
<TT>/etc/X11/xdm</TT> na Debian e -- sujeito a confirmação -- RedHat. Eis
o conteúdo completo desse arquivo: 
<VERB>
    #!/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 &lsqb; -r $sysresources &rsqb;; then
	xrdb -merge $sysresources
    fi

    if &lsqb; -r $sysmodmap &rsqb;; then
	xmodmap $sysmodmap
    fi

    xconsole -geometry 480x130-0-0 -daemon -notify -verbose -exitOnFail
</VERB>

A distribuição Debian tem um <TT/Xsetup_0/ um pouco diferente, em
<TT>/etc/X11/xdm/Xsetup_0</TT>, mas basta acrescentar-lhe o seguinte:

<VERB>
    sysmodmap=/etc/X11/Xmodmap
    sysresources=/etc/X11/Xresources

    if &lsqb; -f $sysresources &rsqb;; then
      xrdb -merge $sysresources
    fi

    if &lsqb; -f $sysmodmap &rsqb;; then
      xmodmap $sysmodmap
    fi
</VERB>

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.

<SECT1>Compose
<P>
Uma das coisas mais importantes a definir quando vamos utilizar acentuação
por meio de <EM/dead-keys/ é o conjunto de <EM/regras de composição/. Essas
regras determinam, por exemplo que a composição do caracter <BF/'/&nbsp;com
a letra <BF/e/ gerará um <BF/é/.

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
<TT>/usr/X11R6/lib/X11/locale/???/Compose</TT>, onde ??? é a codificação
em uso (no nosso caso, iso8859-1).

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 <BF/Ç/ seja gerado pela seqüência <TT/'C/. Se não fizermos
isso, seremos obrigados a digitar <TT/&lt;dead_cedilla-C&gt;/, sedo o
<EM/dead_cedilla/ produzido pela combinação <TT/AltGR-=/, o que não é nada
confortável. Além disso, no teclado americano somos obrigados a usar as aspas
duplas para gerar o trema.

O arquivo <TT/Compose/ fornecido foi feito procurando imitar ao máximo o
comportamento do console e possui as seguintes facilidades para geração de
caracteres:
<ITEMIZE>
    <ITEM>C-cedilha: tecla <TT/Ç/ ou seqüência
	&lt;acento-agudo&gt;-C
    <ITEM>Apóstrofo: tecla <TT/'/ ou seqüências
	&lt;acento-agudo&gt;-&lt;acento-agudo&gt; e
	&lt;acento-agudo&gt;-&lt;espaço&gt;
    <ITEM>Acento grave: seqüências &lt;acento-grave&gt;-&lt;acento-grave&gt; e
	&lt;acento-grave&gt;-&lt;espaço&gt;
    <ITEM>Aspas: tecla <TT/&dquot;/ ou seqüência &lt;trema&gt;-&lt;trema&gt;
    <ITEM>Trema: seqüência &lt;trema&gt;-&lt;espaço&gt;
    <ITEM>Til: seqüências &lt;til&gt;-&lt;espaço&gt; e &lt;til&gt;-&lt;til&gt;
    <ITEM>Circumflexo: seqüências &lt;circumflexo&gt;-&lt;espaço&gt; e
	&lt;circumflexo&gt;-&lt;circumflexo&gt;
</ITEMIZE>

Para incluirmos as novas regras, basta aplicar uma alteração à definição
original. O arquivo <TT/Compose.patch/ pode ser obtido via WWW na página do
Portuguese HOWTO. Para aplicar a atualização, copie-o para o diretório
<TT>/usr/X11R6/lib/X11/locale/iso8859-1/</TT>, faça uma cópia de reserva do
<TT/Compose/ original e invoque o utilitário <EM/patch/:
<VERB>
    cp -p Compose Compose.backup
    patch < Compose.patch
</VERB>

Caso você prefira não aplicar o ``patch'', um arquivo <TT/Compose/ pronto
também é fornecido. Lembre-se de fazer cópia do original <BF/antes/ de
substituí-lo!
</SECT1>
 
<SECT1>Locale<LABEL ID="SEC:LOCALE">
<P>
Para os usuários brasileiros, pode haver mais uma alteração a fazer no X.
Conforme vimos na seção~<REF ID="SEC:LIBC" name="Biblioteca libc">, 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/). A biblioteca
de funções do X (<EM/Xlib/) 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''.

Para incluir o local pt_BR no X11R6.3 basta alterar três arquivos existentes
no diretório <TT>/usr/X11R6/lib/X11/locale</TT>. Pegue o arquivo
<TT/Xlocale.patch/ via WWW na página do Portuguese HOWTO. Para aplicar a
atualização, copie-o para o diretório <TT>/usr/X11R6/lib/X11/locale</TT>,
faça uma cópia de reserva dos arquivos a serem alterados e invoque o
utilitário <EM/patch/:
<VERB>
    cp -p compose.dir compose.dir.backup
    cp -p locale.alias locale.alias.backup
    cp -p locale.dir locale.dir.backup
    patch < Xlocale.patch
</VERB>

Caso você prefira não aplicar o ``patch'', arquivos prontos também são
fornecidos. Lembre-se de fazer cópias dos originais <BF/antes/ de
substituí-los!

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

</SECT1>
  
<SECT1>Geração de mapas com o XKeyCaps
<P>
O programa XKeyCaps, criado por <HTMLURL URL="http://www.jwz.org/" NAME="Jamie
Zawinski"> é uma interface gráfica para o <TT/xmodmap/, 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 <TT/.Xmodmap/ correspondente.

Ele pode ser obtido via WWW em <URL URL="http://www.jwz.org/xkeycaps/"> e, a
partir da versão 2.43, já incoropra também suporte para o desenho brasileiro
(ABNT2), uma contribuição de Andre Gerhard.

</SECT1>

<SECT1>Contornando os limites do X<LABEL ID="SEC:CONTOR-X">
<P>
Conforme foi explicado na seção <REF ID="SEC:DIFXC" name="Modo texto versus
Sistema de Janelas X">, 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.

<SECT2>Alteração da biblioteca Xlib
<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/). 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
<VERB>
    man ld.so
    man ldconfig
    man ldd
    man dlopen
</VERB>
Thomas Quinot criou uma alteração para a biblioteca de funções do X
(<EM/Xlib/) introduzindo o tratamento de acentos na função <BF/XLookupString/,
Tudo que se tem a fazer é substituir o arquivo contendo esta biblioteca por
outro, que pode ser obtido via internet no endereço

<QUOTE>
<URL URL="http://web.fdn.fr/~tquinot/dead-keys.en.html">
</QUOTE>

Existem duas versões do arquivo, uma para sistemas onde as bibliotecas do X
suportam o uso seguro de <EM/threads/ (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/ rode o seguinte
comando:

<QUOTE>
nm --dynamic /usr/X11R6/lib/libXext.so.6|grep _Xglobal_lock
</QUOTE>

Se aparecer ``<TT/U _Xglobal_lock/'' seu sistema suporta threads e o arquivo
a obter é <TT/libX11-XF3.3.1-TS.tar.gz/. Se não aparecer, seu sistema não
suporta threads e o arquivo a obter é <TT/libX11-XF3.3.1.tar.gz/. Tendo
obtido o arquivo, copie-o para um diretório temporário e extraia seu conteúdo.
Mova o arquivo <TT>/usr/X11R6/libX11.so.6.1</TT> para outro diretório,
para preservá-lo. Não é suficiente renomeá-lo! Remova-o para um diretório cujo
nome <BF/não/ esteja contido no arquivo <TT>/etc/ld.so.conf</TT>. Depois,
mova o novo arquivo para o lugar do antigo e rode o programa <EM/ldconfig/
(isto deve ser feito pelo usuário <BF/root/):
<VERB>
    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
</VERB>

É 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 <TT/XF86Config/. Este arquivo fica no diretório <TT>/etc</TT>
(Slackware) ou <TT>/etc/X11</TT> (Debian, Red Hat). Procure a seção
``Keyboard'' e inclua a opção ``XkbDisable'', conforme mostrado a seguir:
<VERB>
    Section "Keyboard"
       Protocol        "Standard"
       XkbDisable
    EndSection
</VERB>

A opção XkbDisable inabilita a extensão XKEYBOARD do servidor X, o que neste
caso serve para sinalizar à função <BF/XLookupString/ que ela deve tratar os
acentos. Se quisermos voltar ao comportamento normal, basta retirar a opção
do <TT/XF86Config/.

Configure o mapa de teclado do X conforme explicado nas seções anteriores
deste documento. Para testar o resultado, rode o programa <EM/xedit/ e digite
alguns caracteres acentuados.

</SECT2>

<SECT2>Alteração no kernel do Linux
<P>
<QUOTE>
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.
</QUOTE>

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/ e <EM/cooked/. Estes modos de operação
podem ser mudados com o programa <BF/kbd_mode/, 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).

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/) chamado <BF/diacrd/, conforme descrito a seguir:
<ITEMIZE>
<ITEM>Uma modificação no kernel faz que todos os dados lidos do teclado
    sejam redirecionados para um dispositivo especial do sistema chamado
    <TT>/dev/rawkbd</TT> quando o teclado estiver em modo <EM/raw/.
<ITEM>Os dados que o kernel grava no <TT>/dev/rawkbd</TT> são lidos pelo
    programa <TT/diacrd/, que processa as seqüências acento-letra e reescreve
    no <TT>/dev/rawkbd</TT> os caracteres acentuados na forma de códigos de
    varredura (<EM/scancodes/) que normalmente não existem no teclado.
<ITEM>O kernel lê no <TT>/dev/rawkbd</TT> os códigos gravados pelo
    <TT/diacrd/ e os passa à aplicação, que no caso é o servidor X.
<ITEM>O servidor X mapeia os códigos de varredura para caracteres. Um mapa de
    teclado especial permite então gerar as letras acentuadas.
</ITEMIZE>

O diacrd pode ser obtido via FTP anônimo no endereço
<QUOTE>
<URL URL="ftp://metalab.unc.edu/pub/Linux/system/keyboards">
</QUOTE>
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 <BF/root/):
<ITEMIZE>
<ITEM>Obtenha o arquivo -.tar.gz correspondente a seu teclado. Extraia seu
    conteúdo, o que deverá criar um diretório chamado
    <TT/diacrd-&lt;versão&gt;/.
<ITEM>Edite o arquivo <TT/diacrd.c/ e remova os comentários desejados, de
    acordo com suas preferências. Pode-se incluir capacidade de rodar o
    programa <BF/xmodmap/ e ejetar o CD-ROM sob controle do pressionamento de
    uma combinação de teclas.
<ITEM>Aplique a modificação no kernel. Para isto, execute o comando
    ``make~patch-usr-src''.
<ITEM>Crie o dispositivo <TT>/dev/rawkbd</TT> executando o comando
    ``make~rawkbd''.
<ITEM>Compile o diacrd e instale-o executando os comandos ``make'' e
    ``make~install''.
<ITEM>Compile e instale o kernel, com os comandos
<VERB>
    cd /usr/src/linux
    make config
    make zlilo
</VERB>
    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 <REF ID="SEC:ONDE" name="Onde encontrar a versão mais atual">.
<ITEM>Dê um ``reboot'' no computador. Verifique se o suporte ao dispositivo
    rawkbd foi instalado com sucesso com o comando
<VERB>
    dmesg | grep RAWKBD
</VERB>
    Deve aparecer
<VERB>
    RAWKBD interface for diacriticals translation enabled...
</VERB>
    e teste o dispositivo <TT>/dev/rawkbd</TT> com o comando
<VERB>
    printf "### TESTANDO ###" &gt;&gt; /dev/rawkbd
</VERB>
    Veja na seção <REF ID="CONF-CONS" name="Configuração do console"> como
    carregar um mapa com suporte à acentuação. O pacote diacrd vem com um
    arquivo chamada <TT/usintl.map/, que corresponde ao nosso
    <TT/us+.map/. Se seu teclado não for do tipo americano, use o
    <TT/pt.map/ ou <TT/abnt-2.map/.
<ITEM>Substitua o arquivo <TT>/usr/X11R6/lib/X11/xkb/keycodes/xfree86</TT>
    pelo arquivo fornecido junto com o diacrd.
<ITEM>Se tudo correr bem, rode o programa <BF/diacrd/. Depois ative o X e
    use o <BF/xmodmap/ para carregar o mapa <TT/xmodmap.diacrd/.
</ITEMIZE>

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
<TT>/etc/rc.d/rc.local</TT> (Slackware).
<QUOTE>
    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.
</QUOTE>
Mais informações sobre o diacrd podem ser encontradas no ``Dead keys
Mini-HOWTO'' de Claudemir Todo Bom, disponível em <URL
URL="http://linux.unicamp.br/docs/diversos/deadkeys.html">.

</SECT2>

<SECT2>Comparação entre as duas soluções
<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.

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

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.

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.

O diacrd só funciona no teclado do próprio computador. Se quisermos usar um
<EM/display/ 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/, deixando a cargo da
aplicação a definição de <EM/políticas/. Exemplo da vantagem deste paradigma é
poder usar as técnicas descritas na seção <REF ID="CONF-X" name="Configuração
do X"> em outros sistemas operativos e com terminais X.

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
<HTMLURL URL="http://www.kde.org/" NAME="KDE">, <HTMLURL
URL="http://www.gnome.org/" NAME="GNOME"> e <HTMLURL
URL="http://www.gnustep.org/" NAME="GNUStep">, podemos supor que em breve
nenhum desses remendos será mais necessário.

</SECT2>

</SECT1>

</SECT>

<SECT>Configuração dos vários programas 
<P>
<SECT1>Aplicativos
<P>
A maioria das aplicações que rodam no Unix usa algum tipo de arquivo de
configuração que o usuário coloca em seu diretório de trabalho (home) e
cujo nome normalmente é <TT/.alguma-coisarc/. Tanto quanto possível,
tentei evitar que isso fosse necessário, pois além de dar mais trabalho ao
usuário (e ao administrador da rede ;-) pode dificultar um pouco as
coisas. Por exemplo, aqui no CPMet temos o diretório <EM/home/
compartilhado entre um servidor Alpha rodando DEC UNIX com os PCs rodando
Linux via NFS (até a maior parte do Linux está instalada no Alpha, os
PCs só têm a partição raiz e uma área de swap). Os arquivos podem
necessitar algum ajuste dependendo da plataforma e nem todos os programas
possuem flexibilidade bastante para isso.

Uma opção que muitos programas também oferecem é especificar em uma
variável de ambiente o nome do arquivo de configuração ou o uso de
arquivos padrão que normalmente ficam em um diretório
<TT>/usr/lib/alguma-coisa</TT> ou <TT>/etc/alguma-coisa</TT>. 

<SECT2>Bash (biblioteca GNU readline)
<P>
Os programas que utilizam a biblioteca GNU readline para ler a linha
de comando procuram por um arquivo chamado <TT/.inputrc/ no diretório ``HOME''
do usuário caso não exista uma variável de ambiente <TT/INPUTRC/ contendo o
caminho para um arquivo de configuração.

Coloque uma linha no seu arquivo <TT>/etc/profile</TT> contendo
<VERB>
    INPUTRC="/etc/inputrc"
    export INPUTRC
</VERB>
e crie um arquivo /etc/inputrc contendo
<VERB>
    set meta-flag on
    set convert-meta off
    set output-meta on
</VERB>
Outra alternativa é criar um arquivo <TT/.inputrc/ no diretório <EM/home/
do usuário com o conteúdo acima, mas é muito difícil manter atualizados
os arquivos de todos os usuários, principalmente quando eles são muitos.
Um <TT/inputrc/ mais completo pode ser obtido via WWW na página do
Portuguese HOWTO. Ele contém opções para vários tipos de terminal e permite
usar as teclas de movimento de cursor para percorrer o histórico de
comandos (setas para cima e para baixo); ir para o primeiro e para o último
comandos do histórico (teclas PageUp e PageDown); posicionar o cursor na linha
(setas para a esquerda e direita) e posicionar o cursor no início e no fim da
linha (teclas Home e End).

Para maiores informações leia os manuais do <BF/bash/ e da biblioteca
<BF/readline/ com os comandos
<VERB>
    man bash
    man readline
</VERB>

<SECT2>Emacs
<P>
O pai de todos os editores pode ser configurado criando-se um arquivo
chamado <TT/.emacs/ no diretório do usuário, contendo as seguintes linhas: 
<VERB>
    (set-input-mode nil nil 1)
    (standard-display-european t)
    (require 'iso-syntax)
</VERB>

Para tornar esta configuração global, na distribuição Slackware coloque os
comandos no arquivo <TT>/usr/lib/emacs/site-lisp/site-start.el</TT>. Na
distribuição Debian o emacs executa todos os scripts contidos no diretório
<TT>/etc/emacs/site-start.d</TT> ao ser carregado. Tudo que se tem a fazer
é colocar esses comandos em um arquivo chamado, por exemplo,
<TT/01portugues-emacs.el/.

Se o estimado leitor, assim como eu, não se agrada do tratamento dado pelo
Emacs às teclas de <EM/Delete/, <EM/Home/ e <EM/End/, aproveite a oportunidade
e acrescente ao mesmo arquivo o seguinte:
<VERB>
    (global-unset-key &lsqb;backspace&rsqb; )
    (global-set-key &lsqb;backspace&rsqb; 'delete-backward-char)
    (global-unset-key &lsqb;delete&rsqb; )
    (global-set-key &lsqb;delete&rsqb; 'delete-char)
    (define-key global-map &lsqb;home&rsqb; 'beginning-of-line)
    (define-key global-map &lsqb;C-home&rsqb; 'beginning-of-buffer)
    (define-key global-map &lsqb;end&rsqb; 'end-of-line)
    (define-key global-map &lsqb;C-end&rsqb; 'end-of-buffer)
</VERB>

Arquivos de configuração prontos podem ser obtidos via WWW na página do
Portuguese HOWTO. Para Slackware, há um <TT/site-start-emacs.el/, que deve
ser copiado para o diretório <TT>/usr/lib/emacs/site-lisp</TT> com o nome
de <TT/site-start.el/. Para Debian, há um <TT/01portugues-emacs.el/ que
deve ser copiado para o diretório <TT>/etc/emacs/site-start.d</TT>.

Certifique-se de estar usando a versão 24-out-1998 ou mais recente do arquivo
de mapa de teclado para o X, pois ela possui uma correção no tratamento das
teclas modificadoras Alt e Meta, que são muito usadas pelo Emacs.

<SECT2>flex
<P>
Especifique a opção <BF/-8/ se o <EM/parser/ a gerar necessitar de ler
dados de 8 bit. 

<SECT2>Fortune
<P>
Fortune é aquele programa que toda vez que é invocado apresenta uma
pequena mensagem, geralmente bem humorada. Ele é inspirado nos biscoitos
da fortuna chineses (em inglês <EM/fortune cookies/, daí o nome).
Eis algumas mensagens típicas:
<VERB>
    dROGA!!oNDE ESTA O cAPSLOCK??

    Mouse não encontrado, bater no gato? (S/N)

    Que fio é ess<=V++088.../NO CARRIER

    Quem ri por último está conectado a 2400Bit/s.
</VERB>
Tudo que o programa faz é escolher aleatoriamente uma mensagem em um
repositório mantido no diretório <TT>/usr/games/fortunes</TT> (Slackware)
ou <TT>/usr/share/games/fortunes</TT> (Debian). Neste diretório existem
diversos arquivos com as ``fortunas'' e um arquivo índice para cada um deles,
que possui a extensão <TT/.dat/. O formato dos arquivos é muito simples:
cada fortuna é composta de uma série de linhas de texto. As fortunas são
separadas umas das outras por linhas contendo apenas um caracter <BF/%/. Veja
o trecho a seguir:
<VERB>
    O que são quatro pontos na parede? Four migas. Ugh!
    %
    Errar é humano, botar a culpa no computador é mais humano ainda.
    %
    Aí ela me disse: Ou eu ou o modem! Sinto muitas saudades dela...
</VERB>
Tudo que temos a fazer é criar um arquivo com as fortunas chamado, digamos
<TT/fortunes/ com o formato descrito acima. Depois basta usar o programa
<TT/strfile/ para gerar o índice:
<VERB>
    strfile fortunes
</VERB>
e um arquivo chamado <TT/fortunes.dat/ será criado. Claro que se quisermos
que o fortune mostre apenas mensagens em Português, teremos que remover os
arquivos existentes no diretório original. Sugiro simplesmente renomeá-lo para
<TT/fortunes-en/ (de <EM/En/glish) e criar outro vazio.  Eu coletei algumas
fortunas e as coloquei no arquivo <TT/fortunes-pt.tar.gz/ que pode ser
obtido via WWW na página do Portuguese HOWTO. Não esqueça de colocar no seu
/etc/profile algumas linhas contendo uma chamada ao fortune, por exemplo
<VERB>
    if &lsqb; -x /usr/games/fortune -a ! -e $HOME/.hushlogin &rsqb;; then
       echo
       /usr/games/fortune
       echo
    fi
</VERB>
Uma última informação: se o nome de um arquivo termina com o sufixo
<TT/-o/ o fortune só o consulta se for chamado com a opção
<TT/-o/. Esses arquivos são os que contém mensagens cujo conteúdo pode
ser considerado ofensivo por algumas pessoas, tais como
<VERB>
    Só não mando a sogra pro inferno, com pena do Diabo.
</VERB>
Claro que existem coisas muito mais ofensivas por aí, mas este é um
Linux HOWTO e não queremos realmente ofender ninguém, certo?

<SECT2>Ispell
<P>
Dicionários para o Português de Portugal podem ser obtidos via WWW
na página do <EM/Projecto Natura/ em
<URL URL="http://www.di.uminho.pt/~jj/pln/pln.html">. Para o Brasil, há
uma versão compilada pelo Ueda:
<URL URL="http://www.ime.usp.br/~ueda/">.

<QUOTE>Eu gostaria de poder
colocar maiores informações, mas ainda não tenho conhecimento suficiente
sobre o Ispell e não posso ensinar o que não sei. Preciso de ajuda
aqui.</QUOTE>

<SECT2>JDK (inclui ICQJava)
<P>
<QUOTE>
Esta informação é baseada em uma mensagem da qual guardei o conteúdo mas não o
remetente. Peço desculpas e espero que perdoe a falha. Não testei pessoalmente
a informação e peço que me escrevam confirmando tanto a correção quanto, se
possível, a identidade do autor.
</QUOTE>

O JDK utiliza fontes padrão que não suportam acentos. Isto quer dizer que
letras com acentos são ignoradas e, geralmente, confundem o resto do texto.
Resolver isto é extremamente fácil:
<ITEMIZE>
<ITEM>entre no diretório <TT>jdk1.1.5/lib</TT> (no meu caso,
    <TT>/jdk1.1.5/lib</TT>);
<ITEM>copie o arquivo <TT/font.properties.hu/ sobrescrevendo o
    <TT/font.properties/ atual (lembre-se de fazer backups!);
<ITEM>entre no jdk e divirta-se! Fazendo isto, seu ICQ e todos os
    aplicativos que usem o jdk estarão aptos a lerem acentos! (fácil, não?)
</ITEMIZE>

<SECT2>Joe
<P>
Invoque o joe com a opção <TT/-asis/ na linha de comando ou altere os
arquivos de configuração para ativar tal opção. Na Slackware eles estão no
diretório <TT>/usr/lib/joe</TT>. Tudo que se tem a fazer é remover o
espaço em branco existente no início de cada linha. Outra alternativa é
acrescentar a seguinte linha ao arquivo <TT>/etc/profile</TT>:
<VERB>
    alias joe='joe -asis'
</VERB>

Joe pode emular os editores Pico, emacs e WordStar. Um arquivo <EM/joerc/ está
disponível via WWW na página do Portuguese HOWTO, contendo configurações que
permitem usar as teclas <EM/Home/ e <EM/End/ para movimentar o cursor para o
início e fim da linha.

<SECT2>Less
<P>
Coloque as seguintes linhas no seu arquivo <TT>/etc/profile</TT>: 
<VERB>
    LESS="-MM -i"
    LESSCHARSET="latin1"
    LESSKEY="/etc/lesskey"
    LESSOPEN='|lesspipe.sh "%s"'
    export LESS LESSCHARSET LESSKEY LESSOPEN
</VERB>
LESSKEY informa o nome de um arquivo contendo uma tabela de seqüências de
caracteres geradas por cada tecla e as ações a serem tomadas pelo less.  Para
criar o arquivo <TT>/etc/lesskey</TT>, crie primeiro o arquivo
<TT>/etc/lesskey.in</TT> contendo as seguintes linhas: 
<VERB>
    # Termianl ANSI (console do Linux, XTerm, etc)
    \e&lsqb;1~	goto-line
    \e&lsqb;4~	goto-end
    \e&lsqb;5~	back-screen
    \e&lsqb;6~	forw-screen
    \e&lsqb;7~	goto-line
    \e&lsqb;8~	goto-end
    \e&lsqb;A	back-line
    \e&lsqb;B	forw-line
    # XTerm
    \eOH	goto-line
    \eOF	goto-end
    \e&lsqb;H	goto-line
    \e&lsqb;F	goto-end
    # Console Sun (testado com teclados Type 4/5)
    \e&lsqb;214z	goto-line
    \e&lsqb;220z	goto-end
    \e&lsqb;216z	back-screen
    \e&lsqb;222z	forw-screen
    # Arquivo seguinte/anterior
    :n	next-file
    :N	next-file
    :p	prev-file
</VERB>
Depois ``compile-o'' usando o comando
<VERB>
    # lesskey -o /etc/lesskey /etc/lesskey.in
</VERB>
Crie o arquivo <TT>/usr/bin/lesspipe.sh</TT> contendo
<VERB>
    #!/bin/sh
    # This is a preprocessor for 'less'.  It is used when this environment
    # variable is set:   LESSOPEN="|lesspipe.sh %s"

    case "$1" in
      *.rpm) rpm -qilp "$1" 2>/dev/null ;;
      *.tar) tar tvvf "$1" 2>/dev/null ;;
      *.tgz | *.tar.gz | *.taz | *.tar.Z | *.tar.z)
	tar tzvvf "$1" 2>/dev/null ;;
      *.tbz2 | *.tar.bz2)
	bzip2 -dc "$1" | tar tvvf - 2>/dev/null ;;
      *.Z) gzip -dc "$1"  2>/dev/null ;;
      *.z) gzip -dc "$1"  2>/dev/null ;;
      *.&lsqb;1-9&rsqb;.gz | *.n.gz | *.man.gz)
	FILE=`file -Lz "$1" | cut -d ' ' -f 2`
	if &lsqb; "$FILE" = "troff" &rsqb;; then
	  gzip -dc "$1" | groff -s -p -t -e -Tlatin1 -mandoc
	fi ;;
      *.gz) gzip -dc "$1"  2>/dev/null ;;
      *.zip) unzip -l "$1" 2>/dev/null ;;
      *.&lsqb;1-9&rsqb; | *.n | *.man)
	FILE=`file -L "$1" | cut -d ' ' -f 2`
	if &lsqb; "$FILE" = "troff" &rsqb;; then
	  groff -s -p -t -e -Tlatin1 -mandoc "$1"
	fi ;;
    esac
</VERB>
Não esqueça de torná-lo executável:
<VERB>
    chmod 755 /usr/bin/lesspipe.sh
</VERB>

Na distribuição Debian já existe um script <TT>/usr/bin/lesspipe</TT>
(note a ausência da extensão <TT/.sh/). Para os curiosos a
respeito da referência a ``*.rpm'', embora na máquina em questão se use
Slackware, é possível ter o utilitário RPM instalado também, o que facilita
tomar ``emprestados'' pacotes do Red Hat, Caldera e S.u.S.E.. Existe um
<EM/RPM+Slackware Mini-HOWTO/ que explica como fazer isso.

<SECT2>ls
<P>
Acrescente a seguinte linha ao arquivo <TT>/etc/profile</TT> :
<VERB>
    alias ls="ls -N"
</VERB>
ou
<VERB>
    alias ls="ls -b"
</VERB>
Se a sua distribuição de Linux usa o GNU ls (todas as que eu conheço usam)
basta acrescentar ao arquivo <TT>/etc/profile</TT> ou <TT/.profile/ as
seguintes linhas:
<VERB>
    # -----------------------------------------
    # Set up the color-ls environment variables
    # -----------------------------------------
    if &lsqb;   "$SHELL" = "/bin/bash" -o \
	   "$SHELL" = "/bin/sh" &rsqb;; then
       eval `dircolors -b`
    elif &lsqb; "$SHELL" = "/bin/zsh" &rsqb;; then
       eval `dircolors -z`
    elif &lsqb; "$SHELL" = "/bin/ash" &rsqb;; then
       eval `dircolors -s`
    elif &lsqb; "$SHELL" = "/bin/ksh" -o \
	   "$SHELL" = "/bin/pdksh" &rsqb;; then
       eval `dircolors -k`
    elif &lsqb; "$SHELL" = "/bin/csh" -o \
	   "$SHELL" = "/bin/tcsh" &rsqb;; then
       eval `dircolors -c`
    else
       eval `dircolors -b`
    fi
</VERB>
Se o seu shell é o csh ou tcsh, acrescente a seguinte linha ao arquivo
<TT>/etc/csh.login</TT> ou <TT>~/.login</TT>:
<VERB>
    alias ls 'ls --color'
</VERB>

<SECT2>LyX<LABEL ID="SEC:LYX">
<P>
Para aqueles que acham trabalhoso escrever documentos para o LaTeX usando um
simples editor de texto (e realmente é) LyX é uma excelente opção.  Este
programa cria uma interface gráfica através da qual editamos os documentos que
serão depois formatados pelo LaTeX. O ambiente é quase-WYSIWYG (What You See
Is What You Get - O que tu vês é o que tu obténs). LyX não roda apenas em
Linux, mas em qualquer Unix. Maiores informações podem ser obtidas em

<QUOTE><URL URL="http://www.lyx.org"></QUOTE>

A partir da versão 1.0.1 do LyX já tem a interface com o usuário em Português,
traduzida por Pedro Kröger, que também está traduzindo os manuais, junto
com Roberto Mello. Estas traduções já fazem parte da
distribuição oficial do LyX.

Tendo o LyX instalado, é muito fácil criar documentos com acentuação em
Português. Seguindo as seguintes regras:

<ITEMIZE>
<ITEM>Se o teclado foi configurado para ter <EM/dead keys/ usando um dos
      mapas aqui fornecidos, não é necessário fazer mais nada. Basta digitar o
      texto normalmente usando as seqüências de acentuação. A única exceção é
      o c-cedilha que não pode ser gerado usando a seqüência <TT/'c/, pois o
      LyX gera um c com acento. Temos que usar a seqüência Compose-vírgula-c.
<ITEM>Se o teclado <BF/não/ foi configurado para ter <EM/dead keys/ ainda
      assim é possível acentuar no LyX. Selecione o <EM/menu/
      <TT>Options/Keyboard</TT>. Na caixa de diálogo ``Key Mappings'',
      selecione no ítem <TT>Language/Primary</TT> a opção ``American''.
      Com isto o LyX fará a composição dos caracteres acentuados usando regras
      semelhantes às das <EM/dead keys/.
      <ITEMIZE>
      <ITEM>A vírgula será tratada como cedilha. Para obter um `Ç'digite
	    <TT/,C/ e para obter uma vírgula digite <TT/,,/. Cuidado! A
	    seqüência <TT/,/&lt;espaço&gt; gerará uma cedilha isolada e
	    não uma vírgula!
      <ITEM><TT/&tilde; ^ ' e `/ serão tratados como acentos. Vale a mesma
	    regra anterior: para obter apenas o acento, pressione a tecla duas
	    vezes consecutivas. 
      <ITEM><TT>: ; . / ?</TT> e <TT/-/ também serão tratados como
	    acentos. <TT/?a/ gerará um `&aring;' e assim por diante.
      </ITEMIZE>
</ITEMIZE>

Para o LyX imprimir corretamente, é necessário que, ao criar um novo
documento, sejam selecionados a língua e a codificação de caracteres
adequadas. Crie um documento selecionando o <EM/menu/ <TT>File/New</TT>.
Depois selecione o <EM/menu/ <TT>Layout/Document</TT>. Na caixa de diálogo
``Document Layout'' selecione no ítem <TT/Language/ a opção ``brazil'' ou
``portuges'' (sem o <EM/u/ mesmo); no ítem <TT/Encoding/ selecione
``latin1''.

Veja a observação sobre o pacote <EM/algorithm/ na seção~<REF ID="SEC:LATEX"
name="TeX e LaTeX">

Uma observação final sobre o LyX: a versão atual (1.0.x) utiliza a biblioteca
XForms para construir a interface com o usuário. Como essa biblioteca não tem
suporte para acentuação, não é possível digitar letras acentuadas nas caixas
de diálogo, somente no corpo do documento editado. Segundo os desenvolvedores,
nas novas versões do LyX será possível escolher o tipo de interface ao
compilar o programa, o que permitirá o uso de <EM/toolkits/ mais flexíveis. Já
existe uma versão de LyX portada para o toolkit Qt, usado no KDE, chamada
KLyX. Os autores são Matthias Ettrich -- autor original do LyX -- e Kalle
Dalheimer. Para maiores informações, consulte via WWW: <URL
URL="http://www-pu.informatik.uni-tuebingen.de/users/ettrich/">.

<SECT2>Man, groff, troff<LABEL ID="SEC:MAN">
<P>
Pode-se usar a opção de linha de comando <TT/-Tlatin1/ para o groff,
mas é mais simples colocar uma linha no seu arquivo <TT>/etc/profile</TT>
contendo
<VERB>
    GROFF_TYPESETTER="latin1" 
    export GROFF_TYPESETTER
</VERB>
Para maiores informações leia o manual do groff com o comando
<VERB>
    man groff
</VERB>

No Linux, o comando <EM/man/ usa o <EM/groff/ para formatar os manuais e deve
ser configurado para usar o conjunto Latin 1, ou não será possível formatar
satisfatoriamente manuais que contenham caracteres não pertencentes ao
conjunto ASCII, como é o caso do ``man iso_8859_1''. Na distribuição
Slackware, é preciso editar o arquivo <TT>/usr/lib/man.config</TT> e
alterar as definições NROFF e NEQN, trocando a opção ``-Tascii'' para
``-Tlatin1'':
<VERB>
    NROFF           /usr/bin/groff -Tlatin1 -mandoc
    NEQN            /usr/bin/geqn -Tlatin1
</VERB>
ou, se usarmos a variável de ambiente GROFF_TYPESETTER, podemos simplesmente
eliminar a opção -Tascii. Na distribuição Debian não é necessário fazer
nenhuma configuração para o man, bastando configurar GROFF_TYPESETTER e na
Red Hat (incluindo Conectiva) o arquivo é <TT>/etc/man.config</TT>

Groff também pode ser configurado para fazer a separação silábica em
português, o que é muito útil se tivermos páginas de manual em Português. Isto
é bastante simples, porque quando James Clarck pôs suporte a hifenização no
groff ele usou o mesmo algoritmo de hifenização do TeX. Para ter hifenização
em português, basta copiar o arquivo de regras do TeX e fazer o <TT/groff/
usá-lo. O arquivo <TT/hyphen.pt/ pode ser obtido junto com os demais na página
do HOWTO. Trata-se do arquivo <TT/pt8hyph.tex/ (ver seção <REF ID="SEC:LATEX"
name="TeX e LaTeX">) ao qual foi adicionado apenas um comentário.

Ele deve ser copiado para o diretório
<TT>/usr/share/groff/tmac/</TT> ou <TT>/usr/lib/groff/tmac/</TT>,
dependendo da distribuição. É conveniente criar um ``link'' simbólico para
<TT/hyphen.br/. Para usar esse arquivo, basta colocar no início do seu
documento troff/groff as linhas a seguir:
<VERB>
    .if \n(.g \&lcub;\
    .hla pt
    .hpf hyphen.pt
    .\&rcub;
</VERB>
O <TT/.if/ não é necessário para a acentuação, mas ele testa se o
processador usado é o groff. Deste modo pode-se usar o mesmo documento em
outros UNIX nos quais se use o troff normal sem que ele gere mensagens de erro
sobre comandos desconhecidos.

<SECT2>Midnight Comander (mc)
<P>
No menu <TT/Options/ sub-menu <TT/Display bits.../ ligue a opção
``Full 8 bits'' ou ``ISO 8859-1''. Na versão 3.2.11 isso permite
que sejam mostrados nomes de arquivos contendo caracteres acentuados, mas
não foi possível digitar tais caracteres na linha de comando ou nas caixas
de diálogo.

<SECT2>Minicom
<P>
Coloque uma linha no seu arquivo <TT>/etc/profile</TT> contendo
<VERB>
    MINICOM="-m -c on" 
    export MINICOM
</VERB>
Isso permitirá usar a tecla Alt para ativar os comandos (exatamente como o
Telix) e também usar cores. Para maiores informações, leia o manual do
Minicom usando o comando
<VERB>
    man minicom
</VERB>
Mais uma dica sobre o Minicom: para fazê-lo usar usar corretamante a tecla
<EM/Meta/ para ativação dos comandos rodando dentro de um <EM/xterm/, deve-se
invocá-lo com a opção ``-m'' e passar a opção ``-xrm "*eightBitInput: false"''
para o xterm. Se usarmos o <EM/rxvt/ então o minicom deve ser chamado com a
opção ``-m'' e a tecla de ativação dos comandos será <EM/Alt/. Fiz uma
adaptação no script <TT/xminicom/ que pode ser obtido via WWW na página do
Portuguese HOWTO.

Segundo Arnaldo Carvalho de Melo, as versões mais recentes do Minicom suportam
internacionalização. Suporte para o Português foi acrescentado pelo pessoal da
Conectiva. O código fonte pode ser obtido na página do Jukka (atual mantenedor
do Minicom) em
<QUOTE>
   <URL URL="http://www.clinet.fi/~walker/minicom.html">
</QUOTE>

<SECT2>Netscape Communicator
<P>
O Communicator, assim como muitas aplicações que utilizam <EM/toolkits/
baseados no X Toolkit (Xt), permite que se modifiquem muitas de suas
características por meio de arquivos de configuração (X Resources). No caso
específico do Communicator, pode-se criar um arquivo chamado <TT/Netscape/
no diretório <TT>/usr/X11R6/lib/X11/app-defaults</TT> contendo estas
opções.

Na distribuição brasileira Conectiva, o pacote do Communicator vem com um
arquivo <TT>/usr/lib/netscape/i18n/Netscape.ad.pt_BR</TT> e um script
<TT>/usr/bin/netscape</TT> que executa o Communicator fazendo-o ler este
arquivo. Uma cópia do <TT/Netscape.ad.pt_BR/ pode ser obtida na página
oficial do Portuguese-HOWTO. Para usá-lo, simplesmente copie-o para
<TT>/usr/X11R6/lib/X11/app-defaults/Netscape</TT>, se sua distribuição não
o possuir, mas fique atento que seu uso pode criar problemas com novas versões
do programa.

Maiores informações sobre ``X Resources'' podem ser obtidas em [GET94],
[McC94] e no manual do programa <TT/xrdb/, com o comando

<VERB>
    man xrdb
</VERB>

<SECT2>nn
<P>
<QUOTE>
    Alô, alô, alguém usa nn? Informação mais atualizada será bem recebida.
</QUOTE>
Acrescente a seguinte linha ao arquivo <TT>~/.nn/init</TT>:
<VERB>
    set data-bits 8
</VERB>

<SECT2>Pine e Pico
<P>
Para o Pine utilizar o conjunto de caracteres Latin 1, coloque uma linha
no arquivo .pinerc, no diretório do usuário, contendo
<VERB>
    character-set=ISO-8859-1
</VERB>
ou crie um arquivo geral de configuração contendo tal linha. Esse arquivo
normalmente é <TT>/usr/local/lib/pine.conf</TT> ou
<TT>/usr/lib/pine.conf</TT>

A configuração também pode ser feita usando o próprio programa. No <EM/menu/
de entrada selecione as opções Setup/Configuration. Vá até o ítem
``character-set'' e preencha-o com ``ISO-8859-1''. Para maiores informações
leia o manual do pine com o comando
<VERB>
    man pine
</VERB>

<SECT2>tcsh
<P>
Nenhuma medida especial é necessária se for feita a correta configuração das
variáveis de ambiente ``LANG'' e ``LC_ALL'', conforme mostrado mostrado na
seção~<REF ID="SEC:LIBC" name="Biblioteca libc">.

Tcsh tem suporte a internacionalização e na distribuição Debian há um pacote
chamado tcsh-i18n com suporte para French, German, Greek and Spanish.

<SECT2>TeX e LaTeX<LABEL ID="SEC:LATEX">
<P>
<QUOTE>
Esta seção foi escrita com ajuda de Klaus Steding-Jessen.
</QUOTE>

<SECT3>O pacote Babel
<P>
O pacote <EM/Babel/, criado por Johannes Braams provê suporte a um grande
número de idiomas para o LaTeX. De acordo com o idioma selecionado ele define
muitas coisa como, por exemplo, os títulos dos capítulos (Chapter, Capítulo,
Kapitel) e o título das tabelas (Tabela, Table, Tabelle). Para usar o pacote,
basta incluir no preâmbulo de seu documento LaTeX o comando

<VERB>
    \usepackage&lsqb;portuges&rsqb;&lcub;babel&rcub;

    ou

    \usepackage&lsqb;brazil&rsqb;&lcub;babel&rcub;
</VERB>

Há diferenças sutis entre o Portugues do Brasil e o de Portugal, tais como
as normas para escrita de datas e nomes de meses com a primeira letra
maiúscula ou minúscula.

Pode-se misturar mais de um idioma no mesmo documento. Para Alemão e
Português ficaria:

<VERB>
    \usepackage&lsqb;german,brazil&rsqb;&lcub;babel&rcub;
</VERB>

Nesse caso a última opção (brazil) fica sendo o idioma corrente. Para
mudar ao longo do texto, entre um e outro, use:

<VERB>
    \selectlanguage&lcub;german&rcub;

    &lsqb;...&rsqb;

    \selectlanguage&lcub;brazil&rcub;
</VERB>

Isto é muito útil também quando queremos que uma palavra não seja separada.
Basta definir um novo idioma e usá-lo nas palavras que não podem ser
separadas. Coloque no preâmbulo:

<VERB>
    \newlanguage\nohyphen
    \newcommand\nh&lsqb;1&rsqb;&lcub;&lcub;\language\nohyphen #1&rcub;&rcub;
</VERB>

E use com \nh&lcub;FOO BAR&rcub;. É melhor do que usar <TT/\mbox/, que
impede quebra no espaco em <TT/\mbox&lcub;FOO BAR&rcub;/.

<SECT3>Separação silábica
<P>
Normalmente apenas os suportes a separação silábica para Inglês e Alemão são
carregados.  Para configurar hifenização no <BF/teTeX/, execute o utilitário
<EM/texconfig/, que na distribuição Slackware deve ser o programa
<TT>/usr/lib/teTeX/bin/texconfig</TT> e na Debian é
<TT>/usr/bin/texconfig</TT>.  Digite o comando

<VERB>
    texconfig hyphen
</VERB>

O editor usado normalmente é o <BF/vi/. Se o seu editor predileto for
outro, crie uma variável de ambiente chamada <BF/EDITOR/ contendo o nome desse
programa, como no exemplo a seguir:

<VERB>
    EDITOR=pico
    export EDITOR
</VERB>

O editor de texto será carregado, para editar o arquivo
<TT>language.dat</TT>. Procure uma linha que começa por <BF/%portuges/ e
remova o <BF/%/. Grave o arquivo e saia do editor. O texconfig atualizará
diversos arquivos de configuração (não se assuste com a quantidade de
mensagens que aparecem na tela).

Se o nome da tabela de hifenização que consta no seu <TT>language.dat</TT>
é <TT>pthyph.tex</TT> então provavelmente trata-se da versão 1.0, de
1987. A versão 1.2, de 1996, pode ser obtida via FTP anônimo em
<QUOTE>
<URL URL="ftp://ftp.tex.ac.uk/tex-archive/language/portuguese/pt8hyph.tex">
</QUOTE>
Copie-o para o mesmo diretório onde se encontra o <TT/pthyph.tex/, que
dependendo de sua distribuição pode ser
<TT>/usr/lib/texmf/tex/generic/hyphen</TT>
<TT>/usr/share/texmf/tex/generic/hyphen</TT> ou
<TT>/usr/lib/teTeX/texmf/tex/generic/hyphen</TT>. Execute o comando
<TT/texconfig~hash/ e na mesma linha mencionada anteriormente insira um `8'
no nome do arquivo, de modo que fique <TT/pt8hyph.tex/.

<SECT3>Uso de Font Encoding T1
<P>
Se o conjunto de caracteres (<EM/encoding/) de uma fonte não provê acesso
direto a caracteres acentuados, (como é o caso do OT1, padrão do LaTeX) então
o TeX gera estes caracteres sobrepondo o caracter base mais o acento. O
algoritmo de hifenização, contudo, não hifeniza palavras formadas dessa forma.

Se uma fonte já provê acesso direto a caracteres acentuados, como as de
codificação T1, estes caracteres são usados diretamente sem prejuízo do
algoritmo de hifenização.  O uso de <EM/encoding/ T1 é fundamental para a
correta hifenização em Português.

Note que trata-se da mesma fonte, por falta a Computer Modern, apenas o que
muda é o seu <EM/encoding/, isto é, a ordem/disponibilidade dos caracteres
dentro da mesma. Para selecionar estas fontes, inclua no preâmbulo do seu
documento o comando

<VERB>
    \usepackage&lsqb;T1&rsqb;&lcub;fontenc&rcub;
</VERB>

O antigo pacote <TT/t1enc/ não deve mais ser usado e existe hoje apenas por
questões de compatibilidade com documentos antigos. O <TT/fontenc/ é mais
atual, continua a ser mantido e é de uso mais geral, portanto preferível.

<SECT3>Edição de documentos
<P>
Normalmente a introdução de caracteres acentuados no texto exige o uso
de <EM/seqüências de escape/ bastante trabalhosas. Para gerar um ``ö''
deve-se digitar \"o. Com <EM/babel/ pode-se digitar apenas "o, o que não
deixa de ser inconveniente para ler o fonte do documento. Há um pacote chamado
<BF/inputenc/ que permite especificar a codificação em que estão os
caracteres de um documento. Lembre-se porém que se o seu documento for
enviado para outro usuário que não possua o <BF/inputenc/ ele poderá não
conseguir processá-lo, mas esse recurso já está disponível desde a
liberação do LaTeX2e em dezembro 1994. Todas as distribuições de Linux
atuais o incluem.

Sugestão: uma configuração do GNU Emacs para gerar caracteres
acentuados, própria para o uso com o pacote inputenc:

<VERB>
    (add-hook 'LaTeX-mode-hook
	      (lambda ()
		(standard-display-european 1)
		(load-library "iso-acc")
		(iso-accents-mode 1)
		(iso-accents-customize "portuguese")
		(auto-fill-mode 1)
		))
</VERB>

E outra que não requer o inputenc.  O uso da biblioteca `iso-cvt' faz a
transformação de ISO-8859-1 (no buffer do Emacs) para o padrão do LaTeX (no
arquivo).

<VERB>
    (add-hook 'LaTeX-mode-hook
	      (lambda ()
		(standard-display-european 1)
		(load-library "iso-cvt")
		(load-library "iso-acc")
		(iso-accents-mode 1)
		(iso-accents-customize "portuguese")
		(auto-fill-mode 1)
		))
</VERB>

Muitas vezes o usuario já possui muitos arquivos num formato de acento do
LaTeX e gostaria de passar tudo para o formato ISO, próprio para uso do pacote
inputenc. Uma boa opção para isto é usar o programa <TT/recode/. Se você
possui arquivos .tex e deseja converte-lo para formato ISO-8859-1 pode usar:

<VERB>
    recode -d LaTeX:l1 file.tex
</VERB>

O código-fonte do GNU recode pode ser obtido via FTP anônimo em <URL
URL="ftp://prep.ai.mit.edu/pub/gnu/recode/recode-3.4.tar.gz"> e em muitos
espelhos do GNU mundo afora. A distribuição Debian tem um pacote pronto e
outras também devem ter.

<SECT3>Teste da configuração do LaTeX
<P>
Para testar a nova configuração copie o seguinte trecho para um arquivo
chamado, digamos, <TT/exemplo.tex/:

<VERB>
    \documentclass&lsqb;a4paper&rsqb;&lcub;article&rcub;
    \usepackage&lsqb;latin1&rsqb;&lcub;inputenc&rcub;
    \usepackage&lsqb;T1&rsqb;&lcub;fontenc&rcub;
    \usepackage&lsqb;portuges&rsqb;&lcub;babel&rcub;
    %%
    %% ou \usepackage&lsqb;brazil&rsqb;&lcub;babel&rcub;
    %%

    \begin&lcub;document&rcub;
    \title&lcub;Linux Portuguese-HOWTO&rcub;
    \author&lcub;Carlos Augusto Moreira dos Santos&rcub;
    \date&lcub;\today&rcub;

    \maketitle

    \section&lcub;Introdução&rcub;

    Este documento pretende ser um guia de referência de configuração
    do \textbf&lcub;Linux&rcub; e seus programas, teclados e fontes de
    caracteres, permitindo sua internacionalização/utilização confortável
    por pessoas que falem a Língua Portuguesa.

    \end&lcub;document&rcub;
</VERB>

Esse texto contém de propósito uma ``palavra'' bastante longa para forçar a
separação silábica. Ele está disponível via WWW no arquivo <TT/exemplo.tex/
na página do Portuguese HOWTO. Para processá-lo, use o comando <TT/latex/,
conforme mostrado a seguir:
<VERB>
    bash$ latex exemplo.tex
    This is TeX, Version 3.14159 (C version 6.1)
    (exemplo.tex
    LaTeX2e <1996/06/01>
    Hyphenation patterns for english, german, portuges, loaded.
    (/usr/lib/teTeX/texmf/tex/latex/base/article.cls
    Document Class: article 1996/05/26 v1.3r Standard LaTeX document class
    (/usr/lib/teTeX/texmf/tex/latex/base/size10.clo))
    (/usr/lib/teTeX/texmf/tex/latex/base/inputenc.sty beta test version
    (/usr/lib/teTeX/texmf/tex/latex/base/latin1.def))
    (/usr/lib/teTeX/texmf/tex/latex/base/fontenc.sty
    (/usr/lib/teTeX/texmf/tex/latex/base/T1enc.def))
    (/usr/lib/teTeX/texmf/tex/generic/babel/babel.sty (portuges.ldf
    (/usr/lib/teTeX/texmf/tex/generic/babel/babel.def))) (exemplo.aux) &lsqb;1&rsqb;
    (exemplo.aux) )
    (see the transcript file for additional information)
    Output written on exemplo.dvi (1 page, 812 bytes).
    Transcript written on exemplo.log.
</VERB>
A mensagem ``Hyphenation patterns for english, german, <BF/portuges/,
loaded.'' indica que a configuração foi bem sucedida. Se o seu computador
está rodando o X o documento formatado poderá ser visto com
o comando
<VERB>
    xdvi exemplo.dvi
</VERB>

Observe que o ``<TT/\today/'' gera a data corrente. No ``portugues'' seria
``17 de Julho de 1998'' mas no ``brazil'' seria ``17 de julho de 1998''.

<SECT3>Problemas com alguns pacotes do teTeX
<P>
Há um problema com o pacote <EM/algorithm/ do LaTeX, que não é suportado pelo
babel, fazendo com que a lista de algoritmos saia com o título ``List of
Algorithms'' e o título de cada um deles seja impresso como ``Algorithm #''.
Para evitar esse problema, coloque no preâmbulo de seu documento LaTeX, após o
comando ``<TT/\usepackage&lcub;algorithm&rcub;/'' o seguinte:

<VERB>
    \makeatletter
    \renewcommand&lcub;\ALG@name&rcub;&rcub;&lcub;Algoritmo&rcub;&rcub;
    \makeatother
    \renewcommand&lcub;\listalgorithmname&rcub;&rcub;&lcub;Lista de Algoritmos&rcub;&rcub;
</VERB>

No teTeX 0.4 (versão 1.2h do portuges.ldf) o título do ambiente <EM/proof/,
encontrado nas classes <EM/amsbook/, <EM/amsart/, etc., sai como ``Proof.''.
Para corrigir isso, coloque no preâmbulo de seu documento o comando

<VERB>
    \renewcommand&lcub;\proofname&rcub;&rcub;&lcub;Demonstra\c&lcub;c&rcub;\~ao&rcub;
</VERB>

mas o mais recomendável é que se atualize a versão do teTeX.

Usuários do LyX podem incluir esses comandos no preâmbulo do documento usando
o menu <TT>Layout/LaTeX Preamble</TT>. Pode-se resolver o problema
alterando o arquivo <TT/portuges.ldf/ que contém as definições necessárias
ao Português, mas esta solução não é portável, pois exigirá que tal arquivo
seja alterado em todas os computadores em que o documento deva ser processado.

A licença do Babel não me permite distribuir o <TT/portuges.ldf/ separado do
resto do pacote, mas para os interessados, coloquei à disposição na página do
HOWTO um arquivo chamado <TT/portuges.ldf.patch/ que criei para o meu teTeX
antigo (Slackware 3.4).  Para aplicar a atualização, copie-o para o diretório
<TT>/usr/lib/teTeX/texmf/tex/generic/babel</TT> (Slackware), faça uma
cópia de reserva do <TT/portuges.ldf/ original e invoque o utilitário
<TT/patch/:

<VERB>
    cp -p portuges.ldf portuges.ldf.backup
    patch &lt; portuges.ldf.patch
</VERB>

Use o patch por sua conta e risco! Se você deixar o backup no diretório
original ele será incluído no arquivo <TT/ls-R/ da próxima vez que o
programa <EM/texhash/ for executado.  Isso não fará mal algum, mas pode-se
mover o backup para algum lugar seguro (eu uso <TT>/usr/backup</TT>).

<SECT3>Lista TeX-BR
<P>
Há uma lista de discussão brasileira de usuários de TeX/LaTeX, chamada TeX-BR,
que roda no servidor de listas da FURG. Para entrar da lista mande um mail
contendo apenas a palavra ``subscribe'' no corpo para &lt;<HTMLURL
URL="mailto:tex-br-request@listas.furg.br"
name="tex-br-request@listas.furg.br">&gt;. Esta lista é administrada por Rafael
Rodrigues Obelheiro.

Há uma página na WWW em <URL URL="http://biquinho.furg.br/tex-br/"> por meio
da qual se pode ler o histórico de mensagens. Também há referências para
muitos documentos sobre LaTeX, alguns em Português e outros em Inglês.

<SECT3>LaTeX-demo
<P>
Pode ser útil também um documento de exemplo para ter onde começar.  Pensando
nisso, Klaus Steding-Jessen preparou
um pequeno documento em Português com o objetivo de ser um guia ``by example''
para o usuário de LaTeX iniciante e intermediário, que pode ser obtido via WWW
em <URL URL="http://biquinho.furg.br/doc/LaTeX-demo/">.

Klaus ecreveu também uma série três artigos destinados a ``descrever o sistema
LaTeX como uma alternativa mais eficiente aos processadores de texto WYSIWYG''
que podem ser lidos via WWW em <URL
URL="http://biquinho.furg.br/tex-br/doc/artigo-1-jessen/">.


<SECT2>WordPerfect
<P>
O Corel Wordperfect para Linux versão 8 suporta a acentuação por teclas
mortas. Não é necessário nenhum procedimento especial. Como um entusiasta de
software livre, entretanto, recomendo enfaticamente que se use o <HTMLURL
URL="http://www.lyx.org/" NAME="LyX">, que já foi inclusive traduzido para
nossa língua, conforme mencionado na seção~<REF ID="SEC:LYX" NAME=LyX>.

<SECT2>Xemacs (antigo lucid emacs)
<P>
<QUOTE>
Agradeço a colaboração de Judson Santos Santiago e Goedson Teixeira
Paixão que ajudaram a identificar os problemas com o Xemacs.
</QUOTE>

O <HTMLURL URL="http://www.xemacs.org/" NAME="Xemacs"> já tem suporte à
acentuação direta no teclado usando ``dead keys'', mas há um erro na
configuração original que o impede de reconhecer o acento circunflexo.  Este
problema não ocorre se for usada a biblioteca <EM/Xlib/ aterada por Thomas
Quinot, mencionada na seção~<REF ID="SEC:CONTOR-X" name="Contornando os
limites do X">, mas mesmo que não a usemos, basta colocar os seguintes
comandos no seu arquivo de configuração <TT/.emacs/:
<VERB>
    ;; Ajuste para fazer o acento circunflexo funcionar
    ;; Contribuição de Goedson Teixeira Paixao <gopaixao@dcc.ufmg.br>
    (require 'x-compose)
    (define-key global-map 'dead-circumflex compose-circumflex-map)
</VERB>

Na distribuição Debian 2.0 o Xemacs 20.4 executa todos os scripts contidos no
diretório <TT>/etc/xemacs20/site-start.d</TT> ao ser carregado. Tudo que
se tem a fazer é colocar esses comandos em um arquivo chamado, por exemplo,
<TT/01portugues-xemacs.el/. Não é necessário instalar o <EM/xemacs20-mule/,
que possui extensões para línguas que não usam o alfabeto romano. Os pacotes a
instalar são os seguintes:

<ITEMIZE>
<ITEM>xemacs20-bin
<ITEM>xemacs20-nomule
<ITEM>xemacs20-support
<ITEM>xemacs20-supportel
</ITEMIZE>

Se você instalou o Xemacs no Slackware ou outro Unix, à moda antiga (dowload,
compilação, instação), então o arquivo a alterar é o <TT/site-start.el/, que
deve estar no diretório <TT>/usr/lib/xemacs/site-lisp</TT> ou
<TT>/usr/local/lib/xemacs/site-lisp</TT>, dependendo de sua instalação.

Observe que a partir da versão 20.3 o Xemacs usa uma variável especial para
controlar o comportamento da tecla ``Delete'', não existente nos outros emacs
chamada <BF/delete-key-deletes-forward/. Para ativar este comportamento
coloque no seu arquivo <TT/.emacs/ uma linha contendo

<VERB>
    (setq delete-key-deletes-forward t)
</VERB>

Arquivos de configuração prontos podem ser obtidos via WWW na página do
Portuguese HOWTO. Para Slackware, há um <TT/site-start-xemacs.el/, que deve
ser copiado para o diretório correto com o nome de <TT/site-start.el/. Para
Debian, há um <TT/01portugues-xemacs.el/ que deve ser copiado para o
diretório <TT>/etc/xemacs20/site-start.d</TT>.

Certifique-se de estar usando a versão 24-out-1998 ou mais recente do arquivo
de <REF ID="SEC:FICHEIROS" name="mapa de teclado"> para o X, pois ela possui
uma correção no tratamento das teclas modificadoras Alt e Meta, que são muito
usadas pelo Xemacs.

<!-- Talvez seja útil uma seção sobre toolkits... -->

<SECT1>Rede local e Internet
<P>
<SECT2>FTP (File Transfer Protocol)
<P>
Existem dois modos de transferência de arquivos: <EM/binary/ e <EM/ASCII/,
sendo este  utilizado para textos.  Deve-se tomar cuidado ao transferir um
arquivo, pois o modo de transfêrencia
<TT/ASCII/ remove o oitavo bit de cada caracter transmitido, o que terá como
conseqüência a perda de todos os caracteres acentuados. Desta forma é
aconselhado o envio de documentação em modo <TT/binary/ de forma a manter a
integridade da mesma.

Cuidado! Algumas versões mais antigas do pacote net-tools do Linux têm
um cliente FTP que não reconhece corretamente quando o servidor remoto
roda Unix. Deste modo ele não comutará o modo de transferência para
binário automaticamente. Além disso,
alguns servidores FTP também não fornecem a informação corretamente.
Certifique-se de digitar o comando <TT/bin/ antes de um <TT/get/ quando
quiser que a transferência seja binária!

<SECT2>Correio eletrônico
<P>
O mesmo tipo de restrições do FTP se aplica ao envio de documentos contendo
caracteres acentuados através de correio eletrônico. Embora isto não aconteça
em todos os sistemas em uso na internet, bastará que o correio enviado passe
no seu trajecto por um sistema que não suporte 8 bits de informação para que o
nosso documento seja deturpado. 

Para que não hajam problemas, deve-se utilizar um programa de emeil, que
suporte o formato MIME (Multipurpose Internet Mail Extensions), formato
este que permite o envio de documentação em modo 8 bits.  Exemplos de
programas de correio eletrônico com suporte para MIME, são o Eudora e o
Pine. 

Se o destinatário da mensagem não usa um agente com suporte para MIME,
existe a opção de codificar os documentos com o utilitário UUENCODE. Para
maiores informações a esse respeito, leia a documentação usando os
comandos

<VERB>
    man uuencode
    man uudecode
</VERB>

<SECT>Ficheiros necessários<LABEL ID="SEC:FICHEIROS">
<P>
<BF/Atenção!/ Os mapas de teclado para o X fornecidos mapeiam a função das
teclas segundo a lista a seguir:
<ITEMIZE>
<ITEM>Alt esquerdo: Alt
<ITEM>Alt direito: AltGr
<ITEM>Control esquerdo: Control
<ITEM>Control direito: Control
<ITEM>ScrollLock: ScrollLock
<ITEM>Janela esquerda: Meta
<ITEM>Janela direita: Compose
<ITEM>Menu: Menu
</ITEMIZE>

Se o seu teclado não possuir as teclas <EM/para Windows 95/ então pode ser
melhor restabelecer a distribuição padrão: edite o mapa e coloque um ponto de
exclamação no início das linhas que definem os <EM/keycodes/ 64, 113, 115, 116
e 117.

Foram elaborados mapas com suporte à acentuação para seis modelos de teclado,
tanto para uso no console quanto para o X. Eles podem ser obtidos via WWW em
um dos repositórios da página do Portuguese HOWTO:

<ITEMIZE>
<ITEM><URL URL="http://linusp.usp.br/~casantos/">
</ITEMIZE>

Ao instalar um dos mapas fornecidos, lembre-se de ler os comentários
contidos neles, pois há informações importantes sobre opções de configuração
e aproveitamento das teclas adicionais dos teclados padrão <EM/Windows~95/.
As instruções para instalação estão nas seções <REF ID="CONF-CONS"
name="Configuração do console"> e <REF ID="CONF-X" name="Configuração do
X">.

<DESCRIP>

<TAG/O mapa US+ (us+.map e Xmodmap.us+)/

Mapas para os teclados que seguem o padrão americano. Como não existem teclas
especiais para gerar o c-cedilhado nem o trema, foi usado um pequeno truque: o
c-cedilhado é gerado pela seqüência <TT/'C/.  No console pode-se fazê-lo com
a seqüência <TT/AltGR-C/.  O trema é gerado pela tecla <TT/&dquot;/. Para
gerar as aspas duplas é necessário digitar a seqüência
<TT/&dquot;&lt;espaço&gt;/ e no console pode-se usar <TT/&dquot;&dquot;/;
opcionalmente pode-se usar <TT/AltGR-&dquot;/, o que não é uma solução muito
confortável, mas funciona...

Testados com teclados de várias marcas (e alguns sem marca :-).

<TAG/O mapa Portugal (pt.map e Xmodmap.pt)/

Mapas para teclados com desenho português. Esses teclados são os que possuem
uma tecla com os caracteres <BF/«/ e <BF/»/. Não são muito confortáveis,
porque para gerar o símbolos <BF/@ &lsqb; &rsqb; &lcub; &rcub;/ e o trema é
necessário usar a tecla <BF/Alt-GR/.

Testado com um teclado da marca Key Tronic.

<TAG/O mapa ABNT-2 (abnt-2.map e Xmodmap.abnt2)/

Os computadores vendidos no Brasil fabricados pela IBM, Compaq e Itautec,
entre outros, vêm com esses teclados. Eles também pode ser adquiridos avulsos
e são fabricados pela UIS e Keytec (não confundir com Key Tronic).  Este
desenho é o mais confortável de todos, pois tem a mesma distribuição dos
acentos encontrada nas máquinas de escrever.

Testado com teclados das marcas UIS e IBM.

<TAG/Sun Type 4 e Type 5 (Xmodmap.Sun4+ e Xmodmap.Sun5c+)/

Encontrados nas máquinas fabricadas pela Sun.  Estes mapas foram testados em
SPARCstations modelos 1, 4, IPC e Classic rodando SunOS 4.1, Solaris 2.5.1 e
Linux 2.0.33 (Red Hat 4.2). Como esses teclados não possuem o c-cedilhado, foi
usado o mesmo truque do mapa US+. Apenas o mapa para o X é fornecido.

<TAG/NCD+ (Xmodmap.NCD+)/

Este mapa é para o teclado modelo N107 e foi testado em terminais X modelo 16r
fabricados pela Network Computing Devices Inc.~(NCD).  Embora a distribuição
de teclas seja idêntica à do Sun <EM/Type 4/, os <EM/keycodes/ das teclas
são diferentes. Esses teclados também não possuem o c-cedilhado, por isso foi
usado o mesmo truque do mapa US+.  Apenas o mapa para o X é fornecido.
</DESCRIP>

A geração dos caracteres acentuados é feita de acordo com a tabela a seguir:

<VERB>
    Para gerar              Digitar
    -------------------------------------------------
    ç                       'c ou compose-,-c
    á é í ó ú               'a 'e 'i 'o 'u
    à è ì ò ù               `a `e `i `o `u
    ã õ                     ~a ~o
    â ê î ô û               ^a ^e ^i ^o ^u
    ä ë ï ö ü               "a "e "i "o "u
    " (aspas)               "" ou AltGR-" no mapa US+
    ¨ (trema)               "-espaço
    ' (apóstrofo)           '' ou AltGR-' no mapa US+
    ` (grave)               `` ou AltGR-` no mapa US+
    ®                       compose-O-R
    ©                       compose-O-C
    -------------------------------------------------
</VERB>

</SECT>

<SECT>Informações Adicionais

<SECT1>Fontes de informação sobre Linux em Português
<P>
<DESCRIP>
<TAG/Grupo de Investigação Linux/
    Grupo de usuários de linux da Universidade do Minho, em Portugal que pode
    ser visitado em <URL URL="http://gil.di.uminho.pt">.
<TAG/Grupo de Utilizadores de Linux do ISCTE/
    Pode ser visitado em <URL
    URL="http://www.students.iscte.pt/~a12593/gul.html">.
<TAG/Linux Brasil/
    Servidor da Universidade Estadual de Campinas, Brasil, contendo
    informações sobre Linux no Brasil, que absorveu o antigo projeto LDP-br.
    Pode ser visitado em <URL URL="http://linux.unicamp.br">.
<TAG/Projeto LinUSP/
    Desenvolvido na Universidade de São Paulo, Brasil, coordenado por Jorge L.
    deLyra. Pode ser visitado em <URL
    URL="http://linusp.usp.br/">.
</DESCRIP>

</SECT1>

<SECT1>Free Translation Project
<P>
Programadores que quiserem desenvolver aplicações com suporte a mais de uma
língua devem usar algum método de definir mensagens em tempo de execução,
possivelmente usando uma biblioteca de funções para este fim. O projeto GNU
criou o ``Free Translation Project'', com esta finalidade. Muitos
aplicativos GNU já permitem que se troquem as mensagens bastando criar um
catálogo que é lido pelo programa ao iniciar. Há equipes de tradução
responsáveis por cada língua.

Há uma lista de discussão via emeil para cada equipe de tradução, rodando em
um servidor provido pela &lt;<htmlurl URL="http://www.li.org" name="Linux
International">&gt;. Para fazer contato com a equipe de tradução para
Português, envie um emeil para &lt;<HTMLURL URL="mailto:pt@li.org"
name="pt@li.org">&gt; e para assinar a lista envie emeil para &lt;<HTMLURL
URL="mailto:pt-request@li.org" name="pt-request@li.org">&gt; contendo apenas a
palavra ``subscribe''. Assine a lista somente se você quiser fazer parte da
equipe de tradutores, pois ela <BF/não/ se destina ao esclarecimento de
dúvidas de usuários!

Mais informações podem ser encontradas na documentação do pacote <EM/gettext/
disponível via FTP anônimo em qualquer repositório de software do GNU.
Provavelmente sua distribuição já tem um pacote pronto para ser instalado, mas
se você desejar, os fontes da versão mais recentes podem ser encontrados em
<QUOTE>
    <URL URL="ftp://ftp.gnu.org/pub/gnu/">
</QUOTE>
e o nome do arquivo a copiar é ``gettext-&lt;versão&gt;.tar.gz''.

</SECT1>

<SECT1>LIE-BR
<P>
<QUOTE>
A informação a seguir é baseada no conteúdo da página de apresentação da
lie-br, escrita por Jorge Godoy.
</QUOTE>
A lie-br foi criada com o intuito de auxiliar a comunidade Linux brasileira a
obter softwares e documentação em sua língua nativa: o português.  Essa lista
é uma ramificação de outra maior, a LIE que visa a internacionalização do
Linux e sua posterior tradução para todos os idiomas (português incluso). 

Resumo dos objetivos da lie-br:
<ITEMIZE>
<ITEM>contribuir para o projeto de internacionalização do Linux fazendo a parte
      relativa ao português para o Brasil;
<ITEM>internacionalizar programas, de modo a poderem ser usados nas línguas
      nativas de cada país, e não ficar preso ao idioma original ou ao inglês;
<ITEM>disponibilizar (sic) material em português para consulta e documentação;
<ITEM>aumentar o acervo de documentação disponível e, indiretamente, auxiliar
      no desenvolvimento iniciado pelo projeto LDP-BR.
</ITEMIZE>

Mais informações podem ser encontradas na página WWW da lie-br, no endereço
<QUOTE>
    <URL URL="http://lie-br.conectiva.com.br/">
</QUOTE>
Ainda há uma quantidade enorme de documentos por traduzir. Se você tem bom
domínio do Inglês e deseja colaborar, então <BF/primeiro/ leia as instruções
na página mencionada e assine a lista ``lie-br'', enviando um emeil para
&lt;<htmlurl URL="lie-br-subscribe@bazar.conectiva.com.br"
name="lie-br-subscribe@bazar.conectiva.com.br">&gt;. Não é preciso especificar
o assunto (subject) nem colocar nada no corpo da mensagem.

</SECT1>

<SECT1>Versões de software testadas<LABEL ID="SEC:VERSTEST">
<P>
Todas as informações presentes neste documento foram testadas nas
seguintes versões de software: 

<ITEMIZE>
<ITEM>Distribuições Slackware 3.2 (muito modificada), Debian 2.0, Red Hat 5.2,
      Conectiva 3.0 (Guarani) e S.u.S.E. 5.6
<ITEM>XFree86 versões 3.3 a 3.3.3.1
<ITEM>Fvwm 2.0.46
<ITEM>Rxvt versão 2.4.5
<ITEM>Kernel versões 2.0.33 a 2.0.36
<ITEM>Kbd versões 0.92 a 0.96
<ITEM>GNU emacs versões 19.34 a 20.3
<ITEM>Less versões 321 e 332
<ITEM>GNU Bash versões 1.14.7 a 2.01.1
<ITEM>tcsh versões 6.07.02 e 6.07.06
<ITEM>LyX 0.12.0 a 1.0.0pre6
<ITEM>XForms 0.88
<ITEM>Joe 2.8
<ITEM>Pine 3.96 e 4.0
<ITEM>Pico 2.9
<ITEM>teTeX versões 0.4 e 0.9-9
<ITEM>XEmacs versões 20.3 e 20.4
</ITEMIZE>

<!-- *** Termos Especiais *** -->

<!--

 PELAMORDIDEUS, CASANTOS!
 Toma vergonha na cara e atualiza isto!

<SECT1>Termos Especiais
<P>
<DESCRIP>

<TAG/BOOT/Processo de arranque da máquina. 

<TAG/HOWTO/Possiveis traduções seram : ``Como é que ...?'', ``O que é ...'' 

<TAG/Diréctoria HOME/a que se obtem executando ``cd &lt;ENTER&gt;''. 

<TAG/Package ou pacote/Conjunto de programas, arquivos de dados e/ou
documentação reunidos segundo um fim e designação comuns. 

<TAG/Página de Código/Normalmente designada em MSDOS como sendo o binómio
FONTES - POSIÇÕES DE CARACTER, sendo por exemplo a Página de código 850
caracterizada por um certo tipo de caracteres (diferentes dos exibidos pela
placa gráfica no momento do ``boot'') e suas posições no teclado (o
``<TT/c-cedilhado/'' no sitio certo bem como os ``&lt;,-~ etc'').  No
<BF/Linux/ o mesmo é obtido através dos comandos setfont e mapscrn. 

</DESCRIP>

 -->

<SECT>Observações finais

<SECT1>Futuras adições a este documento
<P>
As próximas versões do HOWTO deverão conter, entre outros assuntos, os
seguintes:
<ITEMIZE>
<ITEM>suporte à distribuição Caldera;
<ITEM>informações sobre compartilhamento de arquivos em rede usando NFS, SAMBA
      e Mars-NWE;
<ITEM>configuração de <EM/toolkits/ de interface gráfica: Qt, GTK, XForms,
      Tk (Tcl) e os baseados em Xt, como Motif, Lesstif, Xaw (*international
      ainda não está funcionando);
<ITEM>uma seção sobre desenvolvimento de programas;
<ITEM>referências ao Ispell (usá-lo para corrigir o próprio HOWTO :-);
<ITEM>informações sobre X/Open, XPG4 e POSIX, ou pelo menos ponteiros para
      elas.
</ITEMIZE>
Aceitam-se voluntários para qualquer uma destas tarefas.

Parece cada vez mais claro que as informações sobre configuração de
aplicativos devem ser movidas para outro documento, independente do HOWTO. Na
forma como ele está hoje já chega a quase quarenta páginas impressas e com a
adição de outras distribuições e aplicações em breve chegará às 50. Um
documento tão grande foge ao espírito de um HOWTO, que deve ser sucinto e
concentrado em um assunto específico.

<SECT1>Nota de Direitos de Autor
<P>
Este HOWTO teve como autor João Carlos Rodrigues Pereira, baseado em
documentação escrita por José Bandeira além dos restantes HOWTO's do Linux.
Atualmente ele é mantido por Carlos Augusto Moreira dos Santos, com a
colaboração de muitos outros.

Os documentos HOWTO do Linux podem ser reproduzidos e distribuídos
em todo ou em parte, segundo qualquer meio físico ou electrónico, desde que
esta Nota de Direitos de Autor se mantenha intacta em todas as cópias dos
mesmos.  A distribuição comercial é autorizada e encorajada, no entanto, o
autor gostaria de ser notificado de tais ocorrências.

Todas as traduções, trabalhos derivados, ou trabalhos agregando qualquer dos
documentos HOWTO do Linux deverão estar abrangidos por esta Nota de
Direitos de Autor, ou seja, não poderá ser imposta qualquer restrição
adicional a trabalhos efectuados a partir de um dos documentos HOWTO do
Linux nomeadamente no que diz respeito à sua distribuição.

Exceções a estas regras poderam ser obtidas. Para tal, dever-se-á contactar o
coordenador dos documentos HOWTO do Linux no endereço &lt;<HTMLURL
URL="mailto:linux-howto@metalab.unc.edu"
NAME="linux-howto@metalab.unc.edu">&gt;.

<SECT1>Garantia (inexistência de) e nota de responsabilidade
<P>
Apesar de ter sido feito o máximo esforço possível para que o conteúdo deste
documento esteja correto, não há nenhuma garantia de que ele não possua erros,
nem de que tenha algum tipo de utilidade ou aplicação comercial, técnica,
educacional ou medicinal.  O autor não se responsabiliza por prejuízos
decorrentes do seu uso. Em resumo: se a informação aqui contida quebrar seu
computador em mil pedacinhos, junte tudo e cole, mas <BF>não reclame para
mim</BF>! 

Documentos escritos por terceiros são de responsabilidade exclusiva deles e
sua referência neste HOWTO não representa nenhum tipo de recomendação,
abono ou garantia de suporte.

<SECT1>Agradecimentos
<P>
Deixo aqui os meus agradecimentos a todos os que de alguma forma me ajudaram
quer através das suas sugestões quer através de contribuições de outro tipo,
em especial a

<DESCRIP>
<TAG/João Carlos Rodrigues Pereira/Autor original deste documento que agora
     mantenho. Nunca tive contato com ele, nem sei por onde andará.  Sua
     página no Departamento de Informática da Faculdade de Ciências da
     Universidade de Lisboa (http://caravela.di.fc.ul.pt/&tilde;jcrp/) não
     existe mais. Lembro-me de tê-la visto, anos atrás.
<TAG/Greg Hankins/Ex-coordenador dos <BF/Linux HOWTO/, por me permitir assumir
     a manutenção deste documento e fornecer as primeiras dicas sobre autoria
     de documentos SGML.
</DESCRIP>

As pessoas listadas a seguir enviaram mensagens diretamente para mim ou para
as listas Linux-BR da UNICAMP e TeX-BR com informações, sugestões ou
comentários que foram incluídas neste texto. Se alguém foi esquecido, por
favor desculpe a falha.

<QUOTE>
Andre Gerhard &lt;andre@lme.usp.br&gt;<newline>
Arnaldo Carvalho de Melo &lt;acme@conectiva.com.br&gt;<newline>
Bruno Barberi Gnecco &lt;brunobg@geocities.com&gt;<newline>
Cees de Groot &lt;cg@pobox.com&gt;<newline>
Francisco Semeraro &lt;semeraro@sti.com.br&gt;<newline>
Goedson Teixeira Paixao &lt;gopaixao@dcc.ufmg.br&gt;<newline>
Joao Carvalho &lt;foxfire@fe.up.pt&gt;<newline>
Jorge Carvalho Pinto &lt;jmcpinto@yahoo.com&gt;<newline>
Judson S Santiago &lt;judson@costeira.dimap.ufrn.br&gt;<newline>
Ken MacLeod &lt;ken@bitsko.slc.ut.us&gt;<newline>
Klaus Steding-Jessen &lt;jessen@acm.org&gt;<newline>
Lamarque Vieira Souza &lt;lamarque@dcc.ufmg.br&gt;<newline>
Marcelo Malheiros &lt;malheiro@dca.fee.unicamp.br&gt;<newline>
Marcos Vinicius Lannes dos Santos &lt;lannes@cnpgl.embrapa.br&gt;<newline>
Pedro Kröger &lt;kroger@e-net.com.br&gt;<newline>
Rafael Caetano dos Santos &lt;rcaetano@linux.ime.usp.br&gt;<newline>
Rafael Rodrigues Obelheiro &lt;obelix@biquinho.furg.br&gt;<newline>
Ramiro Morales &lt;morales@siscard.com.ar&gt;<newline>
Raul Carvalho &lt;rmpc@ip.pt&gt;<newline>
Ricardo Y. Igarashi &lt;iga@originet.com.br&gt;<newline>
Roberto Mello &lt;mello@internext.com.br&gt;<newline>
Wanderlei Antonio Cavassin &lt;cavassin@conectiva.com.br&gt;<newline>
</QUOTE>

Os seguintes agradecimentos são do primeiro autor:
<DESCRIP>
<TAG/Carlos Ferreira/Pela luta que trava pela defesa da lingua portuguesa, bem
     patente na sua <EM/Página Portuguesa/ disponível no URL:
     <TT>http://lila.dei.uc.pt/&tilde;cjrf/po/</TT> [Nota do mantenedor
     atual: esta página não existe]
<TAG/João C. Silva/Pelo apoio e incentivo e criticas (bem como por me deixar
     testar os meus conhecimentos no SEU computador). 
<TAG/José Bandeira/Autor dos ficheiros <TT/port.map/ e <TT/xmodmap/.  Pelo seu
     apoio e por ter escrito alguma da documentação mais elucidativa que eu já
     li sobre o assunto.
</DESCRIP>

</SECT1>

</SECT>

<SECT>Bibliografia comentada<LABEL ID="SEC:BIBLIOGRAFIA">
<P>
Esta seção ainda está incompleta e deve ser melhorada nas próximas versões.
Os HOWTOs mencionados aqui geralmente são distribuídos nos CDs de
instalação e todas as distribuições possuem pelo menos alguns deles em pacotes
prontos para instalar.  Na Slackwre esses pacotes são os da série F e os
documentos ficam instalados no diretório <TT>/usr/doc/faq/howto</TT> e na
Debian o diretório é <TT>/usr/doc/HOWTO</TT>. Eles também podem ser obtidos
via WWW em <URL URL="http://metalab.unc.edu/LDP/HOWTO/">.

<DESCRIP>
<TAG>[BAL97]~BALSA,~André~D. Linux and X11 internationalization</TAG>
    Disponível via WWW em <URL
    URL="http://wauug.erols.com/~balsa/linux/deadkeys/">

    Uma discussão sobre o problema da acentuação no X. Também contém
    referências para outros documentos que tratam de internacionalização.
<TAG>[BRO98]~Brower~Andries. The Linux Keyboard and Console HOWTO</TAG>
    Disponível via WWW em <URL
    URL="http://metalab.unc.edu/LDP/HOWTO/Keyboard-and-Console-HOWTO.html">.

    Descreve o tratamento teclado e console no Linux
    (kernel versão 2.0) e tem várias referências ao X. Leitura obrigatória
    para quem quer entender a base do assunto.
<TAG>[GET94]~Gettys, James et al. Xlib - C Language X Interface</TAG>
    Cambridge, X Consortium, Inc., 1994. 473p.

    Referência definitiva sobre programação com <TT/Xlib/.
<TAG>[JON89]~Jones,~Oliver. Introduction to the X Window System</TAG>
    Englewood Cliffs, Prentice Hall, 1990.

    Um livro bastante antigo, mas contendo uma excelente e didática introdução
    ao X e à programação com <TT/Xlib/.
<TAG>[McC94]~McCormack,~Joel et al.X Toolkit Intrinsics - C Language Interface</TAG>
    Digital Equipment Corporation/X Consortium, 1994.

    A referência básica para programadores interessados em usar Xt.
<TAG>[OSS92]~Ossana,~Joseph~&amp;~Kernighan,~Brian. Troff user's manual</TAG>
    Computer Science Technical Report No. 54. Murray Hill, AT&amp;T Bell
    Laboratories, 1992.

    Descrição detalhada de como usar o Troff para formatação de documentos.
<TAG>[KER82]~Kernighan,~Brian. A Typesetter-independent TROFF</TAG>
    Murray Hill, AT&amp;T Bell Laboratories, 1982.

    O artigo de um dos pais do UNIX sobre o Troff.
<TAG>[QUI98]~Quinot,~Thomas. Dead keys under X11</TAG>
    Disponível via WWW em <URL URL="http://www.fdn.fr/~tquinot/index.en.html">

    A versão em inglês do artigo sobre a modificação da
    <EM/Xlib/ para dar suporte à acentuação independente da aplicação.
<TAG>[RAY98]~Raymond,~Eric~S. The Linux XFree86 HOWTO</TAG>
    Disponível via WWW em <URL
    URL="http://metalab.unc.edu/LDP/HOWTO/XFree86-HOWTO.html">.

    Descreve como obter, instalar e configurar o XFree86. Todas as
    distribuições de Linux já vêm com pacotes do XFree86 prontos para instalar,
    mas as informações sobre configuração podem ser muito úteis.
<TAG>[SCH86]~Scheifler,~Robert;~Gettys,~James. The X Window System</TAG>
    <em/ACM Transactions on Graphics/, New York, ACM, <em/5/ (2): 79-109,
    april, 1986.

    O artigo seminal de Scheifler e Gettys descrevendo o X Window System.
<TAG>[SUN90a]~Sun~Microsystems. Using NROFF &amp; TROFF.</TAG>
    Sun Microsystems, 1990.

    Parte da documentação que acompanhava as estações de trabalho Sun® e o
    sistema SunOS®, no tempo em que os fabricantes de computadores distribuiam
    documentação de verdade.
<TAG>[SUN90b]~Sun~Microsystems. Formatting documents</TAG>
    Sun Microsystems, 1990.

    Veja o ítem anterior.
</DESCRIP>

Arquivos cuja leitura pode ser útil:

<DESCRIP>
<TAG><TT>/usr/src/linux/Documentation/unicode.txt</TT></TAG>
    Explica como ativar os diversos tipos de fontes no console. Também explica
    onde obter fontes para o alfabeto Klingon, o que pode ser muito útil se o
    leitor for um habitante daquele Império ou admirador de Jornada nas
    Estrelas.  Depois das recentes aventuras espaciais do Linux, não duvido de
    mais nada...

    A respeito deste assunto é de fundamental importância saber que, segundo
    nosso consultor interestrelar Klaus Steding-Jessen, ``Klingon é o nome da
    raça e do seu idioma.  Kling é o nome do planeta.  Mas note que o Império
    Klingon é formado não apenas por esse planeta, mas por várias colônias,
    teoricamente todas falando Klingon''. Tenho certeza de que sua vida nunca
    mais será a mesma depois de saber disto.
<TAG><TT>/usr/src/linux/include/linux/keyboard.h</TT></TAG>
    Contém as definições de constantes, funções e macros utilizadas por
    programas que fazem tratamento de teclado sob Linux.  Normalmente esse
    arquivo é instalado com o pacote que contém o código fonte do kernel. As
    distribuições geralmente possuem um pacote apenas com os arquivos
    <EM/include/ e outros com o resto dos programas-fonte do kernel.
<TAG><TT>/usr/X11R6/include/X11/keysymdef.h</TT></TAG>
    Contém as definições de constantes, funções e macros utilizadas por
    programas que fazem tratamento de teclado sob o X Window System.
    Normalmente esse arquivo é instalado com o pacote que contém as
    bibliotecas de desenvolvimento de aplicações para X.
</DESCRIP>

</SECT>

</ARTICLE>
