เป็นสิ่งสำคัญสำหรับdefaults
คำสั่งที่จะใช้ "keyboard 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
วิธีรับ "รหัสแป้นพิมพ์" ที่ถูกต้อง บนบรรทัดคำสั่งคุณสามารถใช้:
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
- Shift (ซ้าย) - 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'
แทน ยังคงไม่ทำงานแม้ว่า