DefaultKeyBinding.dict - पुराने शैली NeXT प्रारूप बनाम XML plist प्रारूप


9

DefaultKeyBinding.dict

~/Library/KeyBindings/DefaultKeyBinding.dictफ़ाइल आपको मैक ओएस एक्स में अपने स्वयं के प्रमुख बाइंडिंग को परिभाषित करने देती है । यह दो प्रारूपों में से एक हो सकता है: पुरानी शैली का नेक्सटी प्रारूप ( उदाहरण ) या आधुनिक शैली का XML प्लिस्ट प्रारूप ( उदाहरण )।

रीबाइंडिंग +

मैं कमांड-बैकस्पेस ( + ) को रीबाइंड करना चाहता था deleteWordBackward:, और मुझे इस AskDifferent थ्रेड में कुछ मदद मिली । यह सुझाव दिया गया था कि मैं इसे अपनी DefaultKeyBinding.dictफ़ाइल के रूप में उपयोग करता हूं :

/* my keybindings */
{
"@\U007F" = "deleteWordBackward:"; /* delete backwards one word */
}  

इस सलाह ने काम किया (धन्यवाद, दोस्तों!), लेकिन मेरे पास पहले से ही DefaultKeybinding.dictXML प्रारूप में एक काम है, इसलिए मैं इसे उस तरह से काम करने की कोशिश करना चाहता था। मैंने पहली बार इस पाठ को अपनी मौजूदा फ़ाइल के नीचे जोड़ा है:

<key>@\U007F</key>
<string>deleteWordBackward:</string>

और मैंने सिर्फ + प्रविष्टि के साथ एक नया XML-स्वरूपित फ़ाइल बनाने की कोशिश की :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>@\U007F</key>
    <string>deleteWordBackward:</string>
</dict>
</plist>

लेकिन न तो फाइलों पर काम हुआ। स्पष्ट स्थिति है, तो यह है कि आप rebind कर सकते हैं + केवल पुरानी शैली नेक्स्ट प्रारूप में है, और नहीं एक्सएमएल plist प्रारूप में। मेरे प्रश्न हैं:

  1. क्या यह सटीक है, या जब मैं XML प्रारूप पर स्विच कर रहा हूं तो सिंटैक्स को किसी तरह बदलना चाहिए?
  2. क्या मुझे अपनी शेष DefaultKeyBinding.dictफ़ाइल को पुराने सिंटैक्स पर ले जाने का पछतावा होगा ? ऐसा करने के लिए बहुत काम नहीं होगा - यह केवल एक या दो दर्जन प्रविष्टियां हैं - लेकिन मुझे यकीन नहीं है कि पुरानी शैली को किसी अन्य कारण से पदावनत या बीमार किया गया है।

संपादित करें: मूल DefaultKeyBinding.dict

किसी ने टिप्पणियों में मेरी मूल फ़ाइल पर जानकारी का अनुरोध किया है, इसलिए मुझे लगता है कि मैं यहां पूरी बात भी शामिल कर सकता हूं।

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key></key>
    <string>complete:</string>
    <key>^ </key>
    <string>setMark:</string>
    <key>^a</key>
    <string>moveToBeginningOfLine:</string>
    <key>^e</key>
    <string>moveToEndOfLine:</string>
    <key>^j</key>
    <string>setMark:</string>
    <key>^v</key>
    <string>pageDown:</string>
    <key>^w</key>
    <string>deleteToMark:</string>
    <key>^x</key>
    <dict>
        <key>^m</key>
        <string>selectToMark:</string>
        <key>^x</key>
        <string>swapWithMark:</string>
    </dict>
    <key>~</key>
    <string>deleteWordBackward:</string>
    <key>~&lt;</key>
    <string>moveToBeginningOfDocument:</string>
    <key>~&gt;</key>
    <string>moveToEndOfDocument:</string>
    <key>~^h</key>
    <string>deleteWordBackward:</string>
    <key>~b</key>
    <string>moveWordBackward:</string>
    <key>~d</key>
    <string>deleteWordForward:</string>
    <key>~f</key>
    <string>moveWordForward:</string>
    <key>~n</key>
    <string>scrollLineDown:</string>
    <key>~p</key>
    <string>scrollLineUp:</string>
    <key>~v</key>
    <string>pageUp:</string>
    <key>~</key>
    <string>deleteWordBackward:</string>
</dict>
</plist>

मैंने XML प्रारूप का उपयोग नहीं किया है, लेकिन मैं उत्सुक हूं कि क्या आपके पास मौजूद XML फ़ाइल में आप अपने कीबोर्ड शॉर्टकट में किसी अन्य मेटा-कुंजी का उपयोग कर रहे हैं। क्या आप ~विकल्प के लिए या $पारी के लिए उपयोग कर रहे हैं ?
कोनरग्रिफिन

या ^नियंत्रण के लिए?
कोनरग्रिफिन

मेरे पास ~और के साथ काम करने वाली प्रविष्टियां हैं ^, लेकिन कोई भी साथ $या नहीं @। (नोट: मैं आगे गया और अपनी मूल DefaultKeyBindings.dict फ़ाइल को ओपी के साथ-साथ उपयोगी होने की स्थिति में जोड़ा।)
मीका आर लेडबेट्टर

यह अजीब है, मैं इसे काम भी नहीं कर सकता। यह बहुत अच्छी तरह से प्रलेखित नहीं लगता है। आपके पास केवल एक छोटी संख्या के शॉर्टकट हैं जो केवल 1 मेटा-कुंजी और 1 अक्षर नहीं हैं, इसलिए हो सकता है कि परीक्षण करने के लिए उन्हें परिवर्तित करने का प्रयास करें और यदि वे काम करते हैं तो संभावना है कि आपके अन्य भी होंगे। यह मामला हो सकता है कि कमांड कुंजी का प्रतिनिधित्व करता @है जैसा कि प्लिस्ट फ़ाइल की XML शैली में स्वीकार नहीं किया गया है। यह बहुत मतलब नहीं है, लेकिन मैं इसके बारे में अधिक कुछ भी नहीं मिल सकता है।
कोराग्रिफिन

इस बारे में Apple के साथ बग दर्ज करने का समर्थन किया; देखते हैं कि क्या वे जवाब देते हैं :)।
मीका आर लेडबेटर

जवाबों:


3

मुझे नहीं लगता कि पुराने प्रारूप का उपयोग करने से आपको कोई समस्या होगी। मैंने जितने भी उदाहरण पाए हैं वे सभी पुराने NeXT नोटेशन का उपयोग करते हैं। हालांकि मैं यह नहीं समझा सकता कि XML प्रारूप क्यों काम नहीं किया, इस विशेष कीबोर्ड शॉर्टकट के लिए एक समाधान है जिसका मतलब है कि आप अपने मौजूदा DefaultKeyBinding.dictअछूते को छोड़ सकते हैं ।

KeyRemap4MacBook नामक एक एप्लिकेशन है जो डाउनलोड करने के लिए स्वतंत्र है और आप नीचे दिए गए स्क्रीनशॉट से देख सकते हैं, आप अपनी बाकी फ़ाइल को कनवर्ट किए बिना + कीबोर्ड शॉर्टकट को रीमैप कर सकते हैं DefaultKeyBinding.dictऔर यह विधि कोकोआ अनुप्रयोगों तक सीमित नहीं है।

KeyRemap4MacBook


3

\U007fXML संपत्ति सूचियों पर उपयोग नहीं किया जा सकता है। आपको इसे &#x007f;एक शाब्दिक DELचरित्र के साथ बदलना होगा ।


आप एक पुरानी शैली के प्लिस्ट को XML के साथ बदल सकते हैं plutil:

plutil -convert xml1 test.plist

और XML से पुराने-शैली के साथ pl:

pl -input test.plist

मेरी DefaultKeyBinding.dict वर्तमान में 151 लाइनें है, और मैं इसे पुराने शैली की संपत्ति सूची के रूप में संग्रहीत करने वाले किसी भी मुद्दे में नहीं चला हूं। ब्रेट टेरस्ट्रा और जैकब रुस द्वारा पोस्ट की गई पुरानी शैली में भी हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.