È importante che il defaults
comando utilizzi il "ID tastiera" corretto nel tasto, sembra essere:com.apple.keyboard.modifiermapping.$VendorID-$ProductID-0
Ad esempio, la tastiera interna del mio MacBook Air utilizza:, com.apple.keyboard.modifiermapping.1452-579-0
mentre la tastiera esterna del mio iMac utilizzacom.apple.keyboard.modifiermapping.1118-219-0
Come ottenere l '"ID tastiera" corretto? Sulla riga di comando puoi usare:
ioreg -p IOUSB -c IOUSBDevice | grep -e class -e idVendor -e idProduct
per ottenere un elenco dei dispositivi USB con i parametri pertinenti:
[...]
+-o Natural® Ergonomic Keyboard 4000@fa140000 <class IOUSBDevice, id 0x100000452, registered, matched, active, busy 0 (115 ms), retain 12>
"idProduct" = 219
"idVendor" = 1118
La mia ipotesi è che il terzo parametro (la parte "-0") sia un "contatore", nel caso in cui tu abbia più di una tastiera dello stesso tipo.
Quindi, per disattivare il tasto CapsLock sulla mia tastiera esterna ora posso usare:
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>'
E, per completezza, ecco un elenco di possibili codici chiave da utilizzare ( dai suggerimenti di Mac OS X ):
- Nessuno - –1
- Blocco maiuscole - 0
- Maiusc (sinistra) - 1
- Controllo (sinistra) - 2
- Opzione (sinistra) - 3
- Comando (a sinistra) - 4
- Tastiera 0 - 5
- Aiuto - 6
- Maiusc (destra) - 9
- Controllo (a destra) - 10
- Opzione (destra) - 11
- Comando (a destra) - 12
Aggiornamento: grazie a Lauri Ranta ecco un comando che funziona per le tastiere Bluetooth e USB:
ioreg -n IOHIDKeyboard -r | grep -e 'class IOHIDKeyboard' -e VendorID\" -e Product
che ti dà un output leggermente diverso:
+-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'
invece. Comunque non funziona comunque.