Next
Previous
Contents
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.
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 `ã'.
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.
- 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.
- Loadunimap
Carrega um mapa de tradução de Unicode para a fonte de tela. O mapa padrão,
chamado ``def.uni'' considera que estamos usando a fonte normal do IBM-PC.
Este comando não é necessário quando usamos uma fonte com caracteres
definidos no padrão Unicode, pois o programa setfont carrega
automaticamente a tabela de mapeamento adequada. O comando a seguir
carregará o mapa de tradução para as fontes latin-1:
loadunimap lat1
O pacote KBD contém dois tipos de fontes com codificação latin-1:
- as que já possuem uma tabela de mapeamento unicode, carregada
automaticamente pelo programa
setfont . Estas fontes têm nomes
lat1u-*.psf ;
- as que não possuem tabela de mapeamento. Neste caso é preciso carregar
uma com o programa
loadunimap . Estas têm nomes lat1-*.psf
(o ``u'' indica Unicode).
Nas versões mais novas do KBD os arquivos são comprimidos com gzip . É
preciso carregar uma fonte que tenha os caractres latinos acentuados no padrão
ISO 8859-1 e também os símbolos semigráficos. As fontes de nome
iso01.* não possuem esses símbolos. A fonte mais recomendada é a
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.
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
# O comando a seguir é totalmente desnecessário
# com a fonte lat1u-16.psf.
# loadunimap lat1u
# Remova o comentário da linha abaixo se estiver usando uma fonte sem
# tabela de mapeamento de Unicode para tela:
# loadunimap lat1
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!
Red Hat
Edite o arquivo /etc/sysconfig/i18n e veja se contém o seguinte:
LANG=pt_BR
LINGUAS=pt_BR
LC_CTYPE=ISO-8859-1
LC_ALL=pt_BR
SYSFONT=lat1u-16
SYSTERM=linux-lat
Conectiva Red Hat Linux
Se você selecionar a língua correta durante a instalação não há nada mais a
fazer. A configuração é feita extatamente como do Red Hat.
S.u.S.E.
Edite o arquivo /etc/rc.config e procure uma linha que começa com
``FONT='' (linha 64, em minha máquina com S.u.S.E. verão 5.6) e coloque
FONT=lat1u-16.psf
Edite os scripts boot.setup e single contidos no diretório
/etc/rc.d . Procure a linha contendo o comando
/usr/bin/loadunimap e remova-a ou ponha no seu início um ``#''
para deixá-la como comentário. Veja comentários sobre este comando na
seção
Carregamento de uma fonte de caracteres.
Testando a fonte
Experimente algumas teclas como ``,.|!"#$%&/()=?'',
etc. e use o comando showfont para mostrar a fonte em uso.
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.
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 existe um script rc.keyboard.
if [ -x /etc/rc.d/rc.keyboard ]; then
/etc/rc.d/rc.keyboard start
fi
Debian.
Certifique-se de ter instalado o 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 .
Red Hat.
Certifique-se de ter instalado o pacote kbd. Copie os arquivos com os
mapas de teclado fornecidos (veja a seção
Ficheiros necessários) para o diretório
/usr/lib/kbd/keytables/ (ou
/usr/lib/kbd/keymaps/i386/qwerty/ , a pertir do Red Hat 5.2). Não
é necessário descomprimi-los.
Edite o arquivo /etc/sysconfig/keyboard e coloque o nome do mapa a usar na
variável KEYTABLE, como por exemplo
KEYTABLE="abnt2"
Conectiva Red Hat Linux.
O CRHL já vem com os mapas de teclado para Português. Se você selecionou o
teclado correto durante a instalação, não há mais nada a fazer. Caso
contrário, edite o arquivo /etc/sysconfig/keyboard e coloque
KEYTABLE="nome"
Onde ``nome'' é br-abnt2, pt ou us-acentos caso o desenho do
seu teclado seja ABNT-2, português ou americano.
S.u.S.E..
Certifique-se de ter instalado o pacote kbd. Copie os arquivos com os
mapas de teclado fornecidos (veja a seção
Ficheiros necessários) para o diretório
/usr/lib/kbd/keytables/ . Não é necessário 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
Testando o teclado
Experimente pressionar a tecla c-cedilhado (se o teclado não tem esta
tecla, digite 'c ). Verifique se todas as letras acentuadas, maiúsculas e
minúsculas são 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 operações foi mal sucedida.
Se ao invés de c-cedilha minúsculo aparecer um maiúsculo é provável que uma
tabela de mapeamento Unicode incorreta esteja a ser carregada. Este problema
ocorrerá na distribuição S.u.S.E. se não se fizerem as alterações nos scripts
do sistema mencionadas anteriormente.
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.
Next
Previous
Contents
|