Cómo solucionar el problema del
teclado con Linux para x86 sobre Virtual PC |
 |
Las distribuciones de Linux para x86 se pueden instalar
en Virtual PC, pero desgraciadamente algunas teclas no
funcionan
correctamente con el teclado en español. Si usted
ha sufrido este problema aquí le enseñamos
como solucionarlo.
Al arrancar Linux uno de los comandos que ejecuta es el
comando:
loadkey /usr/share/kbd/keymaps/i386/qwerty/es.map.gz
El cual carga la configuración del teclado que está
almacenada en el fichero del idioma para el que está configurado.
Por ejemplo en Slackware el script de arranque que ejecuta
este
comando está en /etc/rc.d/rc.keymap.
Por desgracia el fichero es.map.gz tiene
algunos problemas con alguna teclas del teclado de Apple
que vamos a explicar como solucionar aquí.

Antes de nada conviene saber que cuando se pulsa
una tecla se generan uno o más scan codes,
los cuales recoge el driver de teclado del kernel de Linux.
Una simple pulsación de tecla puede tener hasta 6
scan codes los cuales se suelen escribir en notación
hexadecimal, por ejemplo al pulsar y soltar la tecla de tabulador
del
teclado en español
se generan los scancodes 0x0f 0x8f. El controlador
de teclado
del
kernel
de Linux
puede
enviar
estos scan codes directamente
a un programa
cuando
el programa pide el modo scan codes (p.e. en el caso de
XWindows, este procesa directamente los scan codes de teclado).
Aunque
en modo consola es mas típico que estos scan codes
se conviertan a través de una tabla en key
codes,
los cuales recibe un programa cuando se encuentra en modo
key
codes
(un modo
no
muy usado
por los programas). Estos key codes se representan con números
en decimal que no tienen porque corresponder con sus scan
codes, por ejemplo a los scan codes 0x0f, 0x8f les corresponden
los keycodes 15, 15. Si el programa no está en modo
key codes, estos códigos pasan por la tabla
de keymap cargada
por loadkeys,
en nuestro caso es.map.gz,
y se convierten en una cadena con uno o más caracteres que
se transmiten a la entrada estándar del programa.
Esta cadena puede tener un sólo carácter como
por ejemplo "\t",
o bien varios caracteres lo cual suele ocurrir con secuencias
de escape de la forma "\027rn".
También dependiendo de las teclas de control previamente
apretadas se producirá una cadena o otra, por ejemplo
si estaba pulsada la tecla de mayúsculas cuando pulsamos
la
a se produce la cadena "A".
Este último modo es el modo en el que suelen trabajar
la mayoría de los programas de consola.
Podemos ver la asignación de teclas que ha cargado loadkeys usando
el comando dumpkeys, o
bien descomprimiendo y editando el fichero es.map.gz.
Por otro lado podemos conocer el scan code de una tecla del
teclado con el comando showkey
-s, el key code de una tecla
con showkey -k, o su cadena
ASCII con showkey
-a. Estos comandos nos puede ayudar a identificar
los key codes de las teclas que no funcionan bien sobre Virtual
PC y modificar el fichero es.map.gz convenientemente.
En mi caso he creado el fichero es.virtualpc.map.gz el
cual corrige las teclas que no funcionan bien en mi teclado
y que puedo cargar con:
$ loadkeys es.virtualpc.map.gz
Lo ideal sería poner este comando en los script de arranque
de sus sistema operativo para que ya siempre le arranque
correctamente.
También puede cambiar los scan codes que corresponden a
un key code con el comando:
$ setkeycodes 0c5b 125
Y los caracteres que genera un key code con:
$ loadkeys
keycode 125 = backslash
|