यह defaults
कमांड के लिए कुंजी में सही "कीबोर्ड आईडी" का उपयोग करना महत्वपूर्ण है, ऐसा लगता है:com.apple.keyboard.modifiermapping.$VendorID-$ProductID-0
उदाहरण के लिए मेरे मैकबुक एयर के लिए आंतरिक कीबोर्ड का उपयोग करता है: com.apple.keyboard.modifiermapping.1452-579-0
जबकि मेरे आईमैक पर बाहरी कीबोर्ड का उपयोग करता है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" भाग) एक "काउंटर" है, यदि आपके पास एक ही प्रकार का एक से अधिक कीबोर्ड है।
इसलिए, अपने बाहरी कीबोर्ड पर कैप्सलॉक कुंजी को बंद करने के लिए मैं अब उपयोग कर सकता हूं:
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>'
और, पूर्णता के लिए, यहां ( मैक ओएस एक्स संकेत से ) उपयोग करने के लिए संभावित कुंजी कोडों की एक सूची दी गई है :
- कोई नहीं - १
- कैप्स लॉक - 0
- शिफ्ट (बाएं) - 1
- नियंत्रण (बाएं) - 2
- विकल्प (बाएं) - 3
- आज्ञा (वाम) - ४
- कीपैड 0 - 5
- सहायता - ६
- शिफ्ट (दाएं) - 9
- नियंत्रण (दाएं) - 10
- विकल्प (दाएं) - 11
- आज्ञा (अधिकार) - १२
अद्यतन: लॉरी रांटा के लिए धन्यवाद यहां एक कमांड है जो ब्लूटूथ और यूएसबी कीबोर्ड के लिए काम करता है:
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'
इसके बजाय उपयोग करें । हालांकि अभी भी काम नहीं करता है।