Linux Portuguese-HOWTO Carlos Augusto Moreira dos Santos casantos@cpmet.ufpel.tche.br CPMet/UFPEL -- Pelotas, RS, Brasil v3.1, 1 January 1999 Este documento pretende ser um guia de referência de configuração do Linux e seus programas, teclados e fontes de caracteres, permitindo sua utilização mais confortável por pessoas que falem a Língua Por­ tuguesa. ______________________________________________________________________ Índice geral 1. Introdução 1.1 Finalidades deste HOWTO 1.2 Onde encontrar a versão mais atual 1.3 Como enviar colaborações 2. Informações gerais 2.1 Conjuntos de caracteres 2.2 Modo texto versus Sistema de Janelas X 3. Configuração do console (modo texto) 3.1 Mapas de teclado 3.2 Mapas de tradução de tela 3.3 Comandos do pacote KBD 3.4 Ativação do modo Unicode 3.5 Carregamento de uma fonte de caracteres 3.6 Carregando um mapa de teclado 3.7 Verificando erros 4. Biblioteca de funções 4.1 Configurando o suporte internacional 4.2 Problemas com a 4.3 Free Translation Project 5. Configuração do X 5.1 Configuração do xinit 5.2 Configuração do XDM 5.3 Compose 5.4 Locale 5.5 Contornando os limites do X 5.5.1 Alteração da biblioteca 5.5.2 Alteração no 5.5.3 Comparação entre as duas soluções 6. Configuração dos vários programas 6.1 Aplicativos 6.1.1 Bash (biblioteca GNU readline) 6.1.2 tcsh 6.1.3 Joe 6.1.4 Less 6.1.5 ls 6.1.6 Man, groff, troff 6.1.7 Midnight Comander (mc) 6.1.8 Minicom 6.1.9 nn 6.1.10 Emacs 6.1.11 Xemacs (antigo lucid emacs) 6.1.12 flex 6.1.13 Pine e Pico 6.1.14 TeX, LaTeX 6.1.15 Ispell 6.1.16 LyX 6.1.17 Fortune 6.1.18 Jdk (inclui ICQJava) 6.2 Rede local e Internet 6.2.1 FTP (File Transfer Protocol) 6.2.2 Correio eletrônico 7. Ficheiros necessários 8. Informações Adicionais 8.1 Leituras recomendadas 8.2 Fontes de informação sobre Linux em Português 8.3 Versões de software testadas 8.4 Futuro 8.5 Termos e Condições 8.6 Garantia (inexistência de) e nota de responsabilidade 8.7 Agradecimentos ______________________________________________________________________ 1. Introdução À semelhança de outras línguas faladas na Europa, a Língua Portuguesa reveste-se de algumas características especiais, tais 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. Embora seja falada em Portugal e todas suas ex-colônias, nossa língua assume particularidades em cada um desses lugares -- 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 está agora sendo mantido por um brasileiro. Existe nele 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é mesmo por respeito ao primeiro autor. Termos ``estrangeiros'' desnecessários foram substituidos por correspondentes da Língua Portuguesa, preservando-se apenas os que já fazem parte do jargão da informática. 1.1. Finalidades deste HOWTO Este HOWTO pretende ser 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 às vezes chega ser frustrante. As dificuldades encontradas centram-se essencialmente em torno de quatro pontos: · a introdução de caracteres acentuados através do teclado, como seja a escrita de jo~ao em vez da sua forma correcta: joão. · A exibição dos mesmos na tela do computador. O suporte resume-se normalmente à correcta localização das teclas, nada mais. · O correto tratamento de convenções nacionais de formato de datas, horas e valores monetários. · 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. 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. Outra decisão importante é a de torná-lo menos slackwariano, abrindo mais espaço para informações relativas a outras distribuições. A distribuição Slackware ainda se baseia na versão 5 da biblioteca de funções do sistema para Linux (libc), enquanto Debian, Red Hat e outras 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.0 do Portuguese HOWTO, Debian passará a ser uma distribuição ``de referência'', o que não deve ser interpretado como afirmação de que existe uma distribuição melhor ou superior às outras. O tema já foi motivo de várias discussões sem que jamais se chegasse a outra conclusão senão a de que o melhor software é aquele mais adequado não só às nossas necessidades, mas por vezes também às nossas manias. Ao contrário de tentar concentrar toda a informação em um único texto, optou-se por focar alguns temas essenciais, fornecendo referências para outras fontes. É feita uma 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. Excetuando-se aspectos muito específicos do Linux, como a configuração do modo texto e do 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.5.1 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. 1.2. Onde encontrar a versão mais atual 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 Institudo de Tecnologia de Massachusetts (MIT), nos Estados Unidos da América, e podem ser obtidos via FTP anônimo nos seguintes endereços: · · Pode-se também folhear os documentos HOWTO em formato HTML no endereço · 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 sunsite.unc.edu. Uma lista completa dessas localidades pode ser obtida em · Eis uma lista dos endereços recomendados: Brasil · · · · Portugal · · · · · · · · A página oficial do Linux Portuguese-HOWTO, assim como os diversos arquivos de configuração do sistema e progrmas aplicativos mencionados no texto, podem ser encontrados nos seguintes endereços: · · Administradores de servidores WWW/FTP interessados em manter espelhos do Linux Portuguese-HOWTO podem entrar em contato com o autor via correio eletrônico no endereço casantos@cpmet.ufpel.tche.br. Eu gostaria também de ser informado de outros lugares onde o LDP seja espelhado, tanto no Brasil quanto em outros países de língua portuguesa. ATENÇÃO! Não procure este documento nos servidores WWW ou FTP do Centro de Pesquisas Meteorológicas da Universidade Federal de Pelotas, pois será pura perda de tempo. As versões mais atuais deste documento são publicadas nos endereços citados acima. 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 obtidos por meio de conversão por utilitários adequados. Para saber mais sobre SGML consulte a página do pacote SGMLtools em . 1.3. Como enviar colaborações O formato original deste documento não é texto simples, nem HTML. Toda a formatação, incluindo numeração das seções é feita depois que o original é enviado para o sunsite.unc.edu. Por isso, quando for enviar sugestões ou correções, faça-o mencionando 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 suas sugestões para casantos@cpmet.ufpel.tche.br. Todas as mensagens serão lidas, mas nem todas receberão resposta direta, devido à falta de tempo para tanto. Envie mensagens 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. O código de caracteres do Microsoft Windows é praticamente igual ao ISO-8859-1. Usuários de computadores com outros sistemas operativos (Macintosh, Amiga, etc.) devem se certificar de usar um editor capaz de gerar texto na codificação adequada. Por favor não envie texto em HTML e muito menos documentos no formato proprietário de processadores de texto! Certifique-se de que seu agente de correio está configurado para não enviar mensagens em formato HTML (que inexplicavelmente é o comportamento normal de programas como Netscape Communicator e Microsoft Out-of-luck). 2. Informações gerais 2.1. Conjuntos de caracteres 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 (International Standards Organization - ISO) padronizou através da norma ISO-8859 vários desses conjuntos, identificados por ISO-8859-x onde o 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 (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 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 semigráficos que são úteis no desenho de linhas e bordas. Esses sinais podem aproveitar códigos não utilizados pelo conjunto oficial, tornando-os não portáveis. O 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. Linux segue o padrão Unicode possuindo uma implementação ``nivel 1''. Maiores detalhes podem ser encontrados nos manuais do Linux, que podem ser lido com os comandos man unicode man utf-8 man iso_8859_1 man ascii mas antes disso certifique-se de que o man está configurado correta­ mente, conforme mostrado na seção ``Man, groff, troff''. 2.2. Modo texto versus Sistema de Janelas X Alguns sistemas operativos, tais como MacOS, Microsoft Windows e NeXT, possuem suas 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 não suporta totalmente o padrão Unicode e sim uma extensão do ISO-8859. A rigor o X Window System 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) sobre a qual se construíram várias interfaces gráficas. Tanto o proto­ colo quanto o Sistema de Janelas definem um conjunto de mecanismos e não 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). Esta é a razão pelo qual o uso do termo ``XWindows'' é incorreto e deve ser evitado. 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 é possível definir uma tecla chamada Compose cujo pressionamento seguido de duas outras gerará o caracter correspondente. Assim sendo, o pressionamento da seqüência 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 uma vez 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 servidor X. O pressionamento de uma tecla gera uma mensagem (chamada de evento) que é passada pelo servidor X à aplicação cliente. Há um programa muito útil chamado xev que permite observar cada um dos eventos a ele transmitido. O cliente e o servidor se comunicam via rede usando um conjunto de regras chamado protocolo X e podem rodar em máquinas diferentes. A máquina onde roda o servidor é chamada estação de trabalho ou terminal X e a máquina onde roda o programa cliente também é chamada de 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 ``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 keycode na terminologia do X. Ao invés disso, é enviado um símbolo, chamado keysymbol ou 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 xmodmap capaz de ler um arquivo contendo uma tabela de conversão keycode-->keysym e a enviar, também na forma de mensagens no protocolo X, para o servidor. É responsabilidade do cliente e não do servidor interpretar o keysym, o que significa dizer que a aplicação tem que 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 (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 XLookupString, entretanto, não processa as seqüências de acentos e letras de modo transparente às aplicações. Ao invés disso foi incluido um método de composição usando contextos de entrada (input contexts) por meio das funções XmbLookupString e XwcLookupString, cujo uso é responsabilidade da aplicação -- ou do seu programador, melhor dizendo -- mesmo no caso da tecla Compose. Isto deve-se so facto de o X Consortium ter chegado à conclusão de que o sistema de mapeamento de teclas não tratava de forma satisfatória toda a imensa variedade de línguas escritas nas várias partes do mundo. Deste modo, decidiu-se que o ``peso'' relativo à gestão do teclado fosse transferido para as aplicações X, 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 vi e 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 xterm ou 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 ``Cotornando os limites do X''. Isso permite usar aplicações como xfig ou 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... 3. Configuração do console (modo texto) O documento de referência sobre a configuração do console do Linux é o 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. 3.1. Mapas de teclado 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 de varredura, também conhecido como scancode, junto com um sinal de que a tecla foi pressionada ou solta. As seqüências de eventos são então processadas pelo 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 scancode de tecla e o caracter (ou seqüência de caracteres) a gerar quando ela for pressionada, chamado keycode. Por exemplo: # 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 Além das teclas alfabéticas, numéricas e de símbolos, existem outras chamadas modificadoras que permitem gerar códigos que não correspondem a nenhum sinal gráfico: Shift Control Alt e 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 Meta. O arquivo de mapa permite também especificar teclas especiais chamadas ``teclas mortas'' (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 ~ seguida de um a, seja gerado um `ã'. Ao contrário do que possa imaginar algum leitor incauto, deadkeys não são aquelas usadas para escrever ghostscripts! Vale a pena ler, no entanto o arquivo humor.txt que faz parte do pacote Ghostscript e, dependendo da distribuição pode estar no diretório /usr/lib/ghostscript/doc ou /usr/doc/ghostscript. Nas versões mais recentes do Aladdin Ghostscript os documentos estão em formato html e o arquivo chama-se humor.html. 3.2. Mapas de tradução de tela 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 c-cedilhado na tela, fosse na realidade exibido um outro caracter de código diferente mas cuja imagem na nossa fonte de caracteres correspondesse à imagem de um 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. 3.3. Comandos do pacote KBD Loadkeys Permite carregar um mapa de teclado. Por exemplo, o comando a seguir carrega o mapa armazenado no arquivo portugal.map. loadkeys /usr/lib/kbd/keytables/portugal.map 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: setfont lat1u-16.psf 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 xfd. Se o programa showfont do pacote KBD for invocado em um emulador de terminal X, como xterm, ele gerará um erro ``GIO_SCRNMAP: Invalid argument'', mas não provocará nenhum dano. Mapscr Permite carregar um mapa de tradução de tela. Suponhamos que exista o arquivo /etc/portugal.trad. Se executarmos o comando mapscrn /etc/portugal.trad então a partir deste momento as traduções lá definidas serão usadas. 3.4. Ativação do modo Unicode Nota: a configuração descrita nesta seção não é obrigatória quando se carrega uma fonte contendo definições de carac­ teres no padrão Unicode, pois o programa setfont carrega automaticamente a tabela de mapeamento adequada. Para colocar o console no modo Unicode permitindo o uso dos acentos e caracteres semigráficos, pode ser usado o comando echo -n -e '\033(B' A ativação do modo Unicode deve ser feita para cada terminal virtual, mas é muito mais fácil criar um arquivo /etc/issue que contenha as seqüências de configuração. Isso pode ser feito usando este pequeno script: #!/bin/sh ESC=`echo -n -e '\033'` echo "${ESC}(B${ESC}[H${ESC}[J${ESC}[37m${ESC}[44m${ESC}[K" > /etc/issue echo " Welcome to \n (\s \m \r) \l${ESC}[K" >> /etc/issue echo " \d \t (\U)${ESC}[K" >> /etc/issue echo "${ESC}[K${ESC}[37m${ESC}[40m" >> /etc/issue echo >> /etc/issue 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 computa­ dor, por exemplo, aparece a seguinte mensagem em letras brancas sobre um fundo azul: Welcome to doncarlo (Linux i586 2.0.33) tty5 Fri Jul 17 1998 03:12:37 (4 users) 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 /etc/rc.d/rc.S e comentar as linhas com os comandos que geram um novo /etc/issue cada vez que o o sistema é iniciado. Uma alternativa ao método anterior é colocar no início do /etc/rc.d/rc.S a seguinte seqüência de comandos: # Inicializacao das consolas # # activacao do modo de mapeamento Latin-1 # for tty in /dev/tty[1-9]* do echo -n -e "\\033(B" > $tty done 3.5. Carregamento de uma fonte de caracteres É preciso carregar uma fonte que tenha os caractres latinos acentuados no padrão ISO 8859-1 e também os símbolos semigráficos. Isso pode ser feito com o comando setfont lat1u-16.psf As versões mais antigas do pacote KBD mantinham essas fontes no diretório /usr/lib/kbd/consolefonts, que foi trocado depois da versão 0.92 por /usr/share/consolefonts. Dependendo da sua distribuição e do quanto ela esteja atualizada o diretório poderá ser um ou outro. Para automatizar o processo de carga da fonte na Slackware foi criado o script /etc/rc.d/rc.font, contendo o seguinte: #!/bin/sh # # /etc/rc.d/rc.font # # Seleciona uma das fontes de caracteres disponiveis em # /usr/lib/kbd/consolefonts. # setfont lat1u-16.psf Na distribuição Debian , edite o arquivo /etc/kbd/config e coloque uma linha contendo CONSOLE_FONT=lat1u-16.psf esse arquivo é processado pelo script /etc/rc.boot/kbd. Execute-o para ativar a nova fonte sem ter que dar ``reboot''. Lembre-se sempre: Linux não é Windows! Na distribuição Red Hat, edite o arquivo /etc/sysconfig/consolefont e coloque FONT=lat1u-16.psf Experimente algumas teclas como ``,.|!"#$%&/()=?'', etc... 3.6. Carregando um mapa de teclado 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 /usr/lib/kbd/keytables passando mais tarde para /usr/share/keytables. Dependendo da distribuição você terá um diretório ou outro. Os mapas para diversos tipos de teclados são apresentados mais adiante. Para automatizar o processo de configuração do teclado na Slackware foi criado o script /etc/rc.d/rc.keyboard, contendo o seguinte: #!/bin/sh # # /etc/rc.d/rc.keyboard # # Seleciona um dos mapas de teclado disponíveis no diretório # /usr/lib/kbd/keytables # loadkeys abnt2 e acrescentei as seguintes linhas ao /etc/rc.d/rc.S, imediatamente antes do tratamento do /etc/rc.d/rc.keyboard: # Carrega uma fonte de caracteres se existe um script rc.font. if [ -x /etc/rc.d/rc.font ]; then /etc/rc.d/rc.font start fi # Carrega um mapa de teclado se sexiste um script rc.keyboard. if [ -x /etc/rc.d/rc.keyboard ]; then /etc/rc.d/rc.keyboard start fi Na distribuição Debian, instale pacote kbd e depois faça o seguinte: · copie os arquivos com os mapas de teclado fornecidos (veja a seção ``Ficheiros necessários'') para o diretório /usr/share/keytables/. Não é necessário descomprimi-los. · copie o mapa correspondente ao seu teclado para o arquivo /etc/kbd/default.map.gz. · rode o script /etc/init.d/keymaps.sh. Na distribuição Red Hat, edite o arquivo /etc/sysconfig/keyboard e coloque o nome do mapa a usar na variável KEYTABLE, como por exemplo KEYTABLE="/usr/lib/kbd/keytables/abnt-2.map" Experimente pressionar a tecla c-cedilhado (se o teclado não tem esta tecla, digite 'c). Se aparecer caracter estranho verifique se carregou o mapa de teclado e a fonte de caracteres corretos, pois provavelmente uma dessas operações foi mal sucedida. 3.7. Verificando erros 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 convencer a tela a mostrar os caracteres certos em cada caso. Poderíamos recorrer ao comando 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 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. 4. Biblioteca de funções libc e aplicativos GNU 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. 4.1. Configurando o suporte internacional 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 estabelecar 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 man environ 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 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. L_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 quê a maiúscula correspondente, mas para uma letra acentuada esta regra não é válida! 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. LC_MESSAGES Estabelece a língua em que as mensagens serão apresentadas e como é uma resposta afirmativa ou negativa (S/N). LC_NUMERIC Estabelece o comportamento das funções de leitura/escrita de valores numéricos permitindo, por exemplo que usemos a vírgula decimal. LC_TIME Define a formatação de datas e horas. 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. LANG Define de uma só vez todas as categorias, se LC_ALL não estiver definida. Maiores informações podem ser obtidas no manual do sistema com o comando man 7 locale 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 /etc/profile uma linha contendo LC_ALL="pt_PT" export LC_ALL Usuários brasileiros devem usar ``pt_BR'' ao invés de ``pt_PT''. Teste o resultado com os comandos a seguir (/inexistente é o nome de um arquivo que não existe): echo ÁÉÍÓÚ | tr '[:upper:]' '[:lower:]' tar tf /inexistente ls -l / date O resultado do primeiro deverá ser ``áéíóú''. Os outros devem retornar mensagens em Português, mas talvez nem todas, porque em muitos progra­ mas o suporte para nossa língua ainda é muito restrito. 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) é locales_2.0.7t-1.deb e em meu CD está no diretório debian/main/binary-i386/admin. 4.2. Problemas com a libc 5 Até meados de 1997 todas as distribuições de Linux usavam a mesma biblioteca libc, que estava na versão 5, desenvolvida a partir de uma versão mais antiga da libc do projeto GNU. Esta biblioteca possui 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 locales- pt.tgz. Para instalá-lo na distribuição Slackware, basta (como usuário root) usar o comando installpkg locales-pt.tgz e para outras distribuições use o comando tar xzf locales-pt.tgz -C / Verifique se há dois subdiretórios do /usr/share/locale chamados pt_BR e pt_PT. Basta então configurar a variável de ambiente LC_ALL, como já descrito. 4.3. Free Translation Project 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 e-mail para cada equipe de tradução, rodando em um servidor provido pela Linux International. Para fazer contato com a equipe de tradução para Português, envie um e-mail para pt@li.org e para assinar a lista envie e-mail para pt-request@li.org contendo apenas a palavra ``subscribe''. Assine a lista somente se você quiser fazer parte da equipe de tradutores, pois ela não se destina ao esclarecimento de dúvidas de usuários! Mais informações podem ser encontradas na documentação do pacote 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 e o nome do arquivo a copiar é ``gettext-.tar.gz''. 5. Configuração do X Quando o servidor X está ativo, ele coloca o teclado do computador em um modo de operação chamado raw (cru), em oposição ao modo normal, chamado 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 xmodmap, que cumpre uma função correspondente à do comando loadkeys, ou seja, lê um arquivo de mapa de teclado do X, expecificando as equivalências entre os keycodes e respectivos keysymbols. Eis um excerto deste arquivo: 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 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 entatanto não ter realizado qualquer tipo de configuração ao modo de texto, e vice-versa. Outro ponto importante de se observar é que os códigos numéricos das teclas no X não correspondem aos do console. A tecla Backspace, por exemplo, tem o número 14 no console, e 22 no X (em um computador do tipo IBM-PC). As versões 3.2 e posteriores do XFree86 permitam definir dead-keys, mas o seu tratamento é responsabilidade da aplicação, conforme visto na seção ``Modo texto versus Sistema de Janelas X''. Há modos de contornar esta limitação e tornar o tratamento de dead-keys transparente às aplicações, conforme mostrado na seção ``Cotornando os limites do X''. Dividimos a configuração em duas partes: Uma que deve ser feita antes do login do usuário e outra depois. 5.1. Configuração do xinit 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 /usr/X11R6/lib/X11/xinit, onde normalmente ficam os arquivos de iníco da seção de trabalho no X. Na distribuição Slackware esse diretório é um link simbólico para /var/X11R6/lib/xinit e na Debian e na Red Hat para /etc/X11/xinit. Nas distribuições Slackware e Red Hat, verifique se no referido diretório existe um arquivo chamado .Xmodmap. Se existir, copie o Xmodmap. para ele, ou faça um link. Normalmente o arquivo de configuração xinitrc possui os comandos para carregá-lo automaticamente. Veja o seguinte trecho: #!/bin/sh # $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $ userresources=$HOME/.Xresources usermodmap=$HOME/.Xmodmap sysresources=/usr/X11R6/lib/X11/xinit/.Xresources sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap # merge in defaults and keymaps if [ -f $sysresources ]; then xrdb -merge $sysresources fi if [ -f $sysmodmap ]; then xmodmap $sysmodmap fi Na distribuição Debian o mapa de teclado padrão do X é /etc/X11/Xmodmap, basta copiar o mapa desejado para aquele arquivo. Ele será carregado pelo xinitrc, que por sua vez é um link simbólico para /etc/X11/Xsession, sempre que iniciar a seção de trabalho do usuário. 5.2. Configuração do XDM Existe ainda um pequeno problema: no meu computador, por exemplo, o sistema carrega diretamente o X ao dar boot e o login é feito pelo X Display Manager (xdm). Como o xdm faz o login antes de iniciar a seção de trabalho, o mapa de teclado não será carregado, o que pode criar problemas se o usuário usa caracteres como ``['' ou ``]'' em sua senha, pois nos teclados ABNT-2 e português esses símbolos são gerados por teclas cujos códigos numéricos não são os mesmos do teclado americano. É preciso fazer uma pequena alteração no arquivo de configuração Xsetup_0. Esse arquivo deve estar no diretório /usr/X11R6/lib/X11/xdm, que na Slackware é um link simbólico para /var/X11R6/lib/xdm e /etc/X11/xdm na Debian e -- sujeito a confirmação -- RedHat. Eis o conteúdo completo desse arquivo: #!/bin/sh # # /usr/X11R6/lib/X11/xdm/Xsetup_0 # sysresources=/usr/X11R6/lib/X11/xinit/.Xresources sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap # merge in defaults and keymaps if [ -r $sysresources ]; then xrdb -merge $sysresources fi if [ -r $sysmodmap ]; then xmodmap $sysmodmap fi xconsole -geometry 480x130-0-0 -daemon -notify -verbose \ -fn fixed -exitOnFail A distribuição Debian tem um Xsetup_0 um pouco diferente, em /etc/X11/xdm/Xsetup_0, mas basta acrescentar-lhe o seguinte: sysmodmap=/etc/X11/Xmodmap sysresources=/etc/X11/Xresources if [ -f $sysresources ]; then xrdb -merge $sysresources fi if [ -f $sysmodmap ]; then xmodmap $sysmodmap fi 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. 5.3. Compose Uma das coisas mais importantes a definir quando vamos utilizar acentuação por meio de dead-keys é o conjunto de regras de composição. Essas regras determinam, por exemplo que a composição do caracter ' com a letra e gerará um é. 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 /usr/X11R6/lib/X11/locale/iso8859-1/Compose. 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 Ç seja gerado pela seqüência 'C. Se não fizermos isso, seremos obrigados a digitar , sedo o dead_cedilla produzido pela combinação AltGR-=, o que não é nada confortável. Para incluirmos as novas regras, basta aplicar uma alteração à definição original. O arquivo Compose.patch pode ser obtido via WWW na página do Portuguese HOWTO. Para aplicar a atualização, copie-o para o diretório /usr/X11R6/lib/X11/locale/iso8859-1/, faça uma cópia de reserva do Compose original e invoque o utilitário patch: cp -p Compose Compose.backup patch < Compose.patch Caso você prefira não aplicar o ``patch'', um arquivo Compose pronto também é fornecido. Lembre-se de fazer cópia do original antes de substituí-lo! 5.4. Locale Para os usuários brasileiros, há mais uma alteração a fazer no X. Conforme vimos na seção ``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 (libc). Esta configuração também é reconhecida pela biblioteca de funções do X (Xlib) mas até a revisão 6.3, na qual é baseado o XFree86, não era incluida 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 /usr/X11R6/lib/X11/locale. Pegue o arquivo Xlocale.patch via WWW na página do Portuguese HOWTO. Para aplicar a atualização, copie-o para o diretório /usr/X11R6/lib/X11/locale, faça uma cópia de reserva dos arquivos a serem alterados e invoque o utilitário patch: cp -p compose.dir compose.dir.backup cp -p locale.alias locale.alias.backup cp -p locale.dir locale.dir.backup patch < Xlocale.patch Caso você prefira não aplicar o ``patch'', arquivos prontos também são fornecidos. Lembre-se de fazer cópias dos originais 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 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á incluida no fix-4. O X11R6.4 deverá ser a base para a versão 4 do XFree86. 5.5. Contornando os limites do X Conforme foi explicado na seção ``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. 5.5.1. Alteração da biblioteca Xlib 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'' (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 man ld.so man ldconfig man ldd man dlopen Thomas Quinot criou uma alteração para a biblioteca de funções do X (Xlib) introduzindo o tratamento de acentos na função XLookupString, Tudo que se tem a fazer é substituir o arquivo contendo esta bib­ lioteca por outro, que pode ser obtido via internet no endereço Existem duas versões do arquivo, uma para sistemas onde as bibliotecas do X suportam o uso seguro de 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 Xlib rode o seguinte comando: nm --dynamic /usr/X11R6/lib/libXext.so.6|grep _Xglobal_lock Se aparecer ``U _Xglobal_lock'' seu sistema suporta threads e o arquivo a obter é libX11-XF3.3.1-TS.tar.gz. Se não aparecer, seu sis­ tema não suporta threads e o arquivo a obter é 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 /usr/X11R6/libX11.so.6.1 para outro diretório, para preservá-lo. Não é suficiente renomeá-lo! Remova-o para um diretório cujo nome não esteja contido no arquivo /etc/ld.so.conf. Depois, mova o novo arquivo para o lugar do antigo e rode o programa ldconfig (isto deve ser feito pelo usuário root): 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 É 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 XF86Config. Este arquivo fica no diretório /etc (Slackware) ou /etc/X11 (Debian, Red Hat). Procure a seção ``Keyboard'' e inclua a opção ``XkbDisable'', conforme mostrado a seguir: Section "Keyboard" Protocol "Standard" XkbDisable EndSection A opção XkbDisable inabilita a extensão XKEYBOARD do servidor X, o que neste caso serve para sinalizar à função XLookupString que ela deve tratar os acentos. Se quisermos voltar ao comportamento normal, basta retirar a opcção do XF86Config. Configure o mapa de teclado do X conforme explicado nas seções anteriores deste documento. Para testar o resultado, rode o programa xedit e digite alguns caracteres acentuados. 5.5.2. Alteração no kernel do Linux Esta seção é baseada em contribuição enviada por Bruno Bar­ beri Gnecco e na documentação do diacrd. Podem haver ainda alguns erros e se alguém os detectar, por favor avise-me. 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 raw e cooked. Estes modos de operação podem ser mudados com o programa 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 tratamanto de acentos é feito parte pelo kernel, parte por um processo que roda em retaguarda (daemon) chamado diacrd, conforme descrito a seguir: · Uma modificação no kernel faz que todos os dados lidos do teclado sejam redirecionados para um dispositivo especial do sistema chamado /dev/rawkbd quando o teclado estiver em modo raw. · Os dados que o kernel grava no /dev/rawkbd são lidos pelo programa diacrd, que processa as seqüências acento-letra e reescreve no /dev/rawkbd os caracteres acentuados na forma de códigos de varredura (scancodes) que normalmente não existem no teclado. · O kernel lê no /dev/rawkbd os códigos gravados pelo diacrd e os passa à aplicação, que no caso é o servidor X. · O servidor X mapeia os códigos de varredura para caracteres. Um mapa de teclado especial permite então gerar as letras acentuadas. O diacrd pode ser obtido via FTP anônimo no endereço 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 root): · Obtenha o arquivo -.tar.gz correspondente a seu teclado. Extraia seu conteúdo, o que deverá criar um diretório chamado diacrd-. · Edite o arquivo diacrd.c e remova os comentários desejados, de acordo com suas preferências. Pode-se incluir capacidade de rodar o programa xmodmap e ejetar o CD-ROM sob controle do pressionamento de uma combinação de teclas. · Aplique a modificação no kernel. Para isto, execute o comando ``make patch-usr-src''. · Crie o dispositivo /dev/rawkbd executando o comando ``make rawkbd''. · Compile o diacrd e instale-o executando os comandos ``make'' e ``make install''. · Compile e instale o kernel, com os comandos cd /usr/src/linux make config make zlilo Para maiores informações sobre compilação/instalação do kernel, leia o Kernel-HOWTO, disponível via Internet nos repositórios do LDP men­ cionados na seção ``Onde encontrar a versão mais atual''. · Dê um ``reboot'' no computador. Verifique se o suporte ao dispositivo rawkbd foi instalado com sucesso com o comando dmesg | grep RAWKBD Deve aparecer RAWKBD interface for diacriticals translation enabled... e teste o dispositivo /dev/rawkbd com o comando printf "### TESTANDO ###" >> /dev/rawkbd Veja na seção ``Configuração do console'' como carregar um mapa com suporte à acentuação. O pacote diacrd vem com um arquivo chamada usintl.map, que corresponde ao nosso us+.map. Se seu teclado não for do tipo americano, use o pt.map ou abnt-2.map. · Substitua o arquivo /usr/X11R6/lib/X11/xkb/keycodes/xfree86 pelo arquivo fornecido junto com o diacrd. · Se tudo correr bem, rode o programa diacrd. Depois ative o X e use o xmodmap para carregar o mapa xmodmap.diacrd. 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 /etc/rc.d/rc.local (Slackware). 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. 5.5.3. Comparação entre as duas soluções 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 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. A necessidade de aplicar modificações no kernel para usar o diacrd não deixa de ser um risco, pois pode vir a criar incompatibilidades com versões mais recentes tanto do próprio kernel quanto com os utilitários do pacote kbd. Pode também ser difícil para um usuário novato envolver-se com coisas desse tipo. A solução via Xlib é 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 display remoto, seja um termial 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ê mecanismo, deixando a cargo da aplicação a definição de políticas. Exemplo da vantagem deste paradigma é poder usar as técnicas descritas na seção ``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. 6. Configuração dos vários programas 6.1. Aplicativos 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 é .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 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 /usr/lib/alguma- coisa ou /etc/alguma-coisa. 6.1.1. Bash (biblioteca GNU readline) Os programas que utilizam a biblioteca GNU readline para ler a linha de comando procuram por um arquivo chamado .inputrc no diretório ``HOME'' do usuário caso não exista uma variável de ambiente INPUTRC contendo o caminho para um arquivo de configuração. Coloque uma linha no seu arquivo /etc/profile contendo INPUTRC="/etc/inputrc" export INPUTRC e crie um arquivo /etc/inputrc contendo set meta-flag on set convert-meta off set output-meta on Outra alternativa é criar um arquivo .inputrc no diretório 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 arquivo 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 posi­ cionar o cursor no início e no fim da linha (teclas Home e End). Para maiores informações leia os manuais do bash e da biblioteca readline com os comandos man bash man readline 6.1.2. tcsh 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 ``Biblioteca libc''. 6.1.3. Joe Invoque o joe com a opção -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 /usr/lib/joe. 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 /etc/profile: alias joe='joe -asis' Joe pode emular os editores Pico, emacs e WordStar. Um arquivo joerc está disponível via WWW na página do Portuguese HOWTO, contendo configurações que permitem usar as teclas Home e End para movimentar o cursor para o início e fim da linha. 6.1.4. Less Coloque as seguintes linhas no seu arquivo /etc/profile: LESS="-MM -i" LESSCHARSET="latin1" LESSKEY="/etc/lesskey" LESSOPEN='|lesspipe.sh "%s"' export LESS LESSCHARSET LESSKEY LESSOPEN 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 /etc/lesskey, crie primeiro o arquivo /etc/lesskey.in contendo as seguintes linhas: # Termianl ANSI (console do Linux, XTerm, etc) \e[1~ goto-line \e[4~ goto-end \e[5~ back-screen \e[6~ forw-screen \e[7~ goto-line \e[8~ goto-end \e[A back-line \e[B forw-line # XTerm \eOH goto-line \eOF goto-end \e[H goto-line \e[F goto-end # Console Sun (testado com teclados Type 4/5) \e[214z goto-line \e[220z goto-end \e[216z back-screen \e[222z forw-screen # Arquivo seguinte/anterior :n next-file :N next-file :p prev-file Depois ``compile-o'' usando o comando # lesskey -o /etc/lesskey /etc/lesskey.in Crie o arquivo /usr/bin/lesspipe.sh contendo #!/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 ;; *.[1-9].gz | *.n.gz | *.man.gz) FILE=`file -Lz "$1" | cut -d ' ' -f 2` if [ "$FILE" = "troff" ]; 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 ;; *.[1-9] | *.n | *.man) FILE=`file -L "$1" | cut -d ' ' -f 2` if [ "$FILE" = "troff" ]; then groff -s -p -t -e -Tlatin1 -mandoc "$1" fi ;; esac Não esqueça de torná-lo executável: chmod 755 /usr/bin/lesspipe.sh Na distribuição Debian já existe um script /usr/bin/lesspipe (note a ausência da extensão .sh). Essa parte do lesspipe.sh também não tem nada a ver com acentuação, mas não deixa de ser útil. 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, etc. Existe um RPM+Slackware Mini-HOWTO que explica como fazer isso. 6.1.5. ls Acrescente a seguinte linha ao arquivo /etc/profile : alias ls="ls -N" ou alias ls="ls -b" Se a sua distribuição de Linux usa o GNU ls (todas as que eu conheço usam) basta acrescentar ao arquivo /etc/profile ou .profile as seguintes linhas: # ----------------------------------------- # Set up the color-ls environment variables # ----------------------------------------- if [ "$SHELL" = "/bin/bash" -o \ "$SHELL" = "/bin/sh" ]; then eval `dircolors -b` elif [ "$SHELL" = "/bin/zsh" ]; then eval `dircolors -z` elif [ "$SHELL" = "/bin/ash" ]; then eval `dircolors -s` elif [ "$SHELL" = "/bin/ksh" -o \ "$SHELL" = "/bin/pdksh" ]; then eval `dircolors -k` elif [ "$SHELL" = "/bin/csh" -o \ "$SHELL" = "/bin/tcsh" ]; then eval `dircolors -c` else eval `dircolors -b` fi Se o seu shell é o csh ou tcsh, acrescente a seguinte linha ao arquivo /etc/csh.login ou ~/.login: alias ls 'ls --color' 6.1.6. Man, groff, troff Pode-se usar a opção de linha de comando -Tlatin1 para o groff, mas é mais simples colocar uma linha no seu arquivo /etc/profile contendo GROFF_TYPESETTER="latin1" export GROFF_TYPESETTER Para maiores informações leia o manual do groff com o comando man groff O comando man usa o 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 /usr/lib/man.config e alterar as definições NROFF e NEQN, trocando a opção ``-Tascii'' para ``-Tlatin1'': NROFF /usr/bin/groff -Tlatin1 -mandoc NEQN /usr/bin/geqn -Tlatin1 ou, se usarmos a variável de ambiente GROFF_TYPESETTER, podemos sim­ plesmente eliminar a opção -Tascii. Na distribuição Debian não é necessário fazer nenhuma configuração para o man, bastando configurar GROFF_TYPESETTER. 6.1.7. Midnight Comander (mc) No menu Options sub-menu 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. 6.1.8. Minicom Coloque uma linha no seu arquivo /etc/profile contendo MINICOM="-m -c on" export MINICOM 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 man minicom Mais uma dica sobre o Minicom: para fazê-lo usar usar corretamante a tecla Meta para ativação dos comandos rodando dentro de um xterm, deve-se invocá-lo com a opção ``-m'' e passar a opção ``-xrm "*eight­ BitInput: false"'' para o xterm. Se usarmos o rxvt então o minicom deve ser chamado com a opção ``-m'' e a tecla de ativação dos comandos será Alt. Fiz uma adaptação no script xminicom que pode ser obtido via WWW na página do Portuguese HOWTO. Segundo Arnaldo Carvalho de Melo acme@conectiva.com.br as versões mais recentes do minicom suportam internacionalização. Suporte para o Português foi acrescentado pelo pessoal da Conectiva. Um pacote RPM (para a distribuição Red Hat) pode ser obtido via FTP anônimo em e o código fonte na página do Jukka (atual mantenedor do Minicom) em 6.1.9. nn Alô, alô, alguém usa nn? Informação mais atualizada será bem recebida. Acrescente a seguinte linha ao arquivo ~/.nn/init: set data-bits 8 6.1.10. Emacs O pai de todos os editores pode ser configurado criando-se um arquivo chamado .emacs no diretório do usuário, contendo as seguintes linhas: (set-input-mode nil nil 1) (standard-display-european t) (require 'iso-syntax) Para tornar esta configuração global, na distribuição Slackware coloque os comandos no arquivo /usr/lib/emacs/site-lisp/site-start.el. Na distribuição Debian o emacs executa todos os scripts contidos no diretório /etc/emacs/site-start.d ao ser carregado. Tudo que se tem a fazer é colocar esses comandos em um arquivo chamado, por exemplo, 01portugues-emacs.el. Se o estimado leitor, assim como eu, não se agrada do tratamento dado pelo Emacs às teclas de Delete, Home e End, aproveite a oportunidade e acrescente ao mesmo arquivo o seguinte: (global-unset-key [backspace] ) (global-set-key [backspace] 'delete-backward-char) (global-unset-key [delete] ) (global-set-key [delete] 'delete-char) (define-key global-map [home] 'beginning-of-line) (define-key global-map [C-home] 'beginning-of-buffer) (define-key global-map [end] 'end-of-line) (define-key global-map [C-end] 'end-of-buffer) Arquivos de configuração prontos podem ser obtidos via WWW na página do Portuguese HOWTO. Para Slackware, há um site-start-emacs.el, que deve ser copiado para o diretório /usr/lib/emacs/site-lisp com o nome de site-start.el. Para Debian, há um 01portugues-emacs.el que deve ser copiado para o diretório /etc/emacs/site-start.d. 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. 6.1.11. Xemacs (antigo lucid emacs) Agradeço a colaboração de Judson Santos Santiago e Goedson Teixeira Paixão que ajudaram a identificar os problemas com o Xemacs. O 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 circumflexo. Este problema não ocorre se for usada a biblioteca Xlib aterada por Thomas Quinot, mencionada na seção ``Cotornando os limites do X'', mas mesmo que não a usemos, basta colocar os seguintes comandos no seu arquivo de configuração .emacs: ;; Ajuste para fazer o acento circunflexo funcionar ;; Contribuição de Goedson Teixeira Paixao (require 'x-compose) (define-key global-map 'dead-circumflex compose-circumflex-map) Na distribuição Debian 2.0 o Xemacs 20.4 executa todos os scripts contidos no diretório /etc/xemacs20/site-start.d ao ser carregado. Tudo que se tem a fazer é colocar esses comandos em um arquivo chamado, por exemplo, 01portugues-xemacs.el. Não é necessário instalar o xemacs20-mule, que possui extensões para línguas que não usam o alfabeto romano. Os pacotes a instalar são os seguintes: · xemacs20-bin · xemacs20-nomule · xemacs20-support · xemacs20-supportel Se você instalou o Xemacs no Slackware ou outro Unix, à moda antiga (dowload, compilação, instação), então o arquivo a alterar é o site- start.el, que deve estar no diretório /usr/lib/xemacs/site-lisp ou /usr/local/lib/xemacs/site-lisp, 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 delete-key-deletes-forward. Para ativar este comportamento coloque no seu arquivo .emacs uma linha contendo (setq delete-key-deletes-forward t) Arquivos de configuração prontos podem ser obtidos via WWW na página do Portuguese HOWTO. Para Slackware, há um site-start-xemacs.el, que deve ser copiado para o diretório correto com o nome de site-start.el. Para Debian, há um 01portugues-xemacs.el que deve ser copiado para o diretório /etc/xemacs20/site-start.d. 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 Xemacs. 6.1.12. flex Especifique a opção -8 se o parser a gerar necessitar de ler dados de 8 bit. 6.1.13. Pine e Pico Para o Pine utilizar o conjunto de caracteres Latin 1, coloque uma linha no arquivo .pinerc, no diretório do usuário, contendo character-set=ISO-8859-1 ou crie um arquivo geral de configuração contendo tal linha. Esse arquivo normalmente é /usr/local/lib/pine.conf ou /usr/lib/pine.conf A configuração também pode ser feita usando o próprio programa. No 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 man pine 6.1.14. TeX, LaTeX O pacote Babel, criado por Johannes Braams provê suporte a um grande número de línguas para o LaTeX. Normalmente apenas o suporte a separação silábica para Inglês e Alemão são carregados. Para configurar a separação silábica no teTeX, execute o utilitário texconfig, que na distribuição Slackware deve ser o programa /usr/lib/teTeX/bin/texconfig e na Debian é /usr/bin/texconfig. Selecione a opção ``HYPHEN''. O editor de texto será carregado, para editar o arquivo language.dat. Procure uma linha que começa por %portuges e remova o %. 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 aparecerão na tela). O editor carregado normalmente é o vi. Se o seu editor predileto for outro, crie uma variável de ambiente chamada EDITOR contendo o nome desse programa. Normalmente a introdução de caracteres acentuados no texto exige o uso de seqüências de escape bastante trabalhosas. Para gerar um ``ö'' deve-se digitar \"o. Com babel pode-se digitar apenas "o, o que não deixa de ser inconveniente para ler o fonte do documento. Há um pacote chamado 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 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. Para testar a nova configuração copie o seguinte trecho para um arquivo chamado, digamos, exemplo.tex: \documentclass[a4paper]{article} \usepackage[latin1]{inputenc} \usepackage[portuges]{babel} \begin{document} \title{Linux Portuguese-HOWTO} \author{Carlos Augusto Moreira dos Santos} \date{17 de julho de 1998} \maketitle \section{Introdução} Este documento pretende ser um guia de referência de configuração do \textbf{Linux} 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{document} 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 exemplo.tex na página do Portuguese HOWTO. Para processá-lo, use o comando latex, conforme mostrado a seguir: 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/generic/babel/babel.sty (/usr/lib/teTeX/texmf/tex/generic/babel/portuges.ldf (/usr/lib/teTeX/texmf/tex/generic/babel/babel.def))) (exemplo.aux) [1] (exemplo.aux) ) Output written on exemplo.dvi (1 page, 892 bytes). Transcript written on exemplo.log. A mensagem ``Hyphenation patterns for english, german, portuges, loaded.'' indica que a configuração foi bem sucedida. Se o seu com­ putador está rodando o X o documento formatado poderá ser visto com o comando xdvi exemplo.dvi Há um problema com o pacote algorithm do LaTeX, que não é suportado pelo babel, fazendo que a lista de algorítmos 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 \usepackage{algorithm} o seguinte: \renewcommand{\ALG@name}{Algor\'{\i}tmo} \renewcommand{\listalgorithmname}{Lista de Algor\'{\i}tmos} Outro problema com algumas versões do teTeX é o ambiente proof, encontrado nas classes amsbook, amsart, etc. cujo título sai como ``Proof.''. Para corrigir isso, coloque no preâmbulo de seu documento o comando \renewcommand{\proofname}{Demonstra\c{c}\~ao} Usuários do LyX podem incluir esses comandos no preâmbulo do documento usando o menu Layout/Latex Preamble. Pode-se resolver o problema alterando o arquivo 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. Para os interessados, coloquei à disposição na página do HOWTO um arquivo chamado portuges.ldf.patch que criei para o teTeX em minha máquina (Slackware). Para aplicar a atualização, copie-o para o diretório /usr/lib/teTeX/texmf/tex/generic/babel (Slackware), faça uma cópia de reserva do portuges.ldf original e invoque o utilitário patch: cp -p portuges.ldf portuges.ldf.backup patch < portuges.ldf.patch Use o patch por sua conta e risco! Se você deixar o backup no diretório original ele será incluído no arquivo ls-R da próxima vez que o programa texhash for executado. Isso não fará mal algum, mas pode-se mover o backup para algum lugar seguro (eu uso /usr/backup). 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 tex-br-request@listas.furg.br. Esta lista é administrada por Rafael Rodrigues Obelheiro . 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 . 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 . 6.1.15. Ispell Dicionários para o Português de Portugal podem ser obtidos via WWW na página do Projecto Natura em . Para o Brasil, há uma versão compilada pelo Ueda: . 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. 6.1.16. LyX 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 Tendo o LyX instalado, é muito fácil criar documentos com acentuação em Português. Seguindo as seguintes regras: · Se o teclado foi configurado para ter 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 'c, pois o LyX vai gerar um c com acento, o que nos obriga a usar a sequencia Compose-vírgula-c. · Se o teclado não foi configurado para ter dead keys ainda assim é possível acentuar no LyX. Selecione o menu Options/Keyboard. Na caixa de diálogo ``Key Mappings'', selecione no ítem Language/Primary a opção ``American''. Com isto o LyX fará a composição dos caracteres acentuados usando regras semelhantes às das dead keys. · A vírgula será tratada como cedilha. Para obter um Ç digite ,C e para obter uma vírgula digite ,,. Cuidado! A seqüência , gerará uma cedilha isolada e não uma vírgula! · ~ ^ ' e ` serão tratados como acentos. Vale a mesma regra anterior: para obter apenas o acento, pressione a tecla duas vezes consecutivas. · : ; . / ? e - também serão tratados como acentos. ?a gerará um å e assim por diante. 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 menu File/New. Depois selecione o menu Layout/Document. Na caixa de diálogo ``Document Layout'' selecione no ítem Language a opção ``brazil'' ou ``portuges'' (sem o u mesmo); no ítem Encoding selecione ``latin1''. Veja a observação sobre o pacote algorithm na seção ``TeX, LaTeX'' Uma observação final sobre o LyX: até a versão 0.12 ele 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 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: . 6.1.17. Fortune 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 fortune cookies, daí o nome). Eis algumas mensagens típicas: 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. Tudo que o programa faz é escolher aleatoriamente uma mensagem em um repositório mantido no diretorio /usr/games/fortunes (Slackware) ou /usr/share/games/fortunes (Debian). Neste diretório existem diversos arquivos com as ``fortunas'' e um arquivo índice para cada um deles, que possui a extensão .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 %. Veja o trecho a seguir: 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... Tudo que temos a fazer é criar um arquivo com as fortunas chamado, digamos fortunes com o formato descrito acima. Depois basta usar o programa strfile para gerar o índice: strfile fortunes e um arquivo chamado 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 simples­ mente renomeá-lo para fortunes-en (de English) e criar outro vazio. Eu coletei algumas fortunas e as coloquei no arquivo 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 if [ -x /usr/games/fortune -a ! -e $HOME/.hushlogin ]; then echo /usr/games/fortune echo fi Uma última informação: se o nome de um arquivo termina com o sufixo -o o fortune só o consulta se for chamado com a opção -o. Esses arquivos são os que contém mensagens cujo conteúdo pode ser considerado ofen­ sivo por algumas pessoas, tais como Só não mando a sogra pro inferno, com pena do Diabo. Claro que existem coisas muito mais ofensivas por aí, mas este é um Linux HOWTO e não queremos realmente ofender ninguém, certo? 6.1.18. Jdk (inclui ICQJava) 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. 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: · Entre no diretório jdk1.1.5/lib (no meu caso, /jdk1.1.5/lib). · Copie o arquivo font.properties.hu sobrescrevendo o font.properties atual (lembre-se de fazer backups!). · 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?) 6.2. Rede local e Internet 6.2.1. FTP (File Transfer Protocol) Existem dois modos de transferencia de arquivos: binary e ASCII, sendo este utilizado para textos. Deve-se tomar cuidado ao transferir um arquivo, pois o modo de transfêrencia ASCII remove o oitavo bit de cada caracter transmitido, o que terá como consequencia a perda de todos os caracteres acentuados. Desta forma é aconselhado o envio de documentação em modo 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 reconhee 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 bin antes de um get quando quiser que a transferência seja binária! 6.2.2. Correio eletrônico 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 en 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 mail, 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 man uuencode man uudecode 7. Ficheiros necessários Atenção! Os mapas de teclado para o X fornecidos mapeiam a função das teclas segundo a lista a seguir: · Alt esquerdo: Alt · Alt direito: AltGr · Control esquerdo: Control · Control direito: Control · ScrollLock: ScrollLock · Janela esquerda: Meta · Janela direita: Compose · Menu: Menu Se o seu teclado não possuir as teclas 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ícip das linhas que definem os 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. Podem ser gerados mapas para outros tipos de teclado, mas etses são os únicos aos quais o autor tem acesso no momento. As versões anteriores deste HOWTO incluiam a listagem completa dos mapas, mas isto tornava o texto final muito longo. A partir da versão 2.1 eles podem ser obtidos via WWW em um dos repositórios da página do Portuguese HOWTO: · · 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 Windows 95. As instruções para instalação estão nas seções ``Configuração do console'' e ``Configuração do X''. 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 'C. No console pode-se fazê-lo com a seqüência AltGR- C. O trema é gerado pela tecla ". Para gerar as aspas duplas é necessário digitar a seqüência " e no console pode-se usar ""; opcionalmente pode-se usar AltGR-", o que não é uma solução muito confortável, mas funciona... Testados com teclados de várias marcas (e alguns sem marca :-). 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 « e ». Não são muito confortáveis, porque para gerar o símbolos @ [ ] { } e o trema é necessário usar a tecla Alt-GR. Testado com um teclado da marca Key Tronic. 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. 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. 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 Type 4, os 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. 8. Informações Adicionais 8.1. Leituras recomendadas Os Linux HOWTO aqui mencionados 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 /usr/doc/faq/howto e na Debian o diretório é /usr/doc/HOWTO. Eles também podem ser obtidos via WWW em . The Linux Keyboard and Console HOWTO Este documento 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. The Linux XFree86 HOWTO Descreve como obter, instalar e configurar o XFree86. Pode ser obtido em . Todas as ditribuições de Linux já vêm com pacotes do XFree86 prontos para instalar, mas as informações sobre configuração podem ser muito úteis. Dead keys under Linux and X11 Este texto de André D. Balsa, disponível via WWW em discute os aspectos de internacionalização no X, além de conter referências para outros documentos que tratam de internacionalização. Dead keys under X11 A versão em inglês do artigo de Thomas Quinot sobre a modificação da Xlib para dar suporte à acentuação independente da aplicação. Está disponível via WWW em /usr/src/linux/Documentation/unicode.txt Este arquivo de documentação do kernel 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 planeta ou admirador de Guerra nas Estrelas. Depois das recentes aventuras espaciais do Linux, não duvido de mais nada... /usr/src/linux/include/linux/keyboard.h ou /usr/include/linux/keyboard.h" Este arquivo 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 normalmente possuem um pacote apenas com os arquivos include e outros com o resto dos programas-fonte do kernel. /usr/X11R6/include/X11/keysymdef.h ou /usr/include/X11/keysymdef.h" Este arquivo 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. 8.2. Fontes de informação sobre Linux em Português Grupo de Investigação Linux Grupo de usuários de linux da Universidade do Minho, em Portugal que pode ser visitado em . Grupo de Utilizadores de Linux do ISCTE Pode ser visitado em . LDP-br Iniciativa coordenada por Marcelo Malheiros . Pretende traduzir para o Português os documentos do LDP (ou pelo menos parte deles). O projeto esteve congelado durante certo tempo, mas desde setembro de 1988 foi retomado. O endereço é . Linux UNICAMP Servidor da Universidade Estadual de Campinas, Brasil, contendo informações sobre Linux. Pode ser visitado em . Projeto Linusp Desenvolvido na Universidade de São Paulo, Brasil, coordenado por Jorge L. deLyra . Pode ser visitado em . 8.3. Versões de software testadas Todas as informacões presentes neste documento foram testadas nas seguintes versões de software: · Distribuições Slackware 3.2 (muito modificada) e Debian 2.0 · XFree86 versões 3.3 e 3.3.2 · Fvwm95 versão 2.0.43 · Rxvt versão 2.4.5 · Kernel versões 2.0.33 e 2.0.34 · Kbd versões 0.92 e 0.94 · GNU emacs versões 19.34 e 20 · Less versões 321 e 332 · GNU Bash versões 1.14.7 e 2.01.1 · tcsh versões 6.07.02 e 6.07.06 · LyX 0.12.0 e XForms 0.88 · Joe 2.8 · Pine 3.96 · Pico 2.9 · teTeX versões 0.4 e 0.9-9 · XEmacs versões 20.3 e 20.4 8.4. Futuro Futuras adições a este documento: · Suporte para outras distribuições (mencionar a Conectiva). · Informações sobre compartilhamento de arquivos em rede usando NFS, SAMBA e Mars-NWE. · Incluir informações sobre configuração de toolkits: Qt, GTK, XForms, Tk (Tcl) e os baseados em Xt, como Motif, Lesstif, Xaw (*international ainda não está funcionando). · Incluir uma seção sobre desenvolvimento de programas. · Aumentar o número de colaboradores não só no Brasil, mas em Portugal e outros países de língua portuguesa. · Melhorar as referências ao Ispell e usá-lo para corrigir o próprio HOWTO :-). · Incluir mais informações sobre X/Open, XPG4 e POSIX, ou pelo menos ponteiros para elas. 8.5. Termos e Condições 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. Excepções a estas regras poderam ser obtidas. Para tal, dever-se-á contactar o coordenador dos documentos HOWTO do Linux no endereço linux-howto@sunsite.unc.edu. 8.6. Garantia (inexistência de) e nota de responsabilidade 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. 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 não reclame para mim! 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. Dúvidas, sugestões, correções e garrafas de bom vinho devem ser enviadas para Carlos A M dos Santos Avenida Ildefonso Simões Lopes, 2791 CEP 96.060-290, Pelotas, RS, Brasil Telefone (0532) 23-2525 Fax (0532) 23-4814 e-mail: casantos@cpmet.ufpel.tche.br ``Flames'' terão o destino costumeiro: /dev/null. 8.7. Agradecimentos 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: 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/~jcrp/) não existe mais. Lembro-me de tê-la visto, anos atrás. Greg Hankins Ex-coordenador dos Linux HOWTO, por me permitir assumir a manutenção deste documento e fornecer as primeiras dicas sobre autoria de documentos SGML. Os seguintes agradecimentos são do primeiro autor: Carlos Ferreira Pela luta que trava pela defesa da lingua portuguesa, bem patente na sua Página Portuguesa disponivel no URL: http://lila.dei.uc.pt/~cjrf/po/ João C. Silva Pelo apoio e incentivo e criticas (bem como por me deixar testar os meus conhecimentos no SEU computador). José Bandeira Autor dos ficheiros port.map e xmodmap. Pelo seu apoio e por ter escrito alguma da documentação mais elucidativa que eu já li sobre o assunto. 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 incluidas neste texto. Se alguém foi esquecido, por favor desculpe a falha. Arnaldo Carvalho de Melo Bruno Barberi Gnecco Cees de Groot Francisco Semeraro Goedson Teixeira Paixao Jorge Carvalho Pinto Judson S Santiago Ken MacLeod Klaus Steding-Jessen Lamarque Vieira Souza Marcos Vinicius Lannes dos Santos Rafael Caetano dos Santos Rafael Rodrigues Obelheiro Ricardo Y. Igarashi Wanderlei Antonio Cavassin EOT.