Récemment, je me suis offert un clavier mécanique de la marque Keychron (le K4) que j’adore particulièrement.
Néanmoins, j’ai été confronté à une problématique et pas des moindres: l’habitude 😀
En effet, cela fait maintenant plusieurs années que j’utilise le clavier Apple et j’ai pris pour habitude d’utiliser la touche « Option droite » du clavier afin de réaliser les caractères spéciaux comme par exemple: {}[]
Avec les claviers mécaniques, vu que la taille est souvent réduite, la touche option droite n’existe pas et elle est remplacée par la touche « Command », du coup, il me manquait celle-ci.
Il existe des logiciels pour réaliser des remapping de touches comme par exemple Karabiner-Element mais néanmoins, je ne suis vraiment pas à l’aise avec un logiciel qui prend note de toutes les saisies de votre clavier avec les pleins pouvoirs sur votre machine. Il était hors de question pour moi d’utiliser cette méthode.
Je me suis mis en tête de chercher une solution avec le terminal et je suis tombé sur 2 articles très intéressants: le premier vient du site d’Apple TN2450 et le second de StackOverflow
Les 2 combinés permettent de créer un script simple afin de remapper toutes les touches de votre clavier avec une autre touche et même les touches de modification (cmd, alt, control, …).
La procédure à suivre
La première étape et de faire un listing des touches que vous voulez remplacer. Pour ma part je souhaite utiliser la touche CMD droite comme si c’était la touche ALT droite.
Je me rends donc sur l’article cité plus haut TN2450 et je regarde dans le tableau de correspondance le code des touches.
Ici nous avons donc la touche CMD Droite :
Keyboard Right GUI | 0xE7 |
et nous allons la remplacer par la touche Alt droite:
Keyboard Right Alt | 0xE6 |
Nous allons devoir faire une correspondance pour le code Hexadécimal. Rien de plus simple, nous prenons les 2 derniers caractères cités plus haut et rajoutons devant 0x7000000XX
Dans notre cas nous aurons donc 0x7000000E7
et 0x7000000E6
Une fois ceci fait, nous allons ouvrir le Terminal et allons lancer la commande suivante:
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x7000000E7,"HIDKeyboardModifierMappingDst":0x7000000E6}]}'
« HIDKeyboardModifierMappingSrc » représente la touche que nous voulons remplacer
« HIDKeyboardModifierMappingDst » représente la touche qui sera activée
Pour mapper plusieurs touches, il convient de séparer le tableau de paramètre avec une virgule ce qui donnerait:
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x7000000E7,"HIDKeyboardModifierMappingDst":0x7000000E6},{"HIDKeyboardModifierMappingSrc":0x7000000E7,"HIDKeyboardModifierMappingDst":0x7000000E6}]}'
On se rend ensuite sur un éditeur de texte et on test, super ça marche on peut passer à la suite.
Si besoin d’effacer la configuration il suffit de rentrer
hidutil property --set '{"UserKeyMapping":""}'
Le problème est qu’au redémarrage du système, la configuration n’est pas sauvegardé dans la machine et c’est pourquoi nous allons devoir créer un script.
Nous ouvrons notre application textEdit -> Nouveau document -> Format -> Convertir au format Texte.
Et nous allons copier/coller le texte suivant :
<?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 »>
<!– Place in ~/Library/LaunchAgents/ –>
<!– Open Terminal and type cd ~/Library/LaunchAgents/ –>
<!– launchctl load com.local.KeyRemapping.plist –>
<plist version= »1.0″>
<dict>
<key>Label</key>
<string>com.local.KeyRemapping</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/hidutil</string>
<string>property</string>
<string>–set</string>
<string>{« UserKeyMapping »:[{« HIDKeyboardModifierMappingSrc »:0x7000000E7, »HIDKeyboardModifierMappingDst »:0x7000000E6}]}</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Attention il conviendra de remplacer la ligne UserKeyMapping par votre propre code entre <string> et </string>
On enregistre le fichier en décochant l’extension .txt par défaut et en le renommant com.local.KeyRemapping.plist
Nous allons ensuite nous rendre à ~/Library/LaunchAgents
en étant sur le Finder et en tapant CMD+Maj+G et on va copier/coller le ficher à l’intérieur.
Quand cela est fait, nous allons relancer le terminal et taper cd ~/Library/LaunchAgents
et enfin launchctl load com.local.KeyRemapping.plist
qui aura pour effet de charger le script au démarrage.
Vous voilà maintenant avec un mapping custom de votre clavier 😉
Il suffira de supprimer le fichier com.local.KeyRemapping.plist dans ~/Library/LaunchAgents
le jour ou vous ne souhaitez plus remapper vos touches et/ou de décharger le fichier de configuration avec la commande launchctl unload com.local.KeyRemapping.plist