Esta es una adición a la respuesta de Steven C. Howell.
Tengo un nuevo MacBook Pro con un teclado escandinavo. Este nuevo modelo ya no tiene la tecla Esc, lo que supone una importante desventaja para mí.
Descubrí que lo siguiente traducirá la tecla § (arriba a la izquierda, a la izquierda del 1 y arriba del tabulador) - que creo que nunca he usado para nada antes de hoy - para producir Esc.
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'
En la documentación de Apple (enlazada desde la respuesta de Steven) esto está etiquetado como "Keyboard Non-US \ and |" (0x64).
Varias de las teclas "no estadounidenses" son difíciles de descubrir porque suelen referirse a teclas que tienen una etiqueta diferente en el teclado que estás utilizando. (También descubrí que "acento grave y tilde" se refiere a la tecla entre la mayúscula izquierda y la z, que en mi teclado produce <
. No he podido establecer qué tecla corresponde a "No estadounidense". #
y ~
" y no experimenté más una vez que encontré mi clave). Si quieres experimentar, intenta ejecutar el script en la terminal hasta que encuentres la clave que necesitas:
for ((i=1;i<=128;++i)); do
printf '0x7000000%0x\n' "$i"
printf '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x7000000%0x,"HIDKeyboardModifierMappingDst":0x70000000a}]}' "$i" |
xargs -0 hidutil property --set >/dev/null
read -p "Type some stuff: "
hidutil property --set '{"UserKeyMapping":[{}]}' >/dev/null
done
Esto hace un bucle sobre los códigos clave y los cambia de uno en uno, con la esperanza de que pueda encontrar a través de la prueba y el error una clave que no es particularmente útil para usted. Intenta escribir algo cuando te lo pida -- si obtienes un g
en lugar de lo que esperaba, ha encontrado el código clave correcto. (Cambiar 0x70000000a
a otra cosa si g
no es una opción conveniente para usted. Tal vez quiera reajustar el g
). Cuando termine de escribir, sólo tiene que pulsar Enter para pasar a la siguiente tecla.
Por si sirve de algo, el último comando dentro del bucle es la forma en que se eliminan todos los UserKeyMapping
ajustes:
hidutil property --set '{"UserKeyMapping":[{}]}'
Cuando se ejecuta inicialmente hidutil property --get UserKeyMapping
produce
(null)
pero parece que no se puede retroalimentar este valor para zapar el ajuste (o más bien, acepta pero ignora esta entrada).
(Si no estás familiarizado con el Terminal, sólo tienes que copiar y pegar la cosa desde for
hasta done
en su bash$
o similar).
Según esta pregunta relacionada con Stack Overflow puedes poner el comando en un archivo script en tu directorio principal y añadirlo a tu launchd
para que este cambio sea persistente.
En caso de que algunos lectores no se sientan cómodos haciendo esto por su cuenta, aquí hay un rápido script que lo hace por ti. Una vez más, sólo tienes que copiar/pegar esto en el prompt de la Terminal.
mkdir -p ~/bin
printf '%s\n' '#!/bin/sh' \
'hidutil property --set '"'"'{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'"'" \
>~/bin/userkeymapping
chmod 755 ~/bin/userkeymapping
mkdir -p ~/Library/LaunchAgents
cat<<: >~/Library/LaunchAgents/userkeymapping.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>userkeymapping</string>
<key>ProgramArguments</key>
<array>
<string>$HOME/bin/userkeymapping</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
:
launchctl load ~/Library/LaunchAgents/userkeymapping.plist
Obviamente, si usted terminó con alguna otra llave que 0x700000064
debe cambiarlo en el script, o en el archivo ~/bin/userkeymapping
acaba creando si ya has ejecutado lo anterior.