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.
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. keyPor 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.mapUsted 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.