Next Previous Contents

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 para desenho de linhas e bordas. Esses sinais podem aproveitar c�digos n�o utilizados pelo conjunto oficial, tornando-os n�o port�veis.

O Linux foi desenhado internamente de modo a facilitar a sua f�cil configura��o e extens�o em tempo de execu��o, n�o constituindo o tratamento do teclado e fontes de caracteres excep��o. Ele possui uma implementa��o ``n�vel 1'' do padr�o Unicode. Maiores detalhes podem ser encontrados nos manuais do Linux, que podem ser lido com os comandos

    man unicode
    man utf-8
    man iso_8859_1
    man ascii
mas antes disso certifique-se de que o man est� configurado corretamente, 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 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 protocolo 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). O uso do termo ``XWindows'' � incorreto e deve ser evitado, dando-se prefer�ncia ao nome gen�rico ``X''.

Existem muitas semelhan�as entre os dois ambientes. Ambos se baseiam em padr�es internacionais para defini��o de conjuntos de caracteres. Tanto no X quanto no console do Linux pode-se definir uma tecla chamada 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 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 evento a ele transmitido. Cliente e 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 a aplica��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 envi�-la, tamb�m na forma de mensagens no protocolo X, ao servidor. � responsabilidade do cliente e n�o do servidor interpretar o keysym, o que significa que a aplica��o deve saber esperar mais um caracter ao receber uma ``tecla morta'' para compor uma letra acentuada.

Desde a revis�o 5 do X existe na bibliotaca de fun��es (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 inclu�do 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 fato 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  Contornando 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...


Next Previous Contents