Vamos a programar #86 - Reasignando teclas del teclado.
Hola de nuevo a todos, el día de hoy vamos a ver cómo reasignar algunas botones
de nuestro teclado para que hagan otra cosa.
El código de la tecla que queremos usar es "E0 20" y el código de la tecla "Page UP" es "E0 49" pero ¿y después? Cómo ya mencione antes, Windows es el encargado de gestionar las pulsaciones y guarda esta configuración en el registro. Para acceder a ella, necesitamos encontrar la siguiente clave:
Hace unos días en la eterna lucha del hombre contra la máquina, mi teclado
simplemente decidió que 15 años de uso eran suficientes y simplemente ya no
quiso funcionar. Mi teclado compaq 5185 fue el primero que tuve y lo use de
forma bastante extenuante.
Algo paso que simplemente ya no quiso reconocer las pulsaciones. Cómo siempre
que "reparo" algo hay una enorme tendencia a que me "sobren" piezas,
simplemente decidí guardarlo. Para su reemplazo, saque un teclado que un amigo
me regaló hace mucho (cómo el de la primer imagen), es más compacto y mas
viejo que el mio pero totalmente funcional salvo por unos cuantos botones.
Mi primer teclado tenía la ventaja que tenia varios botones adicionales; los
mas importantes (para mi) eran: volumen arriba, volumen abajo, silencio y
calculadora. El reemplazo también tiene unos botones extra (seis para ser
exacto), pero al conectarlo y presionarlos, ninguna hizo nada. Busqué los
controladores pero no encontré ninguno para mi sistema operativo. Las teclas
"normales" funcionan cómo deben, pero las "especiales" no.
Para solucionar mi problema busque en internet y encontré que todas las
pulsaciones del teclado son gestionadas por el sistema operativo, es decir, si
presionamos una tecla, está genera un código pero nuestro amigo Windows es el
responsable de que pasa después y no solo eso, posee la capacidad de reasignar
las pulsaciones.
Tomando en cuenta lo anterior, vamos a buscar una forma de re-asignar una
tecla, pero hay una advertencia, vamos a modificar el registro de Windows (el
registro prácticamente es un lugar donde se guardan las configuraciones de una
computadora con ese sistema operativo), si sigues los pasos que voy a mostrar
no habrá ningún problema, pero si mueves más "cosillas" puedes hacer que el PC
no inicie correctamente.
Antes que nada veamos unos cuantos códigos para algunas teclas.
US key assignment |
Base Make |
---|---|
Insert |
E0 52 |
Delete |
E0 53 |
Left Arrow |
E0 4B |
Home |
E0 47 |
End |
E0 4F |
Up Arrow |
E0 48 |
Dn Arrow |
E0 50 |
Page Up |
E0 49 |
Page Down |
E0 51 |
Right Arrow |
E0 4D |
Para nuestra demostración vamos a usar la tecla "Page Up" y la vamos a
reasignar para silenciar el volumen del sistema. La siguiente tabla
muestra algunos de los códigos de teclas multimedia.
CODE | ALIAS |
---|---|
E0 6A | VK_BROWSER_BACK |
E0 69 | VK_BROWSER_FORWARD |
E0 67 | VK_BROWSER_REFRESH |
E0 68 | VK_BROWSER_STOP |
E0 65 | VK_BROWSER_SEARCH |
E0 66 | VK_BROWSER_FAVORITES |
E0 32 | VK_BROWSER_HOME |
E0 20 | VK_VOLUME_MUTE |
E0 2E | VK_VOLUME_DOWN |
E0 30 | VK_VOLUME_UP |
E0 19 | VK_MEDIA_NEXT_TRACK |
E0 10 | VK_MEDIA_PREV_TRACK |
E0 24 | VK_MEDIA_STOP |
E0 22 | VK_MEDIA_PLAY_PAUSE |
E0 6C | VK_LAUNCH_MAIL |
E0 6D | VK_LAUNCH_MEDIA_SELECT |
E0 6B | VK_LAUNCH_APP1 |
E0 21 | VK_LAUNCH_APP2 |
El código de la tecla que queremos usar es "E0 20" y el código de la tecla "Page UP" es "E0 49" pero ¿y después? Cómo ya mencione antes, Windows es el encargado de gestionar las pulsaciones y guarda esta configuración en el registro. Para acceder a ella, necesitamos encontrar la siguiente clave:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
Ahí crearemos un nuevo valor binario.
La estructura que debe de tener el valor es de la siguiente forma:
- 00,00,00,00 > encabezado
- 00,00,00,00 > flags
- 02,00,00,00 > número de entradas más uno
- xx,xx,xx,xx > el código de las teclas a reasignar empezando por el código que queremos que se aplique seguido por el código de la tecla
- 00,00,00,00 > terminación.
Hay que notar que cada código tiene los valores "invertidos", es decir, la tecla de silencio tiene el código "E0 20" pero al momento de escribir el valor en el registro, lo ponemos cómo "20 E0" y lo mismo va para todas las teclas, la tecla "Page Up" tiene el codigo "E0 49" pero lo escribimos cómo "49 E0". Al reiniciar la computadora y presionamos la tecla "Page Up", el sistema se debería de silenciar (en caso contrario algo salio mal). Si quieres hacer el proceso de forma automática, puedes copiar el siguiente texto y guardarlo cómo "key.reg" usando el bloc de notas.
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] "Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,20,E0,49,E0,00,00,00,00
Cada vez que hagas un cambio se debe de reiniciar la computadora.
Finalmente y a manera de ejemplo, supongamos que queremos cambiar las teclas que ya cambiamos, pero ademas queremos que la tecla numérica 7 suba el volumen, tendríamos algo cómo lo que sigue:
- 00,00,00,00 > encabezado
- 00,00,00,00 > flags
- 03,00,00,00 > número de entradas más uno
- 20,e0,49,e0 > el código del primer juego de teclas
- 30,e0,47,00 > el código del segundo juego de teclas
- 00,00,00,00 > terminación.
Los leo luego.
No hay comentarios.