Es ist wichtig, dass der defaults
Befehl die richtige "Tastatur-ID" in der Taste verwendet. Es scheint:com.apple.keyboard.modifiermapping.$VendorID-$ProductID-0
Zum Beispiel die interne Tastatur für mein MacBook Air verwendet:, com.apple.keyboard.modifiermapping.1452-579-0
während die externe Tastatur auf meinem iMac verwendetcom.apple.keyboard.modifiermapping.1118-219-0
Wie erhalte ich die richtige "Tastatur-ID"? In der Befehlszeile können Sie Folgendes verwenden:
ioreg -p IOUSB -c IOUSBDevice | grep -e class -e idVendor -e idProduct
So rufen Sie eine Liste Ihrer USB-Geräte mit den entsprechenden Parametern ab:
[...]
+-o Natural® Ergonomic Keyboard 4000@fa140000 <class IOUSBDevice, id 0x100000452, registered, matched, active, busy 0 (115 ms), retain 12>
"idProduct" = 219
"idVendor" = 1118
Ich vermute, dass der dritte Parameter (der "-0" -Teil) ein "Zähler" ist, falls Sie mehr als eine Tastatur des gleichen Typs haben.
Um die Feststelltaste auf meiner externen Tastatur auszuschalten, kann ich jetzt Folgendes verwenden:
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>'
Der Vollständigkeit halber finden Sie hier eine Liste der möglichen Schlüsselcodes ( aus Mac OS X Hints) ):
- Keine - –1
- Feststelltaste - 0
- Shift (Links) - 1
- Steuerung (links) - 2
- Option (links) - 3
- Befehl (links) - 4
- Tastatur 0 - 5
- Hilfe - 6
- Umschalt (rechts) - 9
- Steuerung (rechts) - 10
- Option (rechts) - 11
- Befehl (rechts) - 12
Update: Dank Lauri Ranta gibt es hier einen Befehl, der für Bluetooth- und USB-Tastaturen funktioniert:
ioreg -n IOHIDKeyboard -r | grep -e 'class IOHIDKeyboard' -e VendorID\" -e Product
Das gibt Ihnen etwas andere Ausgabe:
+-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'
stattdessen. Funktioniert aber immer noch nicht.