Next Previous Contents

3. Configura��o do console (modo texto)

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.

3.1 Mapas de teclado

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 `�'.

3.2 Mapas de tradu��o de tela

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.

3.3 Comandos do pacote KBD

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

3.4 Carregamento de uma fonte de caracteres

O pacote KBD cont�m dois tipos de fontes com codifica��o latin-1:

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.

3.5 Carregando um mapa de teclado

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:

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.

3.6 Verificando erros

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