Usando teclados especiales y teclas adicionales en Linux

Base de Datos de Soporte (cg_spckeyboard)

Situación:

Usted quiere utilizar un teclado con una tecla 'Internet' o otra tecla adicional en Linux. Básicamente, es normal conectar a un PC corriente un teclado con teclas adicionales, p.e. con más de 102 o 105 teclas. No parece suceder nada cuando presiona en teclas adicionales. Sin embargo, usted quisiera utilizar estas teclas.

Fondo:

Básicamente, estas teclas funcionan como todas las demás en el teclado. Sin embargo, No hay una tabla para que se 'traduzcan' estas teclas especiales en funciones deseadas. El kernel de Linux utiliza dos tablas. La primera traduce el scancode generado por el teclado también llamado keycode, el cual es transformado a la actual disposición de teclado por medio de una definición, específica para cada país keymap que es cargada por el usuario.

Como las teclas especiales generan scancodes, desconocidos. Desafortunadamente tiene que cambiar las dos tablas. A continuación describiremos el procedimiento paso a paso.

Procedimiento:

Actualmente, el procedimiento descrito sólo puede ser usado en consolas de texto. Debido a la configuración especial para el servidor X, estas configuraciones no pueden ser adoptadas bajo X.

Proceda de la siguiente forma para configurar la teclas adicionales en la consola.

Lo primero de todo, saber que scancode genera una tecla especial. Usted puede hacer esto con ayuda del comando showkey -s. Seguidamente presione todas las teclas especiales (el código generado usualmente comienza con 0xe0) y tome nota del código. Esto seria el resultado de como debería mostrar-se:

erde:~# showkey -s
kb mode was XLATE

press any key (program terminates 10s after last keypress)...
0x9c
0xe0 0x25
0xe0 0xa5
0xe0 0x26
0xe0 0xa6
0xe0 0x32
0xe0 0xb2

Para terminar el programa, simplemente esperar 10 segundos sin presionar ninguna tecla. En el ejemplo anteriormente mencionado, se han presionado 3 teclas especiales, cada una de ellas genera 2 bytes de código cuando se presiona la tecla y otros 2 bytes cuando se deja de presionar. Usted necesita el valor mostrado cuando se presiona la tecla. A propósito el primer valor visualizado por el programa es el código generado por la tecla 'Return' cuando deja de presionar-se...

Por lo tanto, estos son los códigos extraídos del ejemplo anterior:

0xe0 0x25 for the 1. key
0xe0 0x26 for the 2. key
0xe0 0x32 for the 3. key

Por medio de un shell script, usted puede asignar éstos a los llamados keycodes. Los keycodes 112-125 no son utilizados por ninguna otra tecla y deberían asignar-se sin problemas a las teclas especiales. Esto se hace a través de los siguientes comandos.

setkeycodes e025 112
setkeycodes e026 113
setkeycodes e032 114

Desde ahora, el kernel generará los respectivos keycodes cuando las teclas especiales sean pulsadas. Las funciones de estos keycodes deben ser asignadas mediante la segunda tabla.

Usted puede hacer esto con el comando keymap que es cargado automáticamente por uno de los scripts de inicio que configura la disposición de teclado Español (ES) cuando el sistema es cargado. El keymap para el teclado Español (ES) lo puede encontrar bajo el nombre /usr/lib/kbd/keymaps/i386/qwerty/us.map.gz.

Para modificar el fichero, descomprima-lo con el comando gunzip. Compruebe las páginas man para el comando loadkeys y el fichero keymaps para asignar funciones especiales a estas teclas. En mi ejemplo, yo asigno las teclas F13 - F15 a las teclas especiales y asigno un comando usado habitualmente a la teclas especial. Para este propósito, añado las siguiente lineas al es.map:

keycode 112 = F13
keycode 113 = F14
keycode 114 = F15
string F13 = "ls\n"

Cargando después el nuevo keymap con el comando

loadkeys es.map
Usted puede invocar el comando ls presionando la primera tecla especial. En este camino, usted puede libremente definir teclas de función (listadas en la página man de 'keymaps') o otras teclas, las cuales estarán a su disposición en la consola.


Palabras clave: KEYBOARD, SPECIAL, ADDITIONAL KEYS, IBM, RAPID

Temas: Documentación

SDB-cg_spckeyboard, Copyright SuSE Linux AG, Nürnberg, Germany - Versión: 08. Okt 2001
SuSE Linux AG - : 09. Okt 2001 de ip (sdb_gen 1.40.0)