डिफ़ॉल्ट कीबोर्ड लेआउट को कैसे निकालें या अक्षम करें?


16

क्या OS X Lion के डिफ़ॉल्ट कीबोर्ड लेआउट में से किसी एक को हटाना या अक्षम करना संभव है?

मैं एक कस्टम कीबोर्ड लेआउट का उपयोग कर रहा हूं, और अब जब मैं इसे सिस्टम-वाइड डिफ़ॉल्ट कीबोर्ड लेआउट के रूप में सेट करने में कामयाब रहा , तो मैं ओएस के साथ आए "यूएस" कीबोर्ड लेआउट को अनचेक या हटाने में सक्षम होना चाहूंगा X. यहाँ एक स्क्रीनशॉट है - ध्यान दें कि चेकबॉक्स अक्षम है:

स्क्रीनशॉट

OS X 10.9 में, इस वरीयता फलक को नया रूप दिया गया है, लेकिन फिर भी बिल्ट-इन "US" कीबोर्ड लेआउट को "हटाने" का कोई तरीका नहीं है:

स्क्रीनशॉट

चूंकि मैं यूएस कीबोर्ड लेआउट का उपयोग कभी नहीं करता, इसलिए मुझे इससे छुटकारा पाना अच्छा लगता है, अर्थात इसे मेनू बार में इनपुट मेनू से हटा दें। मैं यह कैसे कर सकता हूँ?


अपडेट: डैनियल का जवाब वास्तव में इस सवाल का जवाब नहीं देता है, लेकिन यह इस समस्या के बारे में कुछ मूल्यवान जानकारी प्रदान करता है:

मैक ओएस एक्स को कम से कम एक कीबोर्ड लेआउट की आवश्यकता होती है जिसे सिस्टम "लैटिन कैरेक्टर" लेआउट के रूप में पहचानता है।

यह सही जानकारी है (धन्यवाद, डैनियल!) मानकर, इस प्रश्न को निम्न प्रकार से दोहराया जा सकता है:

OS X को लैटिन चरित्र लेआउट बनाने के लिए कस्टम कीबोर्ड पर विचार कैसे करें?


अद्यतन: मैं बस कुछ है कि मदद कर सकता है भर में आया था।


1
मुझे नहीं लगता कि "लैटिन" पर्याप्त है। यह आसानी से कीबोर्ड आईडी को रोमन में सेट करके उकेली में पूरा किया जाता है। मुझे संदेह है कि आपके लेआउट को AppleKeyboardLayouts.bundle का सिस्टम / लाइब्रेरी / कीबोर्ड लेआउट का हिस्सा होना चाहिए।
टॉम गेवेके

जवाबों:


19
  1. एक इनपुट स्रोत को सक्षम करें जो सिस्टम प्रेफरेंस (मैंने अफगान डारी का इस्तेमाल किया) से आपके भौतिक कीबोर्ड लेआउट जैसा नहीं है।
  2. भागो f=~/Library/Preferences/ByHost/com.apple.HIToolbox*.plist; plutil -convert xml1 $f; open $f -e
  3. अस्थायी रूप से सक्षम कीबोर्ड लेआउट और अपने कस्टम कीबोर्ड लेआउट को छोड़कर अन्य इनपुट स्रोतों को निकालें।
  4. लॉग आउट करें और वापस अंदर जाएं।
  5. संपत्ति सूची से अस्थायी रूप से सक्षम कीबोर्ड लेआउट निकालें।
  6. लॉग आउट करें और वापस अंदर जाएं।

संपादित करें: ऊपर की विधि ने 10.9 में काम करना बंद कर दिया है। हालांकि इसने 10.9 या 10.8 दोनों में काम किया:

  1. वर्तमान इनपुट स्रोत को अपने कस्टम कीबोर्ड लेआउट में बदलें।
  2. खुला ~/Library/Preferences/com.apple.HIToolbox.plist(10.9 में) या ~/Library/Preferences/ByHost/com.apple.HIToolbox.*.plist(10.8 और पूर्व में)। आप plist को XML के साथ बदल सकते हैं plutil -convert xml1
  3. जिस इनपुट स्रोत या इनपुट स्रोत को आप AppleEnabledInputSourcesडिक्शनरी से डिसेबल करना चाहते हैं, उसे हटा दें । यदि कोई AppleDefaultAsciiInputSourceकुंजी है, तो इसे हटा दें।
  4. पुनर्प्रारंभ करें।

1
अहा, यह काम करने लगता है यदि आप कंप्यूटर को केवल लॉग आउट करने और वापस (चरण 4) के बजाय कंप्यूटर को पुनरारंभ करते हैं। धन्यवाद! क्या आप अपने संसाधन के लिंक के साथ एक नया उत्तर पोस्ट करने का मन करेंगे ताकि आपको इनाम मिल सके?
मैथियास ब्यनेंस 14

1
@MathiasBynens मैंने उत्तर और अपनी वेबसाइट संपादित की। जब मैंने दूसरी विधि को फिर से आज़माया, तो मुझे परिवर्तनों को लागू करने के लिए पुनः आरंभ करने की भी आवश्यकता थी।
18

4
यदि आप अपना कंप्यूटर पुनरारंभ करते हैं तो OS X 10.9 में ठीक काम करता है। हालाँकि मुझे प्लिस्ट फ़ाइल से अस्थायी लेआउट को भी हटाना पड़ा और 'sudo रिबूट' का उपयोग करके रिबूट किया गया, अन्यथा अस्थायी लेआउट को सामान्य रिबूट पर वापस जोड़ा गया।
दिमित्री

2
@Lri 10.9 पर मुझे हटाना था: AppleEnabledInputSource: 0 (पुराना डिफ़ॉल्ट लेआउट आइटम) और: AppleInputSourceHistory: शब्दकोश (PlistBuddy का उपयोग करके)। कोई रिबूट नहीं, लेकिन केवल लॉगऑफ आवश्यक है।
रोलकॉव

1
यह मेरे लिए योसेमाइट पर काम नहीं करता है। जब भी मैं फ़ाइल को Xcode में बदलता हूं तो यह कुछ सेकंड के बाद बहाल हो जाती है। क्या कोई यह बता सकता है कि आपने यह कैसे किया?
साइमन पेरेपेलित्सा

7

ऐसा प्रतीत होता है कि आप वह नहीं कर सकते जो आप सिस्टम में अभी तक अनदेखा किए गए हैक के बिना करना चाहते हैं । मैक ओएस एक्स को कम से कम एक कीबोर्ड लेआउट की आवश्यकता होती है जिसे सिस्टम "लैटिन कैरेक्टर" लेआउट के रूप में पहचानता है । यह लॉगिन स्क्रीन पर आपका पासवर्ड दर्ज करने में असमर्थ होने से रोकता है, आदि यदि आपने फ्रेंच, या कनाडाई, या किसी अन्य कीबोर्ड लेआउट का चयन किया है जिसे सिस्टम लैटिन वर्णों के रूप में पहचानता है, तो आप यूएस लेआउट को रद्द कर सकते हैं।

आपकी समस्या यह है कि लैटिन अक्षरों से युक्त आपके कस्टम लेआउट को सिस्टम द्वारा लैटिन कीबोर्ड लेआउट के रूप में मान्यता नहीं दी जाती है, और इस प्रकार यह केवल चयनित कीबोर्ड लेआउट नहीं हो सकता है। अधिक जानकारी के लिए इस प्रश्न को देखें (दु: खद रूप से एक महान उत्तर की कमी)।

ध्यान दें कि इस प्रश्न का एक शानदार उत्तर आपके प्रश्न का भी उत्तर देगा। काश, मेरा जवाब यहाँ केवल यह बताता है कि समस्या क्या है, लेकिन मेरे पास आपके लिए कोई चरण-दर-चरण समाधान नहीं है। जबकि ऐसा हैक संभव हो सकता है, मुझे कोई सबूत नहीं दिखता है कि किसी को भी पता चला है कि मैक ओएस एक्स को कैसे समझा जाए कि एक विशेष कस्टम कीबोर्ड एकमात्र चयन करने योग्य कीबोर्ड के रूप में उपयोग करने के लिए सुरक्षित है।


@ मुझे संदेह है कि आप सही हैं, लेकिन परीक्षण के लिए हार्डवेयर नहीं है। शायद इस साइट का कोई पाठक है जो कर सकता है?
डैनियल

7

संपूर्णता की खातिर, मैंने इसे Apple के साथ बग आईडी # 11137961 के रूप में दायर किया, और यह मुझे मिली प्रतिक्रिया है:

बग आईडी #: 11137961
बग शीर्षक: एक कस्टम का उपयोग करते समय डिफ़ॉल्ट (अंतर्निहित) कीबोर्ड लेआउट को अक्षम करने की अनुमति दें


इंजीनियरिंग ने निर्धारित किया है कि यह समस्या निम्न सूचना के आधार पर व्यवहार करती है:

यदि समस्या सिर्फ आपके कीबोर्ड लेआउट को ASCII- सक्षम के रूप में पहचाना जा रहा है, तो सबसे आसान "बंडल" करना होगा। इसके बाद, आपकी Info.plist में एक "KLInfo_" शब्दकोश शामिल हो सकता है जो आगे इसका वर्णन करता है, जैसे:

 <key>TISIntendedLanguage</key>
 <string>en</string>   # BCP 47 language string

मुझे इस पर थोड़ा और गौर करने की ज़रूरत है, लेकिन ऐसा लगता है कि टीआईएस एक यूएसएटी का उत्पादन करने के लिए कीबोर्ड लेआउट आउटपुट को स्कैन करेगा और एससीआई-नेस के प्रारंभिक विचार का उत्पादन करेगा कि क्या यह निम्नलिखित न्यूनतम परीक्षण से गुजरता है:

 uset_containsRange(uSet, 0x0020, 0x0021) && uset_containsRange(uSet, 0x002C, 0x0039) &&
 uset_containsRange(uSet, 0x003F, 0x005A) && uset_containsRange(uSet, 0x0061, 0x007A);

टीआईएस उपर्युक्त संकेतित स्थान के लिए निर्धारित उदाहरण की भी जांच करेगा और सीमा में एक अच्छे दर्जन या इतने ही पात्रों की आवश्यकता होगी [a-z]

एक बंडल पर कुछ सुझावों के लिए .keylayout, यह भी देखें TextInputSources.h

यदि यह अभी भी एक समस्या है, या आपके पास इस समस्या के समाधान के बारे में प्रश्न हैं, तो कृपया उस जानकारी के साथ अपनी बग रिपोर्ट अपडेट करें।

अब हम इस बग रिपोर्ट को बंद कर रहे हैं।


1
जाँच की गई: मेरा लेआउट उन मानदंडों को पूरा करता है लेकिन इसे संभावित डिफ़ॉल्ट लेआउट के रूप में मान्यता नहीं दी जाती है। इसलिए उनके इंजीनियरों ने पूरी जानकारी नहीं दी या गलत जानकारी नहीं दी।
दिमित्री

1
@DmitryDulepov इसे डिफ़ॉल्ट लेआउट के रूप में उपयोग करना संभव है, लेकिन दूसरे को हटाने के लिए बटन अभी भी सक्रिय नहीं होगा; आपको ऐसा स्वयं करना होगा (मेरी टिप्पणी को Lri के जवाब पर देखें
RolKau

@ रोलकाउ, हां, लेकिन बाद में अन्य मुद्दे हैं। यदि आपके पास एक से अधिक लेआउट हैं, तो नया कस्टम लेआउट कुछ ऐप्स में उपलब्ध नहीं होगा। उदाहरण के लिए, आप इसे AppStore के सर्च बार में स्विच नहीं कर पाएंगे। कम से कम, मैं नहीं कर सका।
दिमित्री

2

यहाँ एक और विचार है: कुछ साल पहले Apple कीबोर्ड लेआउट के लिए बंडल को संपादित करने के लिए बहुत आसान था, और यह समस्या हल करने के लिए लगता है:

http://hintsforums.macworld.com/archive/index.php/t-71629.html

शायद कोई अभी भी पुराने संपादन योग्य बंडल का उपयोग कर सकता है, यदि आप वर्तमान ओएस में एक पुरानी प्रणाली से एक प्राप्त कर सकते हैं।


1

मैं बस कुछ मदद कर सकता हूं। यहाँ जाता हैं:

$ defaults read /Library/Preferences/com.apple.HIToolbox.plist 
{
    AppleCurrentKeyboardLayoutInputSourceID = "com.apple.keylayout.Dutch";
    AppleDefaultAsciiInputSource =     {
        InputSourceKind = "Keyboard Layout";
        "KeyboardLayout ID" = 1337;
        "KeyboardLayout Name" = QWERTY;
    };
    AppleEnabledInputSources =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        }
    );
    AppleInputSourceHistory =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        }
    );
    AppleSelectedInputSources =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        }
    );
}

यह मेरे सिस्टम पर है, जहां मेरा कस्टम कीबोर्ड लेआउट ("QWERTY" नाम) डिफ़ॉल्ट है। ध्यान दें कि KeyboardLayout Nameऔर KeyboardLayout IDगुण .keylayoutफ़ाइल के प्रारंभ में आईडी और नाम को संदर्भित करते हैं।

जैसा कि आप देख सकते हैं, defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceIDअभी भी स्ट्रिंग लौटाता है "com.apple.keylayout.Dutch"। क्या उपलब्ध com.apple.keylayoutमूल्यों की सूची कहीं है ? क्या कस्टम कीबोर्ड लेआउट के लिए ऐसा मूल्य प्राप्त करना संभव है? 'उस स्थिति में, हम बस संपत्ति को ओवरराइड कर सकते हैं।

इसके अलावा, AppleEnabledInputSources, AppleInputSourceHistory, और AppleSelectedInputSourcesगुण सब, कस्टम कीबोर्ड लेआउट की अनदेखी करने के रूप में उनके मूल्यों देशी ओएस एक्स कीबोर्ड लेआउट मैं मूल रूप से जब सेटअप सहायक चल चयनित के अनुरूप लग रहे हैं।


एक और अपडेट: अहा! ऐसा लगता है कि एक और plistफ़ाइल है जिसमें से हम सेटिंग्स कॉपी कर सकते हैं।

$ defaults read ~/Library/Preferences/ByHost/com.apple.HIToolbox.*.plist 
{
    AppleCurrentKeyboardLayoutInputSourceID = "org.unknown.keylayout.QWERTY";
    AppleDateResID =     {
        smRoman = 2;
    };
    AppleEnabledInputSources =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        },
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 1337;
            "KeyboardLayout Name" = QWERTY;
        },
                {
            "Bundle ID" = "com.apple.CharacterPaletteIM";
            InputSourceKind = "Non Keyboard Input Method";
        },
                {
            "Bundle ID" = "com.apple.KeyboardViewer";
            InputSourceKind = "Non Keyboard Input Method";
        },
                {
            "Bundle ID" = "com.apple.inputmethod.ironwood";
            InputSourceKind = "Non Keyboard Input Method";
        }
    );
    AppleGlobalTextInputProperties =     {
        TextInputGlobalPropertyPerContextInput = 0;
    };
    AppleInputSourceHistory =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 1337;
            "KeyboardLayout Name" = QWERTY;
        },
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 26;
            "KeyboardLayout Name" = Dutch;
        }
    );
    AppleNumberResID =     {
        smRoman = 2;
    };
    AppleSelectedInputSources =     (
                {
            InputSourceKind = "Keyboard Layout";
            "KeyboardLayout ID" = 1337;
            "KeyboardLayout Name" = QWERTY;
        },
                {
            "Bundle ID" = "com.apple.inputmethod.ironwood";
            InputSourceKind = "Non Keyboard Input Method";
        }
    );
    AppleTimeResID =     {
        smRoman = 2;
    };
}

जैसा कि आप देख सकते हैं ( AppleCurrentKeyboardLayoutInputSourceID), जाहिरा तौर पर कस्टम कीबोर्ड लेआउट को मान मिलते हैं जैसे कि कीबोर्ड लेआउट का नाम "org.unknown.keylayout.FOO"कहां FOOहै (जैसा कि .keylayoutफ़ाइल में निर्दिष्ट है )।

तो, आइए, हमारे कस्टम कीबोर्ड लेआउट के सभी मूल्यों को सेट करने का प्रयास करें, जिसका नाम QWERTYऔर आईडी के साथ 1337( .keylayoutफ़ाइल में निर्दिष्ट ) है:

sudo defaults write /Library/Preferences/ByHost/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID -string "org.unknown.keylayout.QWERTY"

अफसोस की बात है, यह काम नहीं कर रहा है।

अपडेट: @Lri ने एक विश्वसनीय तरीका खोजा - उसका जवाब देखें।


1

ऐप्पल ने मेरी बग रिपोर्ट पर प्रतिक्रिया दी, जिसमें मैं सिस्टम डिफ़ॉल्ट कीबोर्ड लेआउट को हटाने के लिए संभव बनाने के लिए कह रहा था यदि सिस्टम प्रीव्यू के माध्यम से किसी अन्य को चुना जाता है:

इंजीनियरिंग ने निर्धारित किया है कि यह एप्पल को संबोधित करने के लिए एक मुद्दा नहीं है।

मान लिया जाये कि इस कस्टम कीबोर्ड लेआउट बंडल किया जाता है ( .keylayoutजैसे एक बंडल के अंदर है foo.bundle/Contents/Resources/foo.keylayout), तो यह में डालने के रूप में के रूप में आसान हो सकता है Info.plistकी KLInfo_ शब्दकोश:

<key>KLInfo_Qwerty</key>
<dict>
  <key>TISInputSourceID</key>
  <string>com.imgur.stack.keyboardlayout.Qwerty</string>
  <key>TISIntendedLanguage</key>  
  <string>en</string> 
</dict>

यदि इस लेआउट को सिस्टम-वाइड (यानी पासवर्ड इनपुट सहित) की आवश्यकता होती है /Library/Keyboard Layouts/, तो इसे उसी स्थान पर स्थापित किया जा सकता है ~/Library/

कृपया अपनी बग रिपोर्ट अपडेट करके हमें बताएं कि क्या यह अभी भी आपके लिए एक समस्या है।

यदि आपके पास इस समस्या के समाधान के बारे में प्रश्न हैं, तो कृपया उनके साथ अपनी बग रिपोर्ट अपडेट करें।

कृपया इस समस्या को प्रभावित करने वाले किसी भी अद्यतन के लिए नियमित रूप से नए Apple उत्पादों की जाँच करना सुनिश्चित करें। फिर से, बग प्रस्तुत करने के लिए समय निकालने के लिए धन्यवाद। हम ईमानदारी से आपके इनपुट की सराहना करते हैं।


1

मुझे निम्नलिखित विधि का उपयोग करके हाई सिएरा पर डिफ़ॉल्ट लेआउट को हटाने में सफलता मिली है:

  1. अपने Library/Preferencesफ़ोल्डर में नेविगेट करें ।
  2. फ़ाइल com.apple.HIToolbox.plistफ़ाइल खोलें , या तो इसे डबल-क्लिक करके या openकमांड लाइन पर उपयोग करके । इससे XCode पॉप अप हो जाएगा और यह अतिरिक्त घटकों को स्थापित करना चाह सकता है।
  3. चरण 2 को तब तक दोहराएं जब तक कि XCode आखिरकार फ़ाइल की संरचना नहीं दिखा रहा हो।
  4. AppleEnabledInputSourcesनोड का पता लगाएँ और इसे प्रकट करें।
  5. उस लेआउट के लिए प्रविष्टि निकालें जिसे आप निकालना चाहते हैं।
  6. फ़ाइल को सहेजें और XCode को छोड़ दें।

अब आपको संभवतः इसे अंतिम रूप देने के लिए लॉग आउट या रिबूट करने की आवश्यकता है। मुझे कुछ अपडेट के लिए वैसे भी रिबूट करना पड़ा, ताकि मेरे लिए यह चाल चली जाए। अब मैं खुशी के साथ नियो में एक शानदार ग्लेशियल गति से टाइप कर रहा हूं, लेकिन एक भी QWERTZ नजर में नहीं है!


0

यहाँ एक विचार है: यह सुनिश्चित करने के बाद कि आपके कस्टम लेआउट का कीबोर्ड आईडी रोमन पर सेट है, एक कस्टम AppleKeyboardLayouts.bundle बनाएं जिसमें केवल वह लेआउट हो और जो OS के साथ आता है, उसके लिए यह विकल्प देता है। (मैं खुद नहीं जानता कि एक .bundle बनाने में क्या शामिल है)


0

आप अपने उपयोग किए गए लेआउट को चिह्नित करने के लिए Ukelele का उपयोग कर सकते हैं जो लैटिन लिपि का उपयोग करता है। एक बंडल के रूप में निर्यात करें, इंस्टॉल करें और फिर आप यूएस को डिलीट कर पाएंगे।


-1

यह तो आसानी से हो सकता है। पहले अपने कस्टम लेआउट में बदलाव करें (मेनू बार इनपुट मेनू का उपयोग करें), फिर यूएस लेआउट को रद्द करें।


मेरा कस्टम लेआउट वर्तमान में उपयोग में है। जैसा कि प्रश्न में उल्लेख किया गया है, मैं अब यूएस कीबोर्ड लेआउट का उपयोग नहीं करता हूं।
मथियास बीनेंस

मैं यूएस कीबोर्ड लेआउट के बिना रहता हूं और इसे रद्द करने के लिए कोई समस्या नहीं थी। मेरे पास अन्य कस्टमाइज़ेशन गैर-डिफ़ॉल्ट, गैर-यूएस क्षेत्र और भाषा हैं।
shpokas

क्या आप उस मैक लेआउट को रद्द कर सकते हैं जिसे आपने मैक को शुरू करते समय चुना था?
मथियास बिएनेंस

हाँ, मैं कर सकता हूँ अगर मैं इस क्षेत्र को भी बदल दूं।
२१:४२ पर shpokas

देखिए, यही तो समस्या है। हमेशा ओएस एक्स के अंतर्निहित कीबोर्ड लेआउट में से एक होता है जिसे आप हटा या अक्षम नहीं कर सकते।
मैथियास बिएनेंस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.