defaults
Komutun tuşta doğru "klavye kimliğini" kullanması önemlidir , öyle görünüyor:com.apple.keyboard.modifiermapping.$VendorID-$ProductID-0
Örneğin, MacBook Air'imin dahili klavyesi şunu kullanıyor: com.apple.keyboard.modifiermapping.1452-579-0
iMac'imdeki harici klavye isecom.apple.keyboard.modifiermapping.1118-219-0
Doğru "klavye kimliği" nasıl alınır? Komut satırında şunları kullanabilirsiniz:
ioreg -p IOUSB -c IOUSBDevice | grep -e class -e idVendor -e idProduct
ilgili parametrelerle USB cihazlarınızın bir listesini almak için:
[...]
+-o Natural® Ergonomic Keyboard 4000@fa140000 <class IOUSBDevice, id 0x100000452, registered, matched, active, busy 0 (115 ms), retain 12>
"idProduct" = 219
"idVendor" = 1118
Benim tahminim, aynı türden birden fazla klavyeniz olması durumunda üçüncü parametrenin ("-0" kısmı) "sayaç" olmasıdır.
Bu nedenle, harici klavyemdeki CapsLock tuşunu kapatmak için artık şunları kullanabilirim:
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>'
Ve tamlık uğruna, kullanabileceğiniz olası anahtar kodlarının bir listesi ( Mac OS X İpuçları'ndan ):
- Yok - –1
- Büyük Harf Kilidi - 0
- Üst Karakter (Sol) - 1
- Kontrol (Sol) - 2
- Seçenek (Sol) - 3
- Komut (Sol) - 4
- Tuş takımı 0-5
- Yardım - 6
- ÜstKrkt (Sağ) - 9
- Kontrol (Sağ) - 10
- Seçenek (Sağ) - 11
- Komut (Sağ) - 12
Güncelleme: Lauri Ranta sayesinde Bluetooth ve USB klavyelerde çalışan bir komut:
ioreg -n IOHIDKeyboard -r | grep -e 'class IOHIDKeyboard' -e VendorID\" -e Product
Bu size biraz farklı çıktılar verir:
+-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'
. Yine de çalışmıyor.