Ceci est un addendum à la réponse de Steven C. Howell.
J'ai un nouveau MacBook Pro avec un clavier scandinave. Ce nouveau modèle n'a plus de touche Esc, ce qui est un handicap important pour moi.
J'ai découvert que ce qui suit traduira la touche § (en haut à gauche, à gauche de 1 et au-dessus de la touche de tabulation) - que je ne pense pas avoir utilisé pour quoi que ce soit avant aujourd'hui - pour produire Esc.
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'
Dans la documentation d'Apple (liée à la réponse de Steven), cela est étiqueté comme "Clavier non américain \ et |" (0x64).
Plusieurs des touches «non américaines» sont difficiles à découvrir car elles se réfèrent généralement à des touches qui ont une étiquette différente sur le clavier que vous utilisez. (J'ai également découvert que "Accent grave et tilde" se réfère à la touche entre le décalage gauche et z, qui sur mon clavier produit <
. Je n'ai pas pu déterminer quelle touche correspond à "Non US #
et ~
" et je n'ai pas expérimenté davantage une fois que j'ai trouvé ma clé.) Si vous voulez expérimenter, essayez d'exécuter le script dans le terminal jusqu'à ce que vous trouviez la clé dont vous avez besoin:
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
Cela boucle sur les codes clés et change un à la fois, dans l'espoir que vous puissiez trouver par essais et erreurs une clé qui ne vous est pas particulièrement utile. Essayez de taper quelque chose quand il vous le demande - si vous obtenez un g
au lieu de ce que vous attendiez, vous avez trouvé le bon code clé. (Passez 0x70000000a
à autre chose si ce g
n'est pas un choix pratique pour vous. Peut-être que vous voulez remapper la g
clé?) Lorsque vous avez terminé de taper, appuyez simplement sur Entrée pour passer à la touche suivante.
Pour ce que ça vaut, la dernière commande dans la boucle est la façon dont vous zappez tous les UserKeyMapping
paramètres:
hidutil property --set '{"UserKeyMapping":[{}]}'
Lorsque vous exécutez initialement, hidutil property --get UserKeyMapping
il produit
(null)
mais il semble que vous ne puissiez pas réinjecter cette valeur pour zapper le paramètre (ou plutôt, il accepte mais ignore cette entrée).
(Si vous n'êtes pas familier avec le terminal, il suffit de copier / coller la chose à partir for
jusqu'à ce que done
votre bash$
message ou similaire.)
Conformément à cette question relative au débordement de pile, vous pouvez placer la commande dans un fichier de script dans votre répertoire personnel et l'ajouter à votre launchd
configuration pour rendre cette modification persistante.
Si certains lecteurs ne sont pas à l'aise de le faire par eux-mêmes, voici un script rapide qui le fait pour vous. Encore une fois, copiez / collez simplement cela à l'invite du 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
Évidemment, si vous vous retrouvez avec une autre clé que 0x700000064
vous devez changer cela dans le script ou dans le fichier "$HOME"/bin/userkeymapping
qu'il finit par créer si vous avez déjà exécuté ce qui précède.