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 jamais utilisée pour quoi que ce soit avant aujourd'hui - pour produire Esc.
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'
Dans la documentation d'Apple (dont le lien se trouve dans la réponse de Steven), cela est désigné par "Keyboard Non-US \ and |" (0x64). (0x64).
Plusieurs des touches "non américaines" sont difficiles à découvrir car elles font généralement référence à des touches dont l'étiquette est différente sur le clavier que vous utilisez. (J'ai également découvert que "Grave accent et tilde" fait référence à la touche située entre shift gauche et z, ce qui sur mon clavier produit <
. Je n'ai pas pu établir quelle touche correspond à "Non-US". #
y ~
" et je n'ai pas fait d'autres expériences 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
Cette procédure passe en revue les codes clés et les modifie un par un, dans l'espoir que vous puissiez trouver par tâtonnement 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é. (Changement 0x70000000a
à quelque chose d'autre si g
n'est pas un choix pratique pour vous. Peut-être voulez-vous remodeler le g
clé ?) Lorsque vous avez fini de taper, appuyez simplement sur la touche Entrée pour passer à la touche suivante.
Pour ce que ça vaut, la dernière commande à l'intérieur de la boucle est la façon dont vous zappez tout 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 pouvez pas renvoyer cette valeur pour désactiver 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 de for
jusqu'à done
à votre bash$
ou similaire).
Conformément à cette question connexe de Stack Overflow vous pouvez placer la commande dans un fichier script dans votre répertoire d'origine et l'ajouter à votre fichier launchd
pour rendre ce changement persistant.
Au cas où certains lecteurs ne seraient pas à l'aise pour faire cela par eux-mêmes, voici un script rapide qui le fait pour vous. Encore une fois, il suffit de copier/coller ceci à l'invite du 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
Evidemment, si vous vous retrouvez avec une autre clé que 0x700000064
vous devez changer cela dans le script, ou dans le fichier ~/bin/userkeymapping
il finit par créer si vous avez déjà exécuté ce qui précède.