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
내 생각에 같은 유형의 키보드가 두 개 이상인 경우 세 번째 매개 변수 ( "-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 Hints ).
- 없음 — –1
- Caps Lock — 0
- 시프트 (왼쪽) — 1
- 컨트롤 (왼쪽) — 2
- 옵션 (왼쪽) — 3
- 커맨드 (왼쪽) — 4
- 키패드 0 — 5
- 도움말 — 6
- Shift (오른쪽) — 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'
대신. 그래도 여전히 작동하지 않습니다.