Next
Previous
Contents
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.
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
|