Sangat penting bagi defaults
perintah untuk menggunakan "keyboard ID" yang benar dalam kunci, sepertinya:com.apple.keyboard.modifiermapping.$VendorID-$ProductID-0
Misalnya keyboard internal untuk MacBook Air com.apple.keyboard.modifiermapping.1452-579-0
saya gunakan:, sedangkan keyboard eksternal pada iMac saya gunakancom.apple.keyboard.modifiermapping.1118-219-0
Bagaimana cara mendapatkan "ID keyboard" yang benar? Di baris perintah Anda dapat menggunakan:
ioreg -p IOUSB -c IOUSBDevice | grep -e class -e idVendor -e idProduct
untuk mendapatkan daftar perangkat USB Anda dengan parameter yang relevan:
[...]
+-o Natural® Ergonomic Keyboard 4000@fa140000 <class IOUSBDevice, id 0x100000452, registered, matched, active, busy 0 (115 ms), retain 12>
"idProduct" = 219
"idVendor" = 1118
Dugaan saya adalah bahwa parameter ketiga (bagian "-0") adalah "penghitung", jika Anda memiliki lebih dari satu keyboard dengan tipe yang sama.
Jadi, untuk mematikan tombol CapsLock pada keyboard eksternal saya sekarang saya dapat menggunakan:
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>'
Dan, demi kelengkapan, berikut adalah daftar kode kunci yang mungkin digunakan ( dari Mac OS X Petunjuk ):
- Tidak ada - –1
- Caps Lock - 0
- Shift (Kiri) - 1
- Kontrol (Kiri) - 2
- Opsi (Kiri) - 3
- Command (Kiri) - 4
- Papan tombol 0 - 5
- Bantuan - 6
- Shift (Kanan) - 9
- Kontrol (Kanan) - 10
- Opsi (Kanan) - 11
- Command (Kanan) - 12
Pembaruan: terima kasih kepada Lauri Ranta di sini adalah perintah yang berfungsi untuk keyboard Bluetooth & USB:
ioreg -n IOHIDKeyboard -r | grep -e 'class IOHIDKeyboard' -e VendorID\" -e Product
yang memberi Anda output yang sedikit berbeda:
+-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'
saja. Tapi tetap saja tidak berhasil.