Escritos
B. Piropo
Anteriores:
< Trilha Zero >
Volte de onde veio
25/05/1992

< VIRANDO AS PÁGINAS... >


O MS-DOS 5.0 da Microsoft oferece um total de seis páginas de código. Em todas elas, os primeiros 128 caracteres são os mesmos e obedecem rigorosamente à padronização ASCII e os 128 remanescentes correspondem a caracteres específicos de determinados idiomas. Nos interessam particularmente três páginas de código (que doravante vamos abreviar para CP): as CP 860, 437 e 850. A primeira por razões óbvias: ela corresponde ao idioma português. É uma solução extremamente inteligente: os caracteres acentuados do português e inexistentes na CP 437 foram introduzidos em substituição a outros jamais utilizados em nosso idioma, como o e-trema e i-circunflexo, deixando intactos os caracteres gráficos que muitos programas usam para molduras e as letras gregas utilizadas como símbolos matemáticos e essenciais para relatórios técnicos, por exemplo.

A CP 437 corresponde ao inglês usado nos EUA, e nela faltam além do a-til e o-til a maior parte dos caracteres acentuados maiúsculos. Mas provavelmente é a que vem gravada na ROM de sua controladora de vídeo, ou seja, é sua página de código de hardware.

A CP 850 é a "multilingue latino I". Foi desenvolvida para atender ao maior número possível de idiomas, particularmente os de raízes latinas, dentre os quais o português e espanhol, e incorpora caracteres úteis em alguns desses idiomas, mas absolutamente inservíveis no português (a menos que você consiga enfiar, por exemplo, um u-circunflexo no meio de uma palavra). Como quem pretende satisfazer a todos acaba por deixar a maioria insatisfeita, não é uma boa solução: para abrir espaço para os novos caracteres, a maior parte dos símbolos gráficos usados para o desenho de molduras e linhas foram eliminados, assim como muitas letras gregas (o "alfa" sumiu, mas por alguma razão o "beta" permaneceu; provavelmente para continuar permitindo o desenvolvimento de "versões beta" de software). Entretanto alguns programas utilizam a CP 850 e se você usar o Works ou Word 5.0 sem ela, aparecem símbolos muito estranhos no lugar de alguns caracteres acentuados.

Essas são as principais características das páginas de código que nos interessam. Mas até agora temos discutido as CP como se elas apenas servissem para o vídeo. E sua ação pode se estender também para teclado e impressora. O que parece ótimo. Mas não se anime tanto, que a coisa tem seus percalços. Senão vejamos.

O uso de páginas de código na impressão exige que a própria impressora forneça suporte para elas, e poucas o fazem. De forma que não vamos perder tempo com isso agora. Já no que toca ao teclado, a coisa é mais simples, posto que se o suporte de páginas de código para vídeo tiver sido implementado com os comandos que já examinamos, basta usar o programa Keyb.Com, do próprio DOS, um residente que intercepta as teclas e as converte de acordo com a página de código selecionada (lembre-se que o driver Display.Sys é um gerenciador de console, e console inclui o teclado). O lugar ideal para carregá-lo é, evidentemente, o Autoexec.Bat. Sua sintaxe admite outros parâmetros, mas para nós basta a que segue:

keyb xx,yyy,[via]nomearq

Destrinchemo-la: keyb é o nome do comando. O parâmetro xx representa o código do teclado. Dos possíveis, nos interessam "br", para o teclado brasileiro (disponível apenas a partir da versão 5.0 do MS DOS) e "po" para o teclado português. O parâmetro yyy é o código da página de código a ser utilizada, obrigatoriamente uma das que tiver sido previamente preparada para o console. E [via]nomearq representa a via de diretório e o nome do arquivo Keyboard.Sys, do DOS, que contém as informações sobre os teclados. Também nesse caso, se você copiar o arquivo Keyboard.Sys para o diretório raiz do disco de boot, pode suprimir a [via] na linha de comando.

Parece ótimo: com o residente Keyb.Com instalado é possível usar caracteres acentuados como em uma máquina de escrever, teclando-se o acento seguido da letra. O problema é que Keyb.Com muda o lay-out do teclado de acordo com o país. Se você estiver usando a CP 860, do idioma português, e ajustar o teclado usando o parâmetro "po", as teclas de seu teclado ficarão completamente "embaralhadas" e vai ter que teclar o sinal "<" menor-que toda a vez que precisar de um dois-pontos, por exemplo, pois as teclas mudam de posição no teclado e aparecem de acordo com a disposição usada em Portugal, completamente diferente do padrão americano da maioria dos nossos teclados, o "US Keyboard".

E verdade que sempre se pode usar o parâmetro "br", do teclado brasileiro, que não muda o lay-out do teclado padrão americano e permite acentuar da mesma forma (o cedilha é obtido teclando o acento agudo seguido do "C"). Mas quando se especifica o teclado deve-se especificar também a CP. E os parâmetros xx e yyy devem combinar um com o outro e com o país usado no comando "country". Explicando melhor: quando você especifica o parâmetro xx, ou seja, escolhe o país, somente poderá especificar determinadas páginas de código que "combinem" com o país escolhido. Em outras palavras: cada código de teclado somente aceita determinadas páginas de código. E a Microsoft, que desenvolveu essa tralha toda, decidiu que o Brasil e a CP 860 do idioma português não combinam, ou seja, se for escolhido o teclado brasileiro não será possível usar a CP 860, do idioma português. Parece estúpido? Parece mesmo. Mas acontece que por insondáveis razões a Microsoft resolveu que o Brasil deve usar apenas as CP 850 "multilingue latino I" e 437 americana, jamais a 860. Talvez algum dia os luminares da Microsoft consigam me explicar por que a CP 437 do inglês dos EUA foi tornada compatível com o código de país 055, correspondente ao Brasil e a 860 do idioma português não, mas até agora, por meus próprios meios, confesso não ter conseguido deslindar esse mistério.

Então, conforme o evangelho segundo a Microsoft, nós brasileiros devemos usar as CP 437 e 850 e nos privarmos da 860 do idioma português. Mas acontece que a CP 850, embora tenha todos os caracteres acentuados do português, inclui uma multidão de outros que não têm serventia alguma (para que servem um "e" ou um "u" com acento grave, por exemplo?). E exclui a maior parte das letras gregas usadas em textos técnicos e uma série de símbolos gráficos que muitos programas utilizam para molduras (experimente rodar o XTree ou DesqView na CP 850 e veja que maldita confusão aparece na tela). O que é muito inconveniente.

Temos então um problema: ou usamos a CP 850 e o teclado brasileiro para acentuar, e perdemos os símbolos gráficos e letras gregas, ou usamos a CP 860 do português que não tem esse inconveniente. Mas se usarmos seu teclado, embaralhamos as teclas do nosso. Vejamos como resolver este aparente impasse.

B. Piropo