यह स्टीवन सी। हॉवेल के जवाब का एक परिशिष्ट है।
मेरे पास स्कैंडिनेवियाई कीबोर्ड के साथ एक नया मैकबुक प्रो है। इस नए मॉडल में अब Esc कुंजी नहीं है, जो मेरे लिए एक महत्वपूर्ण बाधा है।
मुझे पता चला कि निम्नलिखित (कुंजी (ऊपरी बाएँ, 1 के ऊपर और टैब कुंजी के ऊपर) का अनुवाद करेगा - जो मुझे नहीं लगता कि मैंने आज से पहले कभी किसी चीज़ के लिए उपयोग किया है - Esc उत्पादन करने के लिए।
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'
Apple के दस्तावेज़ीकरण (स्टीवन के उत्तर से जुड़ा हुआ) में इसे "कीबोर्ड गैर-यूएस \" और के रूप में लेबल किया गया है। (0x64)।
"गैर-यूएस" कुंजी में से कई को खोजना मुश्किल है क्योंकि वे आम तौर पर उन कुंजियों को संदर्भित करते हैं जो आपके द्वारा उपयोग किए जा रहे कीबोर्ड पर एक अलग लेबल है। (मैं यह भी पता चला है कि "ग्रेव एक्सेंट और लहरिल" बाईं पारी और z के बीच मुख्य है, जो अपने कीबोर्ड पर पैदा करता है को संदर्भित करता है <
। मैं जो करने के लिए कुंजी मेल खाती है "गैर-अमेरिका की स्थापना करने में असमर्थ था #
और ~
" और एक बार मैंने पाया आगे प्रयोग नहीं किया मेरी कुंजी।) यदि आप प्रयोग करना चाहते हैं, तो टर्मिनल में स्क्रिप्ट चलाने का प्रयास करें जब तक आपको वह कुंजी न मिल जाए जिसकी आपको आवश्यकता है:
for ((i=1;i<=128;++i)); do
printf '0x7000000%0x\n' "$i"
printf '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x7000000%0x,"HIDKeyboardModifierMappingDst":0x70000000a}]}' "$i" |
xargs -0 hidutil property --set >/dev/null
read -p "Type some stuff: "
hidutil property --set '{"UserKeyMapping":[{}]}' >/dev/null
done
यह कीकोड पर लूप करता है और एक समय में एक को बदलता है, इस उम्मीद में कि आप परीक्षण के माध्यम से पा सकते हैं और एक कुंजी को त्रुटि दे सकते हैं जो आपके लिए विशेष रूप से उपयोगी नहीं है। जब आपसे यह पूछा जाए कि कुछ टाइप करने की कोशिश करें - यदि g
आपको उम्मीद है कि इसके बजाय, आपको सही कुंजी कोड मिल गया है। ( 0x70000000a
अगर g
आपके लिए सुविधाजनक विकल्प नहीं है तो कुछ और बदलें । हो सकता है कि आप g
कुंजी को फिर से तैयार करना चाहते हों ?) जब आप टाइपिंग कर रहे हों, तो अगली कुंजी पर आगे बढ़ने के लिए Enter दबाएं।
इसके लायक क्या है, लूप के अंदर अंतिम कमांड है कि आप सभी UserKeyMapping
सेटिंग्स को कैसे नापते हैं:
hidutil property --set '{"UserKeyMapping":[{}]}'
जब आप शुरू में hidutil property --get UserKeyMapping
इसे चलाते हैं
(null)
लेकिन ऐसा लगता है कि आप सेटिंग को वापस करने के लिए इस मूल्य को वापस नहीं कर सकते (या यों कहें कि यह स्वीकार करता है लेकिन इस इनपुट को अनदेखा करता है)।
(आप टर्मिनल से अपरिचित हैं, बस से कॉपी / पेस्ट बात for
जब तक done
अपने पर bash$
शीघ्र या इसी तरह की।)
के अनुसार इस संबंधित स्टैक ओवरफ़्लो सवाल आप अपने घर निर्देशिका में एक स्क्रिप्ट फ़ाइल में आदेश रखा है और अपने में जोड़ सकते हैं launchd
विन्यास इस परिवर्तन को लगातार बनाने की।
मामले में कुछ पाठक अपने दम पर ऐसा करने में सहज नहीं हैं, यहाँ एक त्वरित स्क्रिप्ट है जो आपके लिए ऐसा करती है। फिर से, टर्मिनल प्रॉम्प्ट पर इसे कॉपी / पेस्ट करें।
mkdir -p "$HOME"/bin
printf '%s\n' '#!/bin/sh' \
'hidutil property --set '"'"'{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'"'" \
>"$HOME"/bin/userkeymapping
chmod 755 "$HOME"/bin/userkeymapping
cat<<: >"$HOME"/Library/LaunchAgents/userkeymapping.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>userkeymapping</string>
<key>ProgramArguments</key>
<array>
<string>$HOME/bin/userkeymapping</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
:
launchctl load "$HOME"/Library/LaunchAgents/userkeymapping.plist
जाहिर है कि अगर आप 0x700000064
स्क्रिप्ट में, या फ़ाइल में "$HOME"/bin/userkeymapping
इसे बदलने की आवश्यकता से कुछ अन्य कुंजी के साथ समाप्त हो गया है , तो यदि आप पहले से ही ऊपर भाग कर रहे हैं, तो यह समाप्त होता है।