defaults
コマンドがキーで正しい「キーボードID」を使用することが重要です。com.apple.keyboard.modifiermapping.$VendorID-$ProductID-0
たとえば、私のMacBook Airの内部キーボードはを使用していますがcom.apple.keyboard.modifiermapping.1452-579-0
、私のiMacの外部キーボードはcom.apple.keyboard.modifiermapping.1118-219-0
正しい「キーボードID」を取得する方法は?コマンドラインでは次を使用できます。
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
私の推測では、同じタイプのキーボードが複数ある場合、3番目のパラメーター(「-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
- Shift(左)— 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'
代わりに使用してください。それでも動作しません。