Cómo cambiar el funcionamiento de las teclas en un teclado de Mac sin instalar ninguna aplicación

A veces necesitamos que una tecla física de nuestro ordenador Mac funcione como otra tecla. Esto suele ser habitual cuando utilizamos aplicaciones de virtualización o emulación de otros sistemas operativos o cuando nuestro teclado tiene problemas físicos. Aunque existen algunas aplicaciones para remapear el teclado en Mac estas aplicaciones pueden que no sean confiables o accesibles. Una de las bondades de MacOS es la posibilidad de realizar una operación de muy diversas formas, podemos hacer esto gracias a comandos de la Terminal de nuestro equipo Apple sin necesidad de instalar ninguna otra aplicación.

El comando hidutil

El comando hidutil nos permite, entre otras cosas, remapear las teclas físicas asignando la función de otra tecla.

Para realizar estos cambios el comando hidutil reescribe valores de un diccionario indicando el nuevo valor para una clave determinada.

Se debe utilizar desde la Terminal de Mac y su sintaxis no es demasiado compleja.


hidutil property --set '{"Nombre del diccionario a modificar":
    [{"nombre de la clave origen":Valor del elemento,
      "Clave a modificar":Nuevo valor}]
}'

Comprobando si ya tenemos alguna tecla remapeada

El propio comando hidutil nos permite saber qué asignaciones o remapeados se han realizado. Si en la Terminal escribimos el siguiente comando y no se nos devuelve NULL se nos listarán los distintos cambios realizados con este comando:


hidutil property --get "UserKeyMapping"

Cambiando nuestro teclado

El nombre del diccionario que debemos modificar es UserKeyMapping

Hay que tener en cuenta que el valor para la clave HIDKeyboardModifierMappingSrc debe ser el de la tecla de origen o tecla que vamos a cambiar y el la clave para la tecla con la que sustituiremos la tecla de origen es HIDKeyboardModifierMappingDstKey

El comando sería algo como:


hidutil property --set '{"UserKeyMapping":
    [{"HIDKeyboardModifierMappingSrc":id de la tecla a cambiar,
      "HIDKeyboardModifierMappingDst":id de la tecla final}]
}'

Por ejemplo, si quisiesemos remapear la tecla de bloqueo de mayúsculas (Caps lock) deberíamos utilizar el id 0x39 y sustituirlo por la tecla Insert cuyo código es 0x49 quedando nuestro ejemplo de la siguiente forma:


hidutil property --set '{"UserKeyMapping":
    [{"HIDKeyboardModifierMappingSrc":0x700000039,
      "HIDKeyboardModifierMappingDst":0x700000049}]
}'

Con este cambio ya no tendríamos que utilizar los menús de remapeo de aplicaciones de virtualización como VirtualBox o VMWare que resultan poco accesibles y podríamos virtualizar un sistema operativo Windows o Linux con la tecla Insert en lugar de la tecla de bloqueo de mayúsculas dejando libre acceso al teclado habitual de lectores de pantallas.

Problemas con el comando hidutil

El problema con el uso del comando hidutil es que el cambio no es permanente. Si reiniciamos o apagamos nuestro equipo Mac deberemos realizar el remapeo de nuevo al volver a encender nuestro equipo.

Una forma de solucionarlo es crearnos un script de AppleScript que ejecute de forma rápida el comando de Terminal para activar el remapeo deseado.

Tabla de valores

A continuación está el listado de teclas con sus correspondientes valores ID.

Tecla Id (hex) Tecla Id (hex) Tecla Id (hex) Tecla Id (hex)
a / A 0x04 5 / % 0x22 F7 0x40 Keypad 6 / Right Arrow 0x5E
b / B 0x05 6 / ^ 0x23 F8 0x41 Keypad 7 / Home 0x5F
c / C 0x06 7 / & 0x24 F9 0x42 Keypad 8 / Up Arrow 0x60
d / D 0x07 8 / * 0x25 F10 0x43 Keypad 9 / Page Up 0x61
e / E 0x08 9 / ( 0x26 F11 0x44 Keypad 0 / Insert 0x62
f / F 0x09 0 / ) 0x27 F12 0x45 Keypad . / Delete 0x63
g / G 0x0A Return (Enter) 0x28 Print Screen 0x46 Non-US \ / | 0x64
h / H 0x0B Escape 0x29 Scroll Lock 0x47 Application 0x65
i / I 0x0C Delete (Backspace) 0x2A Pause 0x48 Power 0x66
j / J 0x0D Tab 0x2B Insert 0x49 Keypad = 0x67
k / K 0x0E Spacebar 0x2C Home 0x4A F13 0x68
l / L 0x0F – / _ 0x2D Page Up 0x4B F14 0x69
m / M 0x10 = / + 0x2E Delete Forward 0x4C F15 0x6A
n / N 0x11 [ / { 0x2F End 0x4D F16 0x6B
o / O 0x12 ] / } 0x30 Page Down 0x4E F17 0x6C
p / P 0x13 \ / | 0x31 Right Arrow 0x4F F18 0x6D
q / Q 0x14 Non-US # / ~ 0x32 Left Arrow 0x50 F19 0x6E
r / R 0x15 ; / : 0x33 Down Arrow 0x51 F20 0x6F
s / S 0x16 ‘ / » 0x34 Up Arrow 0x52 F21 0x70
t / T 0x17 Grave Accent / Tilde 0x35 Keypad Num Lock / Clear 0x53 F22 0x71
u / U 0x18 , / «<» 0x36 Keypad / 0x54 F23 0x72
v / V 0x19 . / «>» 0x37 Keypad * 0x55 F24 0x73
w / W 0x1A / / ? 0x38 Keypad – 0x56 Left Control 0xE0
x / X 0x1B Caps Lock 0x39 Keypad + 0x57 Left Shift 0xE1
y / Y 0x1C F1 0x3A Keypad Enter 0x58 Left Alt 0xE2
z / Z 0x1D F2 0x3B Keypad 1 / End 0x59 Left GUI 0xE3
1 / ! 0x1E F3 0x3C Keypad 2 / Down Arrow 0x5A Right Control 0xE4
2 / @ 0x1F F4 0x3D Keypad 3 / Page Down 0x5B Right Shift 0xE5
3 / # 0x20 F5 0x3E Keypad 4 / Left Arrow 0x5C Right Alt 0xE6
4 / $ 0x21 F6 0x3F Keypad 5 0x5D Right GUI 0xE7

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.