Esta es una adición a la respuesta de Steven C. Howell.
Tengo una nueva MacBook Pro con un teclado escandinavo. Este nuevo modelo ya no tiene una tecla Esc, lo cual es una desventaja importante para mí.
Descubrí que lo siguiente traducirá la tecla § (esquina superior izquierda, izquierda de la tecla 1 y superior), que no creo que haya usado para nada antes, para producir Esc.
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'
En la documentación de Apple (vinculada desde la respuesta de Steven) esto está etiquetado como "Teclado no estadounidense \ y |" (0x64)
Varias de las teclas "no estadounidenses" son difíciles de descubrir porque normalmente se refieren a teclas que tienen una etiqueta diferente en el teclado que está utilizando. (También descubrí que "Acento grave y tilde" se refiere a la tecla entre desplazamiento a la izquierda y z, que produce en mi teclado <
. No pude establecer qué tecla corresponde a "No estadounidense #
y ~
" y no experimenté más una vez que encontré mi clave.) Si desea experimentar, intente ejecutar el script en el terminal hasta que encuentre la clave que necesita:
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 recorre los códigos clave y cambia de uno en uno, con la esperanza de que pueda encontrar mediante prueba y error una clave que no sea particularmente útil para usted. Intenta escribir algo cuando te lo pida; si obtienes uno en g
lugar de lo que esperabas, has encontrado el código de clave correcto. (Cambie 0x70000000a
a otra cosa si g
no es una opción conveniente para usted. ¿Quizás quiera reasignar la g
clave?) Cuando termine de escribir, simplemente presione Intro para pasar a la siguiente clave.
Para lo que vale, el último comando dentro del bucle es cómo eliminar todas las UserKeyMapping
configuraciones:
hidutil property --set '{"UserKeyMapping":[{}]}'
Cuando se ejecuta inicialmente hidutil property --get UserKeyMapping
produce
(null)
pero parece que no puede retroalimentar este valor para cambiar la configuración (o más bien, acepta pero ignora esta entrada).
(Si no está familiarizado con el terminal, simplemente copiar / pegar el asunto desde for
hasta done
en su bash$
pronta o similar).
Según esta pregunta relacionada con el desbordamiento de pila , puede colocar el comando en un archivo de script en su directorio de inicio y agregarlo a su launchd
configuración 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 script rápido que lo hace por usted. Nuevamente, solo copie / pegue esto en el indicador de Terminal.
mkdir -p "$HOME"/bin
printf '%s\n' '#!/bin/sh' \
'hidutil property --set '"'"'{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'"'" \
>"$HOME"/bin/userkeymapping
chmod 755 "$HOME"/bin/userkeymapping
cat<<: >"$HOME"/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 "$HOME"/Library/LaunchAgents/userkeymapping.plist
Obviamente, si terminó con alguna otra clave de la 0x700000064
que necesita cambiar eso en el script, o en el archivo "$HOME"/bin/userkeymapping
, termina creando si ya ejecutó lo anterior.