Ważne jest, aby defaults
polecenie używało poprawnego „identyfikatora klawiatury” w klawiszu, wydaje się, że:com.apple.keyboard.modifiermapping.$VendorID-$ProductID-0
Na przykład klawiatura wewnętrzna w moim MacBooku Air używa:, com.apple.keyboard.modifiermapping.1452-579-0
natomiast klawiatura zewnętrzna w moim iMacucom.apple.keyboard.modifiermapping.1118-219-0
Jak uzyskać prawidłowy „identyfikator klawiatury”? W wierszu poleceń możesz użyć:
ioreg -p IOUSB -c IOUSBDevice | grep -e class -e idVendor -e idProduct
aby uzyskać listę urządzeń USB z odpowiednimi parametrami:
[...]
+-o Natural® Ergonomic Keyboard 4000@fa140000 <class IOUSBDevice, id 0x100000452, registered, matched, active, busy 0 (115 ms), retain 12>
"idProduct" = 219
"idVendor" = 1118
Domyślam się, że trzeci parametr (część „-0”) to „licznik”, na wypadek, gdy masz więcej niż jedną klawiaturę tego samego typu.
Aby wyłączyć klawisz CapsLock na klawiaturze zewnętrznej, mogę teraz używać:
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>'
I, dla kompletności, oto lista możliwych kodów kluczy do użycia ( z podpowiedzi Mac OS X ):
- Brak - –1
- Caps Lock - 0
- Shift (w lewo) - 1
- Sterowanie (lewy) - 2
- Opcja (z lewej) - 3
- Dowództwo (w lewo) - 4
- Klawiatura 0–5
- Pomoc - 6
- Shift (w prawo) - 9
- Sterowanie (z prawej) - 10
- Opcja (z prawej) - 11
- Dowództwo (z prawej) - 12
Aktualizacja: dzięki Lauri Ranta oto polecenie, które działa na klawiaturach Bluetooth i USB:
ioreg -n IOHIDKeyboard -r | grep -e 'class IOHIDKeyboard' -e VendorID\" -e Product
co daje nieco inną wydajność:
+-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'
zamiast tego. Nadal nie działa.