Portuguese-HOWTO
casantos@cpmet.ufpel.tche.br>
v3.2, 24 May 1999
Este documento pretende ser um guia de referecircncia de configuraccedilatildeo do Linux e seus programas, teclados e fontes de caracteres, permitindo sua utilizaccedilatildeo mais confortaacutevel por pessoas que falem a Liacutengua Portuguesa.
Agrave semelhanccedila de outras liacutenguas faladas na Europa, a Liacutengua Portuguesa tem caracteriacutesticas especiais, como a utilizaccedilatildeo de caracteres acentuados, que tornam o seu suporte difiacutecil, pouco intuitivo ou ateacute mesmo impossiacutevel, por parte do software utilizado nos nossos computadores.
Nossa liacutengua assume particularidades em cada um dos paiacuteses em que eacute falada e mesmo dentro de um uacutenico paiacutes como o Brasil, de dimensotildees continentais e com influecircncias culturais de muitos outros povos. Este documento foi originalmente escrito por um portuguecircs, mas agora eacute mantido por um brasileiro. Haacute uma mistura de sotaques que deve se manter por um bom tempo, pois natildeo haacute razatildeo para alterar o texto original senatildeo para fazer de adiccedilotildees e correccedilotildees, ateacute por respeito ao primeiro autor. Termos ``estrangeiros'' desnecessaacuterios foram substituiacutedos por correspondentes da Liacutengua Portuguesa, preservando-se apenas os que jaacute fazem parte do jargatildeo da informaacutetica.
Este HOWTO eacute um guia de referecircncia de configuraccedilatildeo do sistema operativo Linux e seus programas, teclados e fontes de caracteres, permitindo sua utilizaccedilatildeo mais confortaacutevel por pessoas que falem a Liacutengua Portuguesa. Como os programas mais antigos natildeo foram desenhados com suporte a caracteres acentuados ou internacionalizaccedilatildeo, agraves vezes eacute preciso usar algum artifiacutecio que permita contornar o problema, mas o resultado nem sempre eacute totalmente satisfatoacuterio e em alguns casos chega ser frustrante. As dificuldades encontradas centram-se essencialmente em torno de quatro pontos:
escrita de joao em vez da sua forma correcta: joatildeo; *
normalmente agrave correcta localizaccedilatildeo das teclas, nada mais; *
valores monetaacuterios; *
outra liacutengua que natildeo o Inglecircs, que eacute a liacutengua original da maioria desses programas. *
Versotildees anteriores do Portuguese HOWTO concentravam-se em contornar as duas primeiras dificuldades mencionadas, de forma a fazer que, dentro do possiacutevel, tanto o sistema operativo como os programas nele utilizados aceitassem os caracteres acentuados e usassem os teclados com suporte para o Portuguecircs. Embora esse objetivo ainda seja perseguido, os problemas de teclado e caracteres jaacute tecircm soluccedilotildees satisfatoacuterias, pelo menos para as aplicaccedilotildees mais usadas. As proacuteximas versotildees deveratildeo se dedicar mais aos dois uacuteltimos problemas.
O texto conteacutem uma jaacute natildeo tatildeo breve discussatildeo sobre o tratamento do teclado e das fontes de caracteres do console pelo Linux, bem como do suporte a vaacuterias liacutenguas nacionais. O Sistema de Janelas X tambeacutem eacute discutido, fazendo-se uma comparaccedilatildeo entre ele e o modo de texto. Por fim, satildeo fornecidas instruccedilotildees para a configuraccedilatildeo do sistema operativo e de diversos aplicativos importantes.
O documento tem se tornado menos slackwariano, incluindo cada vez mais informaccedilotildees relativas a outras distribuiccedilotildees. Slackware e Caldera ainda se baseiam na versatildeo 5 da biblioteca de funccedilotildees do sistema para Linux (libc), enquanto Debian, Red Hat, !TurboLinux?, S.u.S.E e Stampede jaacute suportam a versatildeo 6 (que na verdade eacute a glibc versatildeo 2). Esta nova versatildeo da biblioteca estaacute um passo adiante no suporte a internacionalizaccedilatildeo e localizaccedilatildeo. A partir da versatildeo 3.2 do Portuguese-HOWTO as particularidades de cada distribuiccedilatildeo seratildeo destacadas quando houver necessidade. A tentativa de tornar Debian uma distribuiccedilatildeo ``de referecircncia'' a partir da versatildeo 3.0 do HOWTO fracassou miseravelmente porque o nuacutemero de diferenccedilas entre as distribuiccedilotildees eacute muito grande.
A intenccedilatildeo original de natildeo tentar concentrar toda a informaccedilatildeo em um uacutenico texto, tratando apenas de alguns temas essenciais e fornecendo referecircncias para outras fontes, tambeacutem fracassou. O HOWTO em sua versatildeo 3.1 jaacute alcanccedilava 38 paacuteginas impressas em formato A4, o que estaacute longe de poder ser chamado de sucinto. As principais razotildees para tal gigantismo satildeo a necessidade de discutir diferenccedilas entre as distribuiccedilotildees e a necessidade de fornecer informaccedilotildees mais detalhadas sobre aplicativos.
Excetuando-se aspectos muito especiacuteficos do Linux, como a configuraccedilatildeo do modo texto e do kernel, a maioria das informaccedilotildees contidas neste documento pode ser aplicada a outros sistemas Unix. Exemplos satildeo as configuraccedilotildees do Sistema de Janelas X e de vaacuterios aplicativos, que foram aplicadas em Solaris 2.{5,6,7} e Digital UNIX 3.2. Os mapas de teclado para terminais X e estaccedilotildees de trabalho Sun foram criados e satildeo usados em maacutequinas que rodam Solaris. O documento poderaacute um dia se tornar o ``Unix Portuguese HOWTO'', embora no momento natildeo se tenha intenccedilatildeo ou meios de fazecirc-lo.
Os Linux HOWTO fazem parte do Projeto de Documentaccedilatildeo Linux (Linux Documentation Project -- LDP). Os documentos do LDP satildeo mantidos em servidores da Universidade da Carolina do Norte (UNC) e do Instituto de Tecnologia de Massachusetts (MIT), nos Estados Unidos da Ameacuterica, e podem ser obtidos via FTP anocircnimo nos seguintes endereccedilos:
*
ftp://metalab.unc.edu/pub/Linux/docs/HOWTO (conhecida
anteriormente como sunsite.unc.edu).
*
*
ftp://tsx-11.mit.edu/pub/linux/docs/HOWTO
*
Pode-se tambeacutem folhear os documentos HOWTO em formato HTML no endereccedilo
*
http://metalab.unc.edu/LDP/HOWTO
*
Muitas localidades mantecircm coacutepias desses documentos. Deve-se dar preferecircncia ao acesso agrave coacutepia mais proacutexima, para economizar o precioso traacutefego internacional na Internet e tambeacutem evitar a sobrecarga da maacutequina metalab.unc.edu. Uma lista completa dessas localidades pode ser obtida em
*
http://metalab.unc.edu/LDP/mirrors.html
*
Eis uma lista dos endereccedilos recomendados:
Brasil
*
http://www.conectiva.com.br/LDP/
*
*
http://www.opensite.com.br/linux/
*
*
http://taubate.valley-bbs.com.br/LDP/
*
*
http://linux.unicamp.br/docs/
*
Portugal
*
http://gil.di.uminho.pt/mirrors/LDP/
*
*
http://www.sc.uevora.pt/LDP/
*
*
http://lwp.ualg.pt/docs/LDP/
*
*
http://linux.global-one.pt/LDP/
*
*
http://linux.ispgaya.pt/LDP/
*
Os Linux HOWTO estatildeo disponiacuteveis em diversos formatos: texto simples,
gerados usando o SGMLtools (maiores informaccedilotildees em
http://www.sgmltools.org/).
A paacutegina oficial do Linux Portuguese-HOWTO, assim como os diversos arquivos de configuraccedilatildeo do sistema e programas aplicativos mencionados no texto, podem ser encontrados nos seguintes endereccedilos:
http://linusp.usp.br/casantos/
*
http://linux.fe.up.pt/howto/
*
Toda a formataccedilatildeo deste HOWTO, incluindo a numeraccedilatildeo das seccedilotildees eacute feita pelo SGMLtools. Por isso, ao enviar sugestotildees ou correccedilotildees, mencione os tiacutetulos das seccedilotildees onde as alteraccedilotildees sugeridas devem ocorrer e natildeo os nuacutemeros. Nunca refira-se a um paraacutegrafo como sendo ``o terceiro da seccedilatildeo 3.1''; cite as palavras inicias do trecho a ser modificado.
Envie sugestotildees e correccedilotildees via correio eletrocircnico em texto simples, opcionalmente com acentuaccedilatildeo no coacutedigo ISO-8859-1. Se o texto natildeo for composto em um sistema *NIX, certifique-se de usar a codificaccedilatildeo correta. Todas as mensagens recebidas seratildeo lidas, mas nem todas receberatildeo resposta direta, devido agrave falta de tempo para tanto.
Natildeo envie documentos no formato proprietaacuterio 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 viacutedeo ou rede natildeo seratildeo respondidas. Para esse tipo de consulta eacute aconselhaacutevel procurar uma lista de discussatildeo sobre Linux em Portuguecircs ou acompanhar os grupos de discussatildeo de Linux na USENET comp.os.linux.*.
``Flames'' teratildeo o destino costumeiro: /dev/null.
Um conjunto de caracteres eacute definido de acordo com os siacutembolos constantes no alfabeto utilizado para escrita em uma ou mais liacutenguas. A Organizaccedilatildeo Internacional de Normas (International Standards Organization - ISO) padronizou atraveacutes da norma ISO-8859 vaacuterios 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 coacutedigos zero a 127 correspondem ao conjunto ASCII (American Standard Code for Information Interchange) e os coacutedigos 160 a 255 satildeo usados para caracteres nacionais.
Para a liacutengua portuguesa, recomenda-se o uso do conjunto ISO-8859-1, que compreende o alfabeto latino e letras acentuadas usadas pelas liacutenguas do oeste da Europa e Ameacuterica. Este conjunto de caracteres tambeacutem eacute frequentemente chamado de Latin-1 ou ISO Latin-1.
Um padratildeo mais recente eacute o Unicode, definido pela norma ISO-10646, que permite definir caracteres cuja representaccedilatildeo interna no computador utiliza mais de um byte (ou octeto na nomenclatura ISO). Todas as versotildees mais recentes de sistemas Unix suportam Unicode (ou pelo menos seus fabricantes alegam suportar).
Aleacutem dos caracteres alfanumeacutericos e sinais de acentuaccedilatildeo, eacute possiacutevel tambeacutem gerar sinais semigraacuteficos para desenho de linhas e bordas. Esses sinais podem aproveitar coacutedigos natildeo utilizados pelo conjunto oficial, tornando-os natildeo portaacuteveis.
O Linux foi desenhado internamente de modo a facilitar a sua faacutecil configuraccedilatildeo e extensatildeo em tempo de execuccedilatildeo, natildeo constituindo o tratamento do teclado e fontes de caracteres excepccedilatildeo. Ele possui uma implementaccedilatildeo ``niacutevel 1'' do padratildeo Unicode. 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 estaacute configurado corretamente, conforme mostrado na seccedilatildeo Man, groff, troff.
Alguns sistemas operativos, tais como MacOS, Microsoft Windows e NeXT, possuem interfaces graacuteficas proacuteprias. No Linux, assim como na maioria dos sistemas compatiacuteveis com Unix, eacute de uso corrente um ambiente graacutefico criado para ser ``multiplataforma'': o X Window System, que tambeacutem foi projetado para suportar diversos conjuntos de caracteres, idiomas e formatos de teclado, mas ainda natildeo suporta totalmente o padratildeo Unicode e sim uma extensatildeo do ISO-8859.
A rigor o X Window System natildeo eacute uma interface graacutefica com o usuaacuterio, mas a combinaccedilatildeo de um protocolo de comunicaccedilatildeo com uma interface com programas aplicativos (API) sobre a qual se construiacuteram vaacuterias interfaces graacuteficas. Tanto o protocolo quanto o Sistema de Janelas definem um conjunto de mecanismos e natildeo poliacuteticas (elementos caracteriacutesticos da poliacutetica de uma Interface Graacutefica com o Usuaacuterio satildeo menus, bototildees e caixas de diaacutelogo). O uso do termo ``XWindows eacute incorreto e deve ser evitado, dando-se preferecircncia ao nome geneacuterico ``X.
Existem muitas semelhanccedilas entre os dois ambientes. Ambos se baseiam em padrotildees internacionais para definiccedilatildeo de conjuntos de caracteres. Tanto no X quanto no console do Linux pode-se definir uma tecla chamada Compose cujo pressionamento seguido de duas outras geraraacute o caracter correspondente. Assim sendo, o pressionamento da sequumlecircncia compose-,-c geraraacute um c cedilhado.
O tratamento do console eacute feito diretamente pelo sistema operativo e aplicaccedilotildees comuns natildeo se envolvem com o processamento dos coacutedigos de varredura do teclado, recebendo um caracter ou uma sequumlecircncia 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 -- satildeo controlados por uma aplicaccedilatildeo especial chamada servidor X. O pressionamento de uma tecla gera uma mensagem (chamada de evento) que eacute passada pelo servidor X agrave aplicaccedilatildeo cliente. Haacute um programa muito uacutetil chamado xev que permite observar cada evento a ele transmitido. Cliente e servidor se comunicam via rede usando um conjunto de regras chamado protocolo X e podem rodar em maacutequinas diferentes. A maacutequina onde roda o servidor eacute chamada estaccedilatildeo de trabalho ou terminal X e a maacutequina onde roda a aplicaccedilatildeo (programa cliente) tambeacutem eacute chamada de cliente.
Foge ao escopo deste texto a discussatildeo mais profunda do tratamento de eventos no X. Para maiores informaccedilotildees, sugere-se a consulta aos documentos mencionados na seccedilatildeo Leituras recomendadas, mas eacute importante esclarecer que o evento enviado pelo servidor ao cliente natildeo conteacutem o coacutedigo numeacuterico da tecla, chamado keycode na terminologia do X. Ao inveacutes disso, eacute enviado um siacutembolo, chamado keysymbol ou keysym, obtido pela consulta a uma tabela de conversatildeo mantida na memoacuteria do servidor. Esta tabela pode ser modificada total ou parcialmente a qualquer momento por meio de requisiccedilotildees definidas no protocolo X.
Existe um programa chamado xmodmap capaz de ler um arquivo contendo uma tabela de conversatildeo keycode-->keysym e enviaacute-la, tambeacutem na forma de mensagens no protocolo X, ao servidor. Eacute responsabilidade do cliente e natildeo do servidor interpretar o keysym, o que significa que a aplicaccedilatildeo deve saber esperar mais um caracter ao receber uma ``tecla morta'' para compor uma letra acentuada.
Desde a revisatildeo 5 do X existe na bibliotaca de funccedilotildees (Xlib) um mecanismo sofisticado de suporte agrave geraccedilatildeo de caracteres em diversos coacutedigos. A funccedilatildeo de tratamento de entrada de texto que jaacute existia nas versotildees anteriores, chamada XLookupString, entretanto, natildeo processa as sequumlecircncias de acentos e letras de modo transparente agraves aplicaccedilotildees. Ao inveacutes disso foi incluiacutedo um meacutetodo de composiccedilatildeo usando contextos de entrada (input contexts) por meio das funccedilotildees !XmbLookupString? e !XwcLookupString?, cujo uso eacute responsabilidade da aplicaccedilatildeo -- ou do seu programador, melhor dizendo -- mesmo no caso da tecla Compose. Isto deve-se so fato de o X Consortium ter chegado agrave conclusatildeo de que o sistema de mapeamento de teclas natildeo tratava de forma satisfatoacuteria toda a imensa variedade de liacutenguas escritas nas vaacuterias partes do mundo. Deste modo, decidiu-se que o ``peso'' relativo agrave gestatildeo do teclado fosse transferido para as aplicaccedilotildees X, o que cria uma dificuldade quando usamos aquelas mais antigas, que natildeo usam o novo meacutetodo de tratar a entrada.
Por essas razotildees eacute normalmente mais difiacutecil conseguir acrescentar suporte agrave geraccedilatildeo de caracteres acentuados em aplicativos que rodam sob o X, principalmente quando natildeo se possui o coacutedigo fonte. Aplicativos feitos para rodar apenas em modo texto, tais como vi e minicom dependeratildeo totalmente dos recursos do emulador de terminal em uso quando rodando em uma janela do X. Se for usada uma versatildeo atual do xterm ou rxvt o emulador faraacute o tratamento correto dos acentos.
O francecircs Thomas Quinot, cansado de esperar uma soluccedilatildeo melhor para o problema da acentuaccedilatildeo no X, resolveu implementar uma modificaccedilatildeo para a Xlib proposta por Andreacute D. Balsa, que adiciona suporte agrave acentuaccedilatildeo direta conforme mostrado na seccedilatildeo Contornando os limites do X. Isso permite usar aplicaccedilotildees como xfig ou xedit sem que seja necessaacuterio alteraacute-las. O truque parece funcionar apenas para caracteres do coacutedigo ISO-8859-1 mas eacute suficiente para o Portuguecircs e outras liacutenguas. Como bem observa Balsa, a longo prazo todos os programas deveratildeo ser modificados para usar os novos recursos do X, mas como a longo prazo estaremos todos mortos a soluccedilatildeo de curto prazo de Quinot torna-se bastante atraente...
O documento de referecircncia sobre a configuraccedilatildeo do console do Linux eacute o Keyboard and Console HOWTO, de Andries Brouwer, que pode ser encontrado nos repositoacuterios do LDP. Conforme laacute descrito, a configuraccedilatildeo da fonte de caracteres e mapa de teclado eacute feita usando o pacote KBD, encontrado em todas as distribuiccedilotildees de Linux.
Cada tecla do PC possui um coacutedigo numeacuterico. Ao pressionarmos uma delas o processador controlador do teclado envia ao computador esse coacutedigo de varredura, tambeacutem conhecido como scancode, junto com um sinal de que a tecla foi pressionada ou solta. As sequumlecircncias de eventos satildeo entatildeo processadas pelo driver de teclado e armazenadas em uma fila de caracteres que eacute lida pelas aplicaccedilotildees por meio da chamada de funccedilotildees do sistema operativo.
Um mapa de teclado eacute um arquivo de texto que estabelace as correspondecircncias entre o scancode de tecla e o caracter (ou sequumlecircncia de caracteres) a gerar quando ela for pressionada, chamado keycode. Por exemplo:
keycode 74 = KP_Subtract
keycode 75 = KP_4
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
Aleacutem das teclas alfabeacuteticas, numeacutericas e de siacutembolos, existem outras chamadas modificadoras que permitem gerar coacutedigos que natildeo correspondem a nenhum sinal graacutefico: Shift Control Alt e Meta. Esta uacuteltima normalmente natildeo eacute encontrada em teclados de PCs, apenas em estaccedilotildees de trabalho de fabricantes como Sun, SGI, HP e Digital (eles natildeo gostam de ser chamados de ``DEC). O editor de texto Emacs usa muito a tecla Meta''.
O arquivo de mapa permite tambeacutem especificar teclas especiais chamadas ``teclas mortas (deadkeys''). Quando pressionadas elas natildeo 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 `atilde'.
Um mapa de traduccedilatildeo de tela permite especificar qual o caracter X a ser exibido na tela, quando um programa deseja exibir um caracter Y. Desta forma, poderiacuteamos fazer com que ao escrever o caracter com o coacutedigo do c-cedilhado na tela, fosse na realidade exibido um outro caracter de coacutedigo diferente mas cuja imagem na nossa fonte de caracteres correspondesse agrave imagem de um c-cedilhado.
Este mapeamento eacute necessaacuterio apenas quando queremos usar uma fonte cujos caracteres natildeo possuem coacutedigos diretamente correspondentes aos do conjunto usado no mapa de teclado.
; 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 alteraccedilatildeo das fontes utilizadas em modo de texto. O comando a seguir, por exemplo, iraacute carregar uma fonte com o conjunto Latin-1:
setfont lat1u-16.psf
; Showfont:
mostra todos os caracteres existentes na fonte que estaacute atualmente em uso no console. O X tambeacutem tem um comanto chamado showfont, que serve para mostrar as caracteriacutesticas de uma determinada fonte, mas natildeo os caracteres em si. Para esta uacuteltima finalidade se usa o comando xfd. Se o programa showfont do pacote KBD for invocado em um emulador de terminal X, como xterm, ele geraraacute um erro ``GIO_SCRNMAP: Invalid argument'', mas natildeo provocaraacute nenhum dano. ; Mapscr:
Permite carregar um mapa de traduccedilatildeo de tela. Suponhamos que exista o arquivo /etc/portugal.trad. Se executarmos o comando
mapscrn /etc/portugal.trad
entatildeo a partir deste momento as traduccedilotildees laacute definidas seratildeo usadas. ; Loadunimap:
Carrega um mapa de traduccedilatildeo de Unicode para a fonte de tela. O mapa padratildeo, chamado ``def.uni'' considera que estamos usando a fonte normal do IBM-PC. Este comando natildeo eacute necessaacuterio quando usamos uma fonte com caracteres definidos no padratildeo Unicode, pois o programa setfont carrega automaticamente a tabela de mapeamento adequada. O comando a seguir carregaraacute o mapa de traduccedilatildeo para as fontes latin-1:
loadunimap lat1
O pacote KBD conteacutem dois tipos de fontes com codificaccedilatildeo latin-1:
automaticamente pelo programa setfont. Estas fontes tecircm nomes lat1u-*.psf; *
uma com o programa loadunimap. Estas tecircm nomes lat1-*.psf (o ``u'' indica Unicode). *
Nas versotildees mais novas do KBD os arquivos satildeo comprimidos com gzip. Eacute preciso carregar uma fonte que tenha os caractres latinos acentuados no padratildeo ISO 8859-1 e tambeacutem os siacutembolos semigraacuteficos. As fontes de nome iso01.* natildeo possuem esses siacutembolos. A fonte mais recomendada eacute a lat1u-16.psf.
As versotildees mais antigas do pacote KBD mantinham essas fontes no diretoacuterio /usr/lib/kbd/consolefonts, que foi trocado depois da versatildeo 0.92 por /usr/share/consolefonts. Dependendo da sua distribuiccedilatildeo e do quanto ela esteja atualizada o diretoacuterio poderaacute ser um ou outro.
Foi criado o script /etc/rc.d/rc.font, contendo o seguinte:
#
#
# setfont lat1u-16.psf
Edite o arquivo /etc/kbd/config e coloque uma linha contendo
CONSOLE_FONT=lat1u-16.psf
esse arquivo eacute processado pelo script /etc/rc.boot/kbd. Execute-o para ativar a nova fonte sem ter que dar ``reboot''. Lembre-se sempre: Linux natildeo eacute Windows!
Edite o arquivo /etc/sysconfig/i18n e veja se conteacutem o seguinte:
LANG=pt_BR LINGUAS=pt_BR LC_CTYPE=ISO-8859-1 LC_ALL=pt_BR SYSFONT=lat1u-16 SYSTERM=linux-lat
Se vocecirc selecionar a liacutengua correta durante a instalaccedilatildeo natildeo haacute nada mais a fazer. A configuraccedilatildeo eacute feita extatamente como do Red Hat.
Edite o arquivo /etc/rc.config e procure uma linha que comeccedila com ``FONT='' (linha 64, em minha maacutequina com S.u.S.E. veratildeo 5.6) e coloque
FONT=lat1u-16.psf
Edite os scripts boot.setup e single contidos no diretoacuterio /etc/rc.d. Procure a linha contendo o comando /usr/bin/loadunimap e remova-a ou ponha no seu iniacutecio um ``#'' para deixaacute-la como comentaacuterio. Veja comentaacuterios sobre este comando na seccedilatildeo Carregamento de uma fonte de caracteres.
Experimente algumas teclas como ``,.|!"#$%&/()=?'', etc. e use o comando showfont para mostrar a fonte em uso.
A seguir eacute necessaacuterio carregar o mapa de teclado adequado. Ateacute a versatildeo 0.92 do pacote KBD esses mapas ficavam no diretoacuterio /usr/lib/kbd/keytables passando mais tarde para /usr/share/keytables. Dependendo da distribuiccedilatildeo vocecirc teraacute um diretoacuterio ou outro. Os mapas para diversos tipos de teclados satildeo apresentados mais adiante.
Foi criado o script /etc/rc.d/rc.keyboard, contendo o seguinte:
#
#
# loadkeys abnt2
e acrescentei as seguintes linhas ao /etc/rc.d/rc.S, imediatamente antes do tratamento do /etc/rc.d/rc.keyboard:
if [ -x /etc/rc.d/rc.font?; then /etc/rc.d/rc.font start fi
if [ -x /etc/rc.d/rc.keyboard?; then /etc/rc.d/rc.keyboard start fi
Certifique-se de ter instalado o pacote kbd e depois faccedila o seguinte:
Ficheiros necessaacuterios) para o diretoacuterio /usr/share/keytables/. Natildeo eacute necessaacuterio descomprimi-los; *
/etc/kbd/default.map.gz. *
*
Certifique-se de ter instalado o pacote kbd. Copie os arquivos com os mapas de teclado fornecidos (veja a seccedilatildeo Ficheiros necessaacuterios) para o diretoacuterio /usr/lib/kbd/keytables/ (ou /usr/lib/kbd/keymaps/i386/qwerty/, a pertir do Red Hat 5.2). Natildeo eacute necessaacuterio descomprimi-los.
Edite o arquivo /etc/sysconfig/keyboard e coloque o nome do mapa a usar na variaacutevel KEYTABLE, como por exemplo
KEYTABLE="abnt2"
O CRHL jaacute vem com os mapas de teclado para Portuguecircs. Se vocecirc selecionou o teclado correto durante a instalaccedilatildeo, natildeo haacute mais nada a fazer. Caso contraacuterio, edite o arquivo /etc/sysconfig/keyboard e coloque
KEYTABLE="nome"
Onde ``nome eacute br-abnt2, pt ou us-acentos'' caso o desenho do seu teclado seja ABNT-2, portuguecircs ou americano.
Certifique-se de ter instalado o pacote kbd. Copie os arquivos com os mapas de teclado fornecidos (veja a seccedilatildeo Ficheiros necessaacuterios) para o diretoacuterio /usr/lib/kbd/keytables/. Natildeo eacute necessaacuterio descomprimi-los.
Descomprima o mapa de teclado adequado, copiando para o arquivo /etc/default.keytab, usando por exemplo um comando como
zcat /usr/lib/kbd/keytables/pt.map.gz > /etc/default.keytab
Experimente pressionar a tecla c-cedilhado (se o teclado natildeo tem esta tecla, digite 'c). Verifique se todas as letras acentuadas, maiuacutesculas e minuacutesculas satildeo 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 operaccedilotildees foi mal sucedida.
Se ao inveacutes de c-cedilha minuacutesculo aparecer um maiuacutesculo eacute provaacutevel que uma tabela de mapeamento Unicode incorreta esteja a ser carregada. Este problema ocorreraacute na distribuiccedilatildeo S.u.S.E. se natildeo se fizerem as alteraccedilotildees nos scripts do sistema mencionadas anteriormente.
Mas, e se alguns dos caracteres continuarem a natildeo aparecer? Bem, antes de mais nada verifique se a fonte e o mapa de teclado adequados foram carregados. Um caso especial eacute quando queremos usar uma fonte que natildeo segue a codificaccedilatildeo ISO Latin-1 (eacute o caso da fonte padratildeo do console do PC). Teriacuteamos entatildeo de convencer a tela a mostrar os caracteres certos em cada caso.
Poderiacuteamos recorrer ao comando mapscrn. O arquivo com a tabela de traduccedilatildeo teria no entanto de ser criado por noacutes, seguindo um processo moroso de tentativa e erro ateacute encontrar o caracter cuja imagem desejaacutevamos. Ou, de uma forma mais faacutecil, poderiacuteamos usar o comando showfont.
Se usarmos a fonte de caracteres correta, o uso deste uacuteltimo comando seraacute desnecessaacuterio. Eacute ateacute recomendaacutevel que natildeo se use tal recurso, pois embora ele permita criar uma tabela de caracteres ``personalizada'' em um computador, seraacute difiacutecil que um documento acentuado produzido nessa maacutequina possa ser lido em outra que natildeo tenha a mesma configuraccedilatildeo.
A biblioteca padratildeo de funccedilotildees do Linux suporta Internacionalizaccedilatildeo e Localizaccedilatildeo segundo o padratildeo POSIX (Portable Operating System Interface). Trata-se de uma norma estabelecida pelo IEEE (Institute of Electrical and Electronics Engineers) para intercomunicaccedilatildeo entre diferentes sistemas operativos. Existe tambeacutem um padratildeo estabelecido pelo ANSI (American National Standards Institute) para a linguagem de programaccedilatildeo C que permite escrever programas com suporte internacional.
Resumidamente, podemos dizer que as funccedilotildees que tratam informaccedilotildees dependentes da liacutengua ou do paiacutes podem ter seu comportamento modificado, bastando para tanto estabelecer algumas variaacuteveis de ambiente. E que funccedilotildees satildeo essas? Podemos citar as de formataccedilatildeo de datas, valores monetaacuterios e mensagens de erro do sistema. Se vocecirc natildeo sabe o que eacute uma variaacutevel de ambiente, sugiro que leia o manual com o comando
man environ
O padratildeo POSIX permite usar diversas variaacuteveis de configuraccedilatildeo, cada uma delas definindo o tratamento dado a um tipo de informaccedilatildeo, a saber
; LC_COLLATE:
Define regras para comparaccedilatildeo entre caracteres no alfabeto local. Por exemplo, a letra `atilde' deve ser tratada como idecircntica ao `a' no Portuguecircs quando ordenamos alfabeticamente.
; LC_CTYPE:
Define regras para comparaccedilatildeo entre caracteres maiuacutesculos e minuacutesculos. Se estivermos trabalhando com o coacutedigo ASCII, sabemos que o coacutedigo numeacuterico de uma letra minuacutescula eacute 32 a mais do que a maiuacutescula correspondente, mas para uma letra acentuada esta regra natildeo eacute vaacutelida!
; LC_MONETARY:
Muda o comportamento das funccedilotildees de formataccedilatildeo de valores monetaacuterios e permite descobrir, por exemplo, o siacutembolo da moeda local, ou se usa ponto ou viacutergula como separador de milhares e de casas decimais.
; LC_MESSAGES:
Estabelece a liacutengua em que as mensagens seratildeo apresentadas e como eacute uma resposta afirmativa ou negativa (S/N).
; LC_NUMERIC:
Estabelece o comportamento das funccedilotildees de leitura/escrita de valores numeacutericos permitindo, por exemplo que usemos a viacutergula decimal.
; LC_TIME:
Define a formataccedilatildeo de datas e horas.
; LC_ALL:
Define de uma soacute vez todas as categorias. Se usarmos LC_ALL, natildeo precisaremos definir nenhuma das outras, a natildeo ser que queiramos um comportamento diferente para aquele iacutetem especiacutefico.
; LANG:
Define de uma soacute vez todas as categorias, se LC_ALL natildeo estiver definida. Tambeacutem eacute usada pelo comando man para compor os caminhos pelos quais ele procuraraacute as paacuteginas do manual. Veja as observaccedilotildees a respeito desta variaacutevel nas seccedilotildees Locale, Locale e Locale.
Maiores informaccedilotildees podem ser obtidas no manual do sistema com o comando
man 7 locale
O `7' no comando anterior eacute necessaacuterio para evitar confusatildeo com uma funccedilatildeo homocircnima da linguagem Perl. Note que as configuraccedilotildees acima afetam, em princiacutepio, apenas as funccedilotildees disponiacuteveis na biblioteca de funccedilotildees da linguagem C. Na praacutetica, todos os programas que rodam em Linux usam aquela biblioteca, mas o sistema operativo natildeo provecirc, cataacutelogos de mensagens em diversas liacutenguas para todos os programas.
A identificaccedilatildeo da liacutengua e do local eacute feita por dois coacutedigos de duas letras, separados por um sinal ``_. Se omitirmos o coacutedigo de paiacutes, assume-se o paiacutes padratildeo para a liacutengua informada, mas deve haver um cataacutelogo correspondente. Deste modo, o coacutedigo ``pt_PT significa Portuguecircs de Portugal, enquanto ``pt_BR'' significa Portuguecircs do Brasil. Escolher uma combinaccedilatildeo liacutengua/local basta entatildeo colocar em seu arquivo /etc/profile uma linha contendo
LC_ALL="pt_PT" export LC_ALL
Usuaacuterios brasileiros devem usar ``pt_BR ao inveacutes de ``pt_PT. Teste o resultado com os comandos a seguir (/inexistente eacute o nome de um arquivo que natildeo existe):
echo !AacuteEacuteIacuteOacuteUacute? | tr 'upper:?' 'lower:?' tar tf /inexistente ls -l / date cal 1 1999
O resultado do primeiro deveraacute ser ``aacuteeacuteiacuteoacuteuacute. Os comandos tar e ls devem retornar mensagens em Portuguecircs e cal deve mostrar um calendaacuterio de janeiro de 1999, com do se te qu qu se saacute'' no cabeccedilalho dos dias da semana.
Na distribuiccedilatildeo Debian, certifique-se de ter instalado o pacote ``locales, que pertence ao grupo ``admin. O nome do arquivo que conteacutem o pacote (na versatildeo 2.0 da distribuiccedilatildeo) eacute locales_2.0.7t-1.deb e em meu CD estaacute no diretoacuterio debian/main/binary-i386/admin.
Ateacute meados de 1997 todas as distribuiccedilotildees de Linux usavam a mesma biblioteca libc, que estava na versatildeo 5, desenvolvida a partir de uma versatildeo mais antiga da libc do projeto GNU. Esta biblioteca possuia suporte muito limitado agrave internacionalizaccedilatildeo e normalmente nenhum dos cataacutelogos de locais era incluiacutedo na distribuiccedilatildeo, ficando o inglecircs como liacutengua padratildeo.
A versatildeo 6 da libc do Linux baseia-se na versatildeo 2 da libc do projeto GNU. O suporte agrave internacionalizaccedilatildeo foi muito melhorado, aleacutem de incluir outros atributos que natildeo interessam para os fins deste HOWTO. Se sua distribuiccedilatildeo for a Debian versatildeo 2, Red Hat versatildeo 5 ou qualquer outra que use a nova libc, entatildeo natildeo haacute mais nada a fazer aleacutem do descrito na seccedilatildeo anterior.
Mas se vocecirc usa uma distribuiccedilatildeo ainda baseada na libc 5 (Slackware, Caldera 1.x ou uma versatildeo mais antiga de Debian ou Red Hat) eacute preciso instalar a coleccedilatildeo de locais. Natildeo tente copiar a coleccedilatildeo de uma distribuiccedilatildeo mais recente, pois os formatos dos arquivos satildeo incompatiacuteveis. Pegue na paacutegina do Portuguese HOWTO o arquivo locales-pt.tgz. Para instalaacute-lo na distribuiccedilatildeo Slackware, basta (como usuaacuterio root) usar o comando
installpkg locales-pt.tgz
e para outras distribuiccedilotildees use o comando
tar xzf locales-pt.tgz -C /
Verifique se haacute dois subdiretoacuterios do /usr/share/locale chamados pt_BR e pt_PT. Basta entatildeo configurar a variaacutevel de ambiente LC_ALL, como jaacute descrito.
Quando o servidor X estaacute ativo, ele coloca o teclado do computador em um modo de operaccedilatildeo chamado raw (cru), em oposiccedilatildeo ao modo normal, chamado cooked (isto mesmo: cozido). No modo raw o sistema operativo natildeo processa sequumlecircncias acento-letra. O servidor X eacute uma daquelas raras aplicaccedilotildees que, por dever de ofiacutecio, tem que tratar o teclado ``em baixo niacutevel''.
O X vem equipado com um utilitaacuterio destinado agrave configuraccedilatildeo do teclado, chamado xmodmap, que cumpre uma funccedilatildeo correspondente agrave do comando loadkeys, ou seja, lecirc um arquivo de mapa de teclado do X, expecificando as equivalecircncias 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 contraacuterio do loadkeys, o xmodmap natildeo possui um diretoacuterio padratildeo onde o arquivo eacute procurado.
A configuraccedilatildeo do X natildeo interfere de forma alguma com a configuraccedilatildeo do modo de texto. De facto, eacute possiacutevel ter o seu X bem configurado, e no entanto natildeo ter realizado qualquer tipo de configuraccedilatildeo ao modo de texto, e vice-versa. Outro ponto importante de se observar eacute que os coacutedigos numeacutericos das teclas no X natildeo correspondem aos do console. A tecla Backspace, por exemplo, tem o nuacutemero 14 no console, e 22 no X (em um computador do tipo IBM-PC).
As versotildees 3.2 e posteriores do XFree86 permitam definir dead-keys, mas
Modo texto versus Sistema de Janelas X. Haacute modos de contornar esta limitaccedilatildeo e tornar o tratamento de dead-keys transparente agraves aplicaccedilotildees, conforme mostrado na seccedilatildeo Contornando os limites do X.
Dividimos a configuraccedilatildeo em duas partes: Uma que deve ser feita antes do login do usuaacuterio e outra depois.
Junto com este documento satildeo fornecidos vaacuterios mapas de teclado para uso no X. Para automatizar o processo de configuraccedilatildeo do teclado basta copiar o arquivo adequado para o diretoacuterio /usr/X11R6/lib/X11/xinit, onde normalmente ficam os arquivos de iniacutecio da seccedilatildeo de trabalho no X. Na distribuiccedilatildeo Slackware esse diretoacuterio eacute um link simboacutelico para /var/X11R6/lib/xinit e na Debian e na Red Hat para /etc/X11/xinit.
Nas distribuiccedilotildees Slackware e Red Hat, verifique se no referido diretoacuterio existe um arquivo chamado .Xmodmap. Se existir, copie o Xmodmap.<alguma-coisa> para ele, ou faccedila um link. Normalmente o arquivo de configuraccedilatildeo xinitrc possui os comandos para carregaacute-lo automaticamente. Veja o seguinte trecho:
userresources=$HOME/.Xresources usermodmap=$HOME/.Xmodmap sysresources=/usr/X11R6/lib/X11/xinit/.Xresources sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap
if [ -f $sysresources?; then xrdb -merge $sysresources fi if [ -f $sysmodmap?; then xmodmap $sysmodmap fi
Na distribuiccedilatildeo Debian o mapa de teclado padratildeo do X eacute /etc/X11/Xmodmap, basta copiar o mapa desejado para aquele arquivo. Ele seraacute carregado pelo xinitrc, que por sua vez eacute um link simboacutelico para /etc/X11/Xsession, sempre que iniciar a seccedilatildeo de trabalho do usuaacuterio.
Existe ainda um pequeno problema: no meu computador, por exemplo, o sistema carrega diretamente o X ao dar boot e o login eacute feito pelo X Display Manager (xdm). Como o xdm faz o login antes de iniciar a seccedilatildeo de trabalho, o mapa de teclado natildeo seraacute carregado, o que pode criar problemas se o usuaacuterio usa caracteres como ``['' ou ``?'' em sua senha, pois nos teclados ABNT-2 e portuguecircs esses siacutembolos satildeo gerados por teclas cujos coacutedigos numeacutericos natildeo satildeo os mesmos do teclado americano.
Eacute preciso fazer uma pequena alteraccedilatildeo no arquivo de configuraccedilatildeo Xsetup_0. Esse arquivo deve estar no diretoacuterio /usr/X11R6/lib/X11/xdm, que na Slackware eacute um link simboacutelico para /var/X11R6/lib/xdm e /etc/X11/xdm na Debian e -- sujeito a confirmaccedilatildeo -- !RedHat. Eis
#
# sysresources=/usr/X11R6/lib/X11/xinit/.Xresources sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap
if [ -r $sysresources?; then xrdb -merge $sysresources fi if [ -r $sysmodmap?; then xmodmap $sysmodmap fi xconsole -geometry 480x130-0-0 -daemon -notify -verbose -exitOnFail
A distribuiccedilatildeo 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 usuaacuterio tambeacutem for feito sempre via xdm, natildeo eacute necessaacuterio mexer no xinitrc, como mostrado na seccedilatildeo anterior, jaacute que o mapa de teclado seraacute carregado antes do iniacutecio na seccedilatildeo do usuaacuterio.
Uma das coisas mais importantes a definir quando vamos utilizar acentuaccedilatildeo por meio de dead-keys eacute o conjunto de regras de composiccedilatildeo. Essas regras determinam, por exemplo que a composiccedilatildeo do caracter ' com a letra e geraraacute um eacute.
Ao contraacuterio do console, no qual podemos definir as regras de composiccedilatildeo no proacuteprio mapa de teclado, no X essas regras satildeo colocadas no arquivo /usr/X11R6/lib/X11/locale/???/Compose, onde ??? eacute a codificaccedilatildeo em uso (no nosso caso, iso8859-1).
Para facilitar o uso dos mapas para teclados que natildeo tecircm o c-cedilhado, como o US+ (veja adiante) eacute conveniente definirmos uma nova regra de composiccedilatildeo, permitindo que o Ccedil seja gerado pela sequumlecircncia 'C. Se natildeo fizermos isso, seremos obrigados a digitar <dead_cedilla-C>, sedo o dead_cedilla produzido pela combinaccedilatildeo AltGR-=, o que natildeo eacute nada confortaacutevel. Aleacutem disso, no teclado americano somos obrigados a usar as aspas duplas para gerar o trema.
O arquivo Compose fornecido foi feito procurando imitar ao maacuteximo o comportamento do console e possui as seguintes facilidades para geraccedilatildeo de caracteres:
<acento-agudo>-C *
<acento-agudo>-<acento-agudo> e <acento-agudo>-<espaccedilo> *
<acento-grave>-<espaccedilo> *
*
*
*
<circumflexo>-<circumflexo> *
Para incluirmos as novas regras, basta aplicar uma alteraccedilatildeo agrave definiccedilatildeo original. O arquivo Compose.patch pode ser obtido via WWW na paacutegina do Portuguese HOWTO. Para aplicar a atualizaccedilatildeo, copie-o para o diretoacuterio /usr/X11R6/lib/X11/locale/iso8859-1/, faccedila uma coacutepia de reserva do Compose original e invoque o utilitaacuterio patch:
cp -p Compose Compose.backup patch < Compose.patch
Caso vocecirc prefira natildeo aplicar o ``patch'', um arquivo Compose pronto tambeacutem eacute fornecido. Lembre-se de fazer coacutepia do original antes de substituiacute-lo!
Para os usuaacuterios brasileiros, pode haver mais uma alteraccedilatildeo a fazer no X. Conforme vimos na seccedilatildeo Biblioteca libc, uma variaacutevel de ambiente (LANG ou LC_ALL) configura o suporte internacional existente na biblioteca de funccedilotildees padratildeo do sistema (libc). A biblioteca de funccedilotildees do X (Xlib) usa a variaacutevel LANG para identificar a liacutengua em uso mas ateacute a revisatildeo 6.3, na qual eacute baseado o XFree86, natildeo era incluiacuteda a combinaccedilatildeo ``pt_BR, correspondente a Portuguecircs/Brasil. Como resultado, cada vez que executarmos um aplicativo X com LC_ALL definido como ``pt_BR ele emitiraacute a mensagem ``Warning: locale not supported by Xlib, locale set to C''.
Para incluir o local pt_BR no X11R6.3 basta alterar trecircs arquivos existentes no diretoacuterio /usr/X11R6/lib/X11/locale. Pegue o arquivo Xlocale.patch via WWW na paacutegina do Portuguese HOWTO. Para aplicar a atualizaccedilatildeo, copie-o para o diretoacuterio /usr/X11R6/lib/X11/locale, faccedila uma coacutepia de reserva dos arquivos a serem alterados e invoque o utilitaacuterio 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 vocecirc prefira natildeo aplicar o ``patch'', arquivos prontos tambeacutem satildeo fornecidos. Lembre-se de fazer coacutepias dos originais antes de substituiacute-los!
Em setembro de 1998 o fix-2 da revisatildeo 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 funccedilotildees de tratamento de input contexts da Xlib que provoca violaccedilotildees de acesso agrave memoacuteria. Uma das aplicaccedilotildees afetadas eacute o processador de textos LyX. Uma correccedilatildeo provavelmente seraacute incluiacuteda no fix-4. O X11R6.4 deveraacute ser a base para a versatildeo 4 do XFree86.
O programa XKeyCaps, criado por Jamie Zawinski eacute uma interface graacutefica para o xmodmap, que mostra na tela o desenho de um teclado e permite modificar interativamente os siacutembolos gerados por cada tecla e gerar automaticamente o arquivo .Xmodmap correspondente.
Ele pode ser obtido via WWW em
http://www.jwz.org/xkeycaps/ e, a
partir da versatildeo 2.43, jaacute incoropra tambeacutem suporte para o desenho brasileiro
(ABNT2), uma contribuiccedilatildeo de Andre Gerhard.
Conforme foi explicado na seccedilatildeo Modo texto versus Sistema de Janelas X, o tratamento de acentos deve ser feito pela aplicaccedilatildeo, mas ainda haacute muitos programas que natildeo levam isto em consideraccedilatildeo, tais como Netscape Navigator/Communicator e Nedit. Como natildeo eacute possiacutevel modificar muitos deles, eacute preciso encontrar outro tipo de soluccedilatildeo.
Linux, assim como a maioria dos sistemas operacionais modernos, usa um sistema de viacutenculo de programas a bibliotecas de funccedilotildees chamado ``ligaccedilatildeo dinacircmica (dynamic binding''). Deste modo, podemos modificar o comportamento de um programa alterando uma dessas bibliotecas. Maiores informaccedilotildees 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 alteraccedilatildeo para a biblioteca de funccedilotildees do X (Xlib) introduzindo o tratamento de acentos na funccedilatildeo XLookupString, Tudo que se tem a fazer eacute substituir o arquivo contendo esta biblioteca por outro, que pode ser obtido via internet no endereccedilo
http://web.fdn.fr/tquinot/dead-keys.en.html
Existem duas versotildees 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 natildeo possuem tal atributo (Slackware, Caldera 1.x). Se vocecirc natildeo sabe o que satildeo threads natildeo 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 eacute libX11-XF3.3.1-TS.tar.gz. Se natildeo aparecer, seu sistema natildeo suporta threads e o arquivo a obter eacute libX11-XF3.3.1.tar.gz. Tendo obtido o arquivo, copie-o para um diretoacuterio temporaacuterio e extraia seu conteuacutedo. Mova o arquivo /usr/X11R6/libX11.so.6.1 para outro diretoacuterio, para preservaacute-lo. Natildeo eacute suficiente renomeaacute-lo! Remova-o para um diretoacuterio cujo nome natildeo 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 usuaacuterio 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
Eacute aconselhaacutevel que a operaccedilatildeo seja realizada quando nenhuma aplicaccedilatildeo X estiver rodando. A seguir, edite o arquivo de configuraccedilatildeo do servidor X, chamado XF86Config. Este arquivo fica no diretoacuterio /etc (Slackware) ou /etc/X11 (Debian, Red Hat). Procure a seccedilatildeo ``Keyboard e inclua a opccedilatildeo ``!XkbDisable?, conforme mostrado a seguir:
Section "Keyboard" Protocol "Standard"
A opccedilatildeo !XkbDisable? inabilita a extensatildeo XKEYBOARD do servidor X, o que neste caso serve para sinalizar agrave funccedilatildeo XLookupString que ela deve tratar os acentos. Se quisermos voltar ao comportamento normal, basta retirar a opccedilatildeo do XF86Config.
Configure o mapa de teclado do X conforme explicado nas seccedilotildees anteriores deste documento. Para testar o resultado, rode o programa xedit e digite alguns caracteres acentuados.
Esta seccedilatildeo eacute baseada em contribuiccedilatildeo enviada por Bruno Barberi Gnecco e na documentaccedilatildeo do diacrd. Podem haver ainda alguns erros e se algueacutem 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 operaccedilatildeo do teclado, chamados raw e cooked. Estes modos de operaccedilatildeo podem ser mudados com o programa kbd_mode, integrante do pacote kbd, o que natildeo eacute recomendaacutevel fazer a natildeo ser para restaurar o estado do console apoacutes um desastre com o servidor X, por exemplo. No modo raw o kernel natildeo processa os diacriacuteticos (acentos).
Cedric Adjih criou uma alteraccedilatildeo para o kernel que permitia tratar os acentos mesmo em modo raw, inicialmente voltada para o teclado de desenho francecircs. Eneacuteas Queiroz, Andreacute D. Balsa e Claudemir Todo Bom fizeram melhorias e o adaptaram para os teclados internacional, portuguecircs e ABNT. O tratemanto de acentos eacute feito parte pelo kernel, parte por um processo que roda em retaguarda (daemon) chamado diacrd, conforme descrito a seguir:
sejam redirecionados para um dispositivo especial do sistema chamado /dev/rawkbd quando o teclado estiver em modo raw. *
programa diacrd, que processa as sequumlecircncias acento-letra e reescreve no /dev/rawkbd os caracteres acentuados na forma de coacutedigos de varredura (scancodes) que normalmente natildeo existem no teclado. *
diacrd e os passa agrave aplicaccedilatildeo, que no caso eacute o servidor X. *
teclado especial permite entatildeo gerar as letras acentuadas. *
O diacrd pode ser obtido via FTP anocircnimo no endereccedilo
ftp://metalab.unc.edu/pub/Linux/system/keyboards
Haacute versotildees diferentes, de acordo com o tipo de teclado e, pelo menos por
enquanto, natildeo se pode reconfiguraacute-lo sem recompilar. Para fazer a
instalaccedilatildeo, de acordo com o arquivo ``README'', deve-se fazer o seguinte (pelo
usuaacuterio root):
conteuacutedo, o que deveraacute criar um diretoacuterio chamado diacrd-<versatildeo>. *
acordo com suas preferecircncias. Pode-se incluir capacidade de rodar o programa xmodmap e ejetar o CD-ROM sob controle do pressionamento de uma combinaccedilatildeo de teclas. *
``make patch-usr-src''. *
``make rawkbd''. *
``make install''. *
cd /usr/src/linux make config make zlilo
Para maiores informaccedilotildees sobre compilaccedilatildeo/instalaccedilatildeo do kernel, leia o Kernel-HOWTO, disponiacutevel via Internet nos repositoacuterios do LDP mencionados na seccedilatildeo Onde encontrar a versatildeo mais atual. *
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 seccedilatildeo Configuraccedilatildeo do console como carregar um mapa com suporte agrave acentuaccedilatildeo. O pacote diacrd vem com um arquivo chamada usintl.map, que corresponde ao nosso us+.map. Se seu teclado natildeo for do tipo americano, use o pt.map ou abnt-2.map. *
pelo arquivo fornecido junto com o diacrd. *
use o xmodmap para carregar o mapa xmodmap.diacrd. *
Se a geraccedilatildeo de acentos funcionar, eacute preciso tornar permanentes as alteraccedilotildees necessaacuterias. Pode-se fazecirc-lo incluindo a carga do diacrd no arquivo /etc/rc.d/rc.local (Slackware).
Se algum dos leitores tiver criado um script de ativaccedilatildeo do diacrd para a distribuiccedilatildeo Debian ou Red Hat, por favor envie-o para que seja incluiacutedo aqui.
Mais informaccedilotildees sobre o diacrd podem ser encontradas no ``Dead keys
Mini-HOWTO'' de Claudemir Todo Bom, disponiacutevel em
http://linux.unicamp.br/docs/diversos/deadkeys.html.
Em termos de resultados praacuteticos, a Xlib modificada e o diacrd satildeo equivalentes. Haacute poreacutem algumas diferenccedilas entre as duas soluccedilotildees que merecem atenccedilatildeo.
Diacrd exige uma alteraccedilatildeo no kernel do Linux para resolver um problema que o kernel jaacute resolve, o que natildeo deixa de parecer um tanto redundante. A dependecircncia de um processo de usuaacuterio (o daemon kerneld) eacute uma desvantagem, pois se esse programa deixar de funcionar perde-se o suporte agrave acentuaccedilatildeo no X. Trata-se de uma soluccedilatildeo ainda em desenvolvimento e, segundo o conteuacutedo da documentaccedilatildeo que o acompanha, o ideal seria que todo o tratamento fosse feito pelo kernel, sem depender de outro programa.
Ateacute o momento da publicaccedilatildeo deste HOWTO, o diacrd ainda natildeo era compatiacutevel com a versatildeo 2.2 do kernel do Linux.
A soluccedilatildeo via Xlib eacute, pelo menos em teoria, totalmente transparente agraves aplicaccedilotildees e permite reconfiguraccedilatildeo em tempo de execuccedilatildeo, bastando alterar o mapa de teclado do X e as regras de composiccedilatildeo. Jaacute o diacrd precisa ser recompilado se quisermos trocar o tipo de teclado, mas eacute possiacutevel que novas versotildees incorporem algum recurso de reconfiguraccedilatildeo.
O diacrd soacute funciona no teclado do proacuteprio computador. Se quisermos usar um display remoto, seja um terminal X, seja um outro computador, natildeo teremos suporte agrave acentuaccedilatildeo. A troca da Xlib, por outro lado, enquadra-se plenamente na filosofia do X de que o servidor provecirc mecanismo, deixando a cargo da aplicaccedilatildeo a definiccedilatildeo de poliacuteticas. Exemplo da vantagem deste paradigma eacute poder usar as teacutecnicas descritas na seccedilatildeo Configuraccedilatildeo do X em outros sistemas operativos e com terminais X.
A soluccedilatildeo via Xlib parece-me mais ``limpa'' e eacute minha predileta, mas, como sempre, fica a criteacuterio do usuaacuterio ou do administrador do sistema qual alternativa escolher. De qualquer modo, sempre eacute bom lembrar qua ambas as soluccedilotildees satildeo remendos. Considerando-se a raacutepida evoluccedilatildeo que estaacute a ocorrer no campo do software livre, com o desenvolvimendo de ambientes de trabalho como KDE, GNOME e GNUStep, podemos supor que em breve nenhum desses remendos seraacute mais necessaacuterio.
A maioria das aplicaccedilotildees que rodam no Unix usa algum tipo de arquivo de configuraccedilatildeo que o usuaacuterio coloca em seu diretoacuterio de trabalho (home) e cujo nome normalmente eacute .alguma-coisarc. Tanto quanto possiacutevel, tentei evitar que isso fosse necessaacuterio, pois aleacutem de dar mais trabalho ao usuaacuterio (e ao administrador da rede ;-) pode dificultar um pouco as coisas. Por exemplo, aqui no CPMet temos o diretoacuterio home compartilhado entre um servidor Alpha rodando DEC UNIX com os PCs rodando Linux via NFS (ateacute a maior parte do Linux estaacute instalada no Alpha, os PCs soacute tecircm a particcedilatildeo raiz e uma aacuterea de swap). Os arquivos podem necessitar algum ajuste dependendo da plataforma e nem todos os programas possuem flexibilidade bastante para isso.
Uma opccedilatildeo que muitos programas tambeacutem oferecem eacute especificar em uma variaacutevel de ambiente o nome do arquivo de configuraccedilatildeo ou o uso de arquivos padratildeo que normalmente ficam em um diretoacuterio /usr/lib/alguma-coisa ou /etc/alguma-coisa.
Os programas que utilizam a biblioteca GNU readline para ler a linha de comando procuram por um arquivo chamado .inputrc no diretoacuterio ``HOME'' do usuaacuterio caso natildeo exista uma variaacutevel de ambiente INPUTRC contendo o caminho para um arquivo de configuraccedilatildeo.
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 eacute criar um arquivo .inputrc no diretoacuterio home do usuaacuterio com o conteuacutedo acima, mas eacute muito difiacutecil manter atualizados os arquivos de todos os usuaacuterios, principalmente quando eles satildeo muitos. Um inputrc mais completo pode ser obtido via WWW na paacutegina do Portuguese HOWTO. Ele conteacutem opccedilotildees para vaacuterios tipos de terminal e permite usar as teclas de movimento de cursor para percorrer o histoacuterico de comandos (setas para cima e para baixo); ir para o primeiro e para o uacuteltimo comandos do histoacuterico (teclas !PageUp? e !PageDown?); posicionar o cursor na linha (setas para a esquerda e direita) e posicionar o cursor no iniacutecio e no fim da linha (teclas Home e End).
Para maiores informaccedilotildees leia os manuais do bash e da biblioteca readline com os comandos
man bash man readline
O pai de todos os editores pode ser configurado criando-se um arquivo chamado .emacs no diretoacuterio do usuaacuterio, contendo as seguintes linhas:
(set-input-mode nil nil 1) (standard-display-european t) (require 'iso-syntax)
Para tornar esta configuraccedilatildeo global, na distribuiccedilatildeo Slackware coloque os comandos no arquivo /usr/lib/emacs/site-lisp/site-start.el. Na distribuiccedilatildeo Debian o emacs executa todos os scripts contidos no diretoacuterio /etc/emacs/site-start.d ao ser carregado. Tudo que se tem a fazer eacute colocar esses comandos em um arquivo chamado, por exemplo, 01portugues-emacs.el.
Se o estimado leitor, assim como eu, natildeo se agrada do tratamento dado pelo Emacs agraves 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 configuraccedilatildeo prontos podem ser obtidos via WWW na paacutegina do Portuguese HOWTO. Para Slackware, haacute um site-start-emacs.el, que deve ser copiado para o diretoacuterio /usr/lib/emacs/site-lisp com o nome de site-start.el. Para Debian, haacute um 01portugues-emacs.el que deve ser copiado para o diretoacuterio /etc/emacs/site-start.d.
Certifique-se de estar usando a versatildeo 24-out-1998 ou mais recente do arquivo de mapa de teclado para o X, pois ela possui uma correccedilatildeo no tratamento das teclas modificadoras Alt e Meta, que satildeo muito usadas pelo Emacs.
Especifique a opccedilatildeo -8 se o parser a gerar necessitar de ler dados de 8 bit.
Fortune eacute aquele programa que toda vez que eacute invocado apresenta uma pequena mensagem, geralmente bem humorada. Ele eacute inspirado nos biscoitos da fortuna chineses (em inglecircs fortune cookies, daiacute o nome). Eis algumas mensagens tiacutepicas:
dROGA!!oNDE ESTA O cAPSLOCK?? Mouse natildeo encontrado, bater no gato? (S/N) Que fio eacute ess<=V++088.../NO CARRIER Quem ri por uacuteltimo estaacute conectado a 2400Bit/s.
Tudo que o programa faz eacute escolher aleatoriamente uma mensagem em um repositoacuterio mantido no diretoacuterio /usr/games/fortunes (Slackware) ou /usr/share/games/fortunes (Debian). Neste diretoacuterio existem diversos arquivos com as ``fortunas'' e um arquivo iacutendice para cada um deles, que possui a extensatildeo .dat. O formato dos arquivos eacute muito simples: cada fortuna eacute composta de uma seacuterie de linhas de texto. As fortunas satildeo separadas umas das outras por linhas contendo apenas um caracter %. Veja
O que satildeo quatro pontos na parede? Four migas. Ugh! % Errar eacute humano, botar a culpa no computador eacute mais humano ainda. % Aiacute ela me disse: Ou eu ou o modem! Sinto muitas saudades dela...
Tudo que temos a fazer eacute criar um arquivo com as fortunas chamado, digamos fortunes com o formato descrito acima. Depois basta usar o programa strfile para gerar o iacutendice:
strfile fortunes
e um arquivo chamado fortunes.dat seraacute criado. Claro que se quisermos que o fortune mostre apenas mensagens em Portuguecircs, teremos que remover os arquivos existentes no diretoacuterio original. Sugiro simplesmente renomeaacute-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 paacutegina do Portuguese HOWTO. Natildeo esqueccedila 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 uacuteltima informaccedilatildeo: se o nome de um arquivo termina com o sufixo
ser considerado ofensivo por algumas pessoas, tais como
Soacute natildeo mando a sogra pro inferno, com pena do Diabo.
Claro que existem coisas muito mais ofensivas por aiacute, mas este eacute um Linux HOWTO e natildeo queremos realmente ofender ningueacutem, certo?
Dicionaacuterios para o Portuguecircs de Portugal podem ser obtidos via WWW
na paacutegina do Projecto Natura em
http://www.di.uminho.pt/jj/pln/pln.html. Para o Brasil, haacute
uma versatildeo compilada pelo Ueda:
http://www.ime.usp.br/ueda/.
Eu gostaria de poder colocar maiores informaccedilotildees, mas ainda natildeo tenho conhecimento suficiente sobre o Ispell e natildeo posso ensinar o que natildeo sei. Preciso de ajuda aqui.
Esta informaccedilatildeo eacute baseada em uma mensagem da qual guardei o conteuacutedo mas natildeo o remetente. Peccedilo desculpas e espero que perdoe a falha. Natildeo testei pessoalmente a informaccedilatildeo e peccedilo que me escrevam confirmando tanto a correccedilatildeo quanto, se possiacutevel, a identidade do autor.
O JDK utiliza fontes padratildeo que natildeo suportam acentos. Isto quer dizer que letras com acentos satildeo ignoradas e, geralmente, confundem o resto do texto. Resolver isto eacute extremamente faacutecil:
/jdk1.1.5/lib); *
font.properties atual (lembre-se de fazer backups!); *
aplicativos que usem o jdk estaratildeo aptos a lerem acentos! (faacutecil, natildeo?) *
Invoque o joe com a opccedilatildeo -asis na linha de comando ou altere os arquivos de configuraccedilatildeo para ativar tal opccedilatildeo. Na Slackware eles estatildeo no diretoacuterio /usr/lib/joe. Tudo que se tem a fazer eacute remover o espaccedilo em branco existente no iniacutecio de cada linha. Outra alternativa eacute acrescentar a seguinte linha ao arquivo /etc/profile:
alias joe='joe -asis'
Joe pode emular os editores Pico, emacs e !WordStar?. Um arquivo joerc estaacute disponiacutevel via WWW na paacutegina do Portuguese HOWTO, contendo configuraccedilotildees que permitem usar as teclas Home e End para movimentar o cursor para o iniacutecio e fim da linha.
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 sequumlecircncias de caracteres geradas por cada tecla e as accedilotildees a serem tomadas pelo less. Para criar o arquivo /etc/lesskey, crie primeiro o arquivo /etc/lesskey.in contendo as seguintes linhas:
\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
\eOH goto-line \eOF goto-end \e[[H goto-line \e[[F goto-end
\e[[214z goto-line \e[[220z goto-end \e[[216z back-screen \e[[222z forw-screen
:n next-file :N next-file :p prev-file
Depois ``compile-o'' usando o comando
Crie o arquivo /usr/bin/lesspipe.sh contendo
case "$1" in
tar tzvvf "$1" 2>/dev/null ;;
bzip2 -dc "$1" | tar tvvf - 2>/dev/null ;;
FILE=`file -Lz "$1" | cut -d ' ' -f 2` if [ "$FILE" = "troff"?; then gzip -dc "$1" | groff -s -p -t -e -Tlatin1 -mandoc fi ;;
FILE=`file -L "$1" | cut -d ' ' -f 2` if [ "$FILE" = "troff"?; then groff -s -p -t -e -Tlatin1 -mandoc "$1" fi ;; esac
Natildeo esqueccedila de tornaacute-lo executaacutevel:
chmod 755 /usr/bin/lesspipe.sh
Na distribuiccedilatildeo Debian jaacute existe um script /usr/bin/lesspipe (note a ausecircncia da extensatildeo .sh). Para os curiosos a respeito da referecircncia a ``*.rpm, embora na maacutequina em questatildeo se use Slackware, eacute possiacutevel ter o utilitaacuterio RPM instalado tambeacutem, o que facilita tomar ``emprestados pacotes do Red Hat, Caldera e S.u.S.E.. Existe um RPM+Slackware Mini-HOWTO que explica como fazer isso.
Acrescente a seguinte linha ao arquivo /etc/profile :
alias ls="ls -N"
ou
alias ls="ls -b"
Se a sua distribuiccedilatildeo de Linux usa o GNU ls (todas as que eu conheccedilo usam) basta acrescentar ao arquivo /etc/profile ou .profile as seguintes linhas:
if
lib/CachedMarkup.php (In template 'browse' < 'body' < 'html'):257: Error: Pure virtual
lib/main.php:944: Notice: PageInfo: Cannot find action page
lib/main.php:839: Notice: PageInfo: Unknown action
lib/InlineParser.php:336: Warning: Invalid [] syntax ignored: [[ "$SHELL" = "/bin/csh" -o \
lib/CachedMarkup.php (In template 'browse' < 'body' < 'html'):257: Error: Pure virtual