Il est important que la defaults
commande utilise le "numéro d'identification du clavier" correct dans la touche, cela semble être:com.apple.keyboard.modifiermapping.$VendorID-$ProductID-0
Par exemple, le clavier interne de mon MacBook Air utilise:, com.apple.keyboard.modifiermapping.1452-579-0
tandis que le clavier externe de mon iMac utilisecom.apple.keyboard.modifiermapping.1118-219-0
Comment obtenir le bon "ID de clavier"? Sur la ligne de commande, vous pouvez utiliser:
ioreg -p IOUSB -c IOUSBDevice | grep -e class -e idVendor -e idProduct
pour obtenir une liste de vos périphériques USB avec les paramètres appropriés:
[...]
+-o Natural® Ergonomic Keyboard 4000@fa140000 <class IOUSBDevice, id 0x100000452, registered, matched, active, busy 0 (115 ms), retain 12>
"idProduct" = 219
"idVendor" = 1118
Je suppose que le troisième paramètre (la partie "-0") est un "compteur", dans le cas où vous avez plus d'un clavier du même type.
Donc, pour désactiver la touche CapsLock sur mon clavier externe, je peux maintenant utiliser:
defaults -currentHost write -g com.apple.keyboard.modifiermapping.1118-219-0 -array-add '<dict><key>HIDKeyboardModifierMappingDst</key><integer>-1</integer><key>HIDKeyboardModifierMappingSrc</key><integer>0</integer></dict>'
Et, par souci d'exhaustivité, voici une liste des codes de clé possibles à utiliser (à partir des astuces Mac OS X ):
- Aucun - -1
- Caps Lock - 0
- Maj (à gauche) - 1
- Contrôle (gauche) - 2
- Option (gauche) - 3
- Commande (gauche) - 4
- Clavier 0 - 5
- Aide - 6
- Maj (à droite) - 9
- Contrôle (droite) - 10
- Option (droite) - 11
- Commande (droite) - 12
Mise à jour: grâce à Lauri Ranta, voici une commande qui fonctionne pour les claviers Bluetooth et USB:
ioreg -n IOHIDKeyboard -r | grep -e 'class IOHIDKeyboard' -e VendorID\" -e Product
ce qui vous donne une sortie légèrement différente:
+-o IOHIDKeyboard <class IOHIDKeyboard, id 0x100000489, registered, matched, active, busy 0 (0 ms), retain 8>
| "Product" = "Apple Wireless Keyboard"
| "VendorID" = 1452
| "ProductID" = 570
defaults -currentHost write -g key 'value'
place. Cela ne fonctionne toujours pas.