Команді важливо defaults
використовувати правильний "ідентифікатор клавіатури" в ключі, здається, це:com.apple.keyboard.modifiermapping.$VendorID-$ProductID-0
Наприклад, внутрішня клавіатура для мого MacBook Air використовує:, com.apple.keyboard.modifiermapping.1452-579-0
а зовнішня клавіатура мого iMac використовуєcom.apple.keyboard.modifiermapping.1118-219-0
Як отримати правильний "ідентифікатор клавіатури"? У командному рядку ви можете використовувати:
ioreg -p IOUSB -c IOUSBDevice | grep -e class -e idVendor -e idProduct
щоб отримати список ваших USB-пристроїв з відповідними параметрами:
[...]
+-o Natural® Ergonomic Keyboard 4000@fa140000 <class IOUSBDevice, id 0x100000452, registered, matched, active, busy 0 (115 ms), retain 12>
"idProduct" = 219
"idVendor" = 1118
Я думаю, що третій параметр ("-0" частина) є "лічильником", якщо у вас є більше однієї клавіатури одного типу.
Отже, щоб вимкнути клавішу CapsLock на моїй зовнішній клавіатурі, тепер я можу використовувати:
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>'
І, для повноти, ось список можливих ключових кодів, які слід використовувати ( від Mac OS X Підказки ):
- Немає - –1
- Caps Lock - 0
- Зсув (зліва) - 1
- Управління (зліва) - 2
- Варіант (зліва) - 3
- Команда (зліва) - 4
- Клавіатура 0 - 5
- Довідка - 6
- Зсув (праворуч) - 9
- Контроль (праворуч) - 10
- Варіант (праворуч) - 11
- Командування (праворуч) - 12
Оновлення: завдяки Lauri Ranta ось команда, яка працює для клавіатур Bluetooth та USB:
ioreg -n IOHIDKeyboard -r | grep -e 'class IOHIDKeyboard' -e VendorID\" -e Product
що дає дещо інший вихід:
+-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'
замість цього. Все ще не працює.