Varsayılan klavye düzenini kaldırma veya devre dışı bırakma?


17

OS X Lion'un varsayılan klavye düzenlerinden birini kaldırmak veya devre dışı bırakmak mümkün mü?

Özel bir klavye düzeni kullanıyorum ve şimdi sistem genelinde varsayılan klavye düzeni olarak ayarlamayı başardığımdan , işletim sistemi ile birlikte gelen yerleşik "ABD" klavye düzeninin işaretini kaldırabilir veya kaldırabilirim X. İşte bir ekran görüntüsü - onay kutusunun devre dışı bırakıldığını unutmayın:

Ekran görüntüsü

OS X 10.9'da, bu tercih bölmesi yeniden tasarlandı, ancak yine de yerleşik “ABD” klavye düzenini “kaldırmanın” bir yolu yok:

Ekran görüntüsü

ABD klavye düzenini hiç kullanmadığımdan, bundan kurtulmak isterim, yani menü çubuğundaki Giriş menüsünden kaldırmak isterim. Bunu nasıl yapabilirim?


Güncelleme: Daniel'in cevabı bu soruya gerçekten cevap vermiyor, ancak bu sorunla ilgili bazı değerli bilgiler sunuyor:

Mac OS X, sistemin seçilmesi için "Latin karakteri" düzeni olarak tanıdığı en az bir klavye düzeni gerektiriyor gibi görünüyor.

Bunun doğru bilgi olduğunu varsayarsak (teşekkürler Daniel!), Soru şu şekilde yeniden ifade edilebilir:

OS X'in özel bir klavyeyi Latin karakter düzeni olarak görmesi nasıl sağlanır?


Güncelleme: Sadece yardımcı olabilecek bir şeyle karşılaştım.


1
"Latin" in yeterli olduğunu düşünmüyorum. Bu, klavye kimliğini Roman olarak ayarlayarak Ukelele'de kolayca yapılabilir. Düzeninizin de sistem / kütüphane / klavye düzenlerinde AppleKeyboardLayouts.bundle'ın bir parçası olması gerektiğinden şüpheleniyorum.
Tom Gewecke

Yanıtlar:


21
  1. Sistem Tercihleri'nden (Afgan Dari kullandım) fiziksel klavye düzeninize benzemeyen bir giriş kaynağını etkinleştirin.
  2. Koş f=~/Library/Preferences/ByHost/com.apple.HIToolbox*.plist; plutil -convert xml1 $f; open $f -e.
  3. Geçici olarak etkinleştirilen klavye düzeni ve özel klavye düzeniniz dışındaki diğer giriş kaynaklarını kaldırın.
  4. Oturumu kapatıp tekrar açın.
  5. Geçici olarak etkinleştirilmiş klavye düzenini özellik listesinden kaldırın.
  6. Oturumu kapatıp tekrar açın.

Düzenleme: yukarıdaki yöntem 10.9 çalışma durmuş gibi görünüyor. Bu, hem 10.9 hem de 10.8'de çalıştı:

  1. Geçerli giriş kaynağını özel klavye düzeninize değiştirin.
  2. Açık ~/Library/Preferences/com.apple.HIToolbox.plist(10.9'da) veya ~/Library/Preferences/ByHost/com.apple.HIToolbox.*.plist(10.8 ve öncesinde). Plist ile XML'e dönüştürebilirsiniz plutil -convert xml1.
  3. Devre dışı bırakmak istediğiniz giriş kaynağını veya giriş kaynaklarını AppleEnabledInputSourcessözlükten kaldırın . Bir AppleDefaultAsciiInputSourceanahtar varsa çıkarın.
  4. Tekrar başlat.

1
Aha, sadece oturumu kapatıp tekrar açmak yerine bilgisayarı yeniden başlatırsanız işe yarıyor gibi görünüyor (adım 4). Teşekkürler! Ödül alabilmeniz için kaynağınıza bir bağlantı içeren yeni bir yanıt göndermeyi düşünür müsünüz?
Mathias Bynens

1
@MathiasBynens Cevabı ve web sitemi düzenledim. İkinci yöntemi tekrar denediğimde, değişiklikleri uygulamak için yeniden başlatmam gerekiyordu.
Lri

4
Bilgisayarınızı yeniden başlatırsanız OS X 10.9'da iyi çalışır. Ancak geçici düzeni plist dosyasından kaldırmak ve 'sudo reboot' kullanarak yeniden başlatmak zorunda kaldım, aksi takdirde geçici düzen normal yeniden başlatmaya geri eklendi.
İsimsiz_1

2
@Lri On 10.9 Silmek zorunda kaldı: AppleEnabledInputSources: 0 (eski varsayılan düzen öğesi) ve: AppleInputSourceHistory: sözlük (PlistBuddy kullanarak). Yeniden başlatma gerekmez, ancak yalnızca oturumu kapatmanız gerekir.
RolKau

1
Benim için Yosemite üzerinde çalışmıyor. Xcode'daki dosyayı her değiştirdiğimde birkaç saniye sonra geri yüklenir. Herkes bunu nasıl yaptığını açıklayabilir mi?
Simon Perepelitsa

7

Sisteme henüz keşfedilmemiş bir kesmek olmadan istediğinizi yapamayacağınız anlaşılıyor . Mac OS X, sistemin seçilmesi için "Latin karakteri" düzeni olarak tanıdığı en az bir klavye düzeni gerektiriyor gibi görünüyor . Bu, giriş ekranında vb. Parolanızı girememenizi önler. Fransızca veya Kanadaca veya sistemin Latin karakterleri olarak tanıdığı başka bir klavye düzeni seçtiyseniz ABD düzeninin seçimini kaldırabilirsiniz.

Sorununuz, Latin alfabesi karakterleri içerirken özel düzeninizin sistem tarafından Latin klavye düzeni olarak tanınmaması ve bu nedenle seçilen tek klavye düzeni olamamasıdır. Daha fazla bilgi için bu soruya (ne yazık ki büyük bir cevaptan yoksun) bakın.

Bu soruya harika bir yanıtın da sorunuzu cevaplayacağını unutmayın. Ne yazık ki, buradaki cevabım sadece sorunun ne olduğunu açıklıyor, ancak sizin için adım adım bir çözümüm yok. Böyle bir hack mümkün olsa da, kimsenin Mac OS X'i belirli bir özel klavyenin tek seçilebilir klavye olarak kullanmak için güvenli olduğuna nasıl ikna edeceğini anladığına dair hiçbir kanıt görmüyorum.


@Lri Doğru olduğundan şüpheleniyorum, ancak bunu test edecek donanıma sahip değilim. Belki de bu siteyi okuyan bir okuyucu var mı?
Daniel

7

Tamlık uğruna, bunu Apple ile hata kimliği # 11137961 olarak dosyaladım ve bu cevap aldım:

Hata Kimliği No: 11137961
Hata Başlığı: Özel bir tane kullanırken varsayılan (yerleşik) klavye düzenlerini devre dışı bırakmaya izin ver


Mühendislik, bu sorunun aşağıdaki bilgilere dayanarak tasarlandığını belirlemiştir:

Sorun sadece klavye düzeninizin ASCII uyumlu olarak tanınmasını sağlıyorsa, en kolayı .keylayout'unuzu "paketlemek" olacaktır, o zaman Info.plist'iniz daha ayrıntılı olarak açıklayan bir "KLInfo_" sözlüğü içerebilir:

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

Buna biraz daha bakmalıyım, ancak TIS bir USet üretmek için klavye düzeni çıktısını tarayacak ve aşağıdaki asgari testi geçip geçmeyeceğine dair bir ilk fikir fikri üretecek gibi görünüyor:

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

TIS ayrıca yukarıda belirtilen yerel ayar için örnek seti inceleyecek ve aralıkta iyi bir düzine karakter gerektirecektir [a-z].

Paketleme hakkında bazı öneriler için .keylayoutayrıca bkz TextInputSources.h.

Bu hala bir sorunsa veya bu sorunun çözümü ile ilgili sorularınız varsa, lütfen hata raporunuzu bu bilgilerle güncelleyin.

Şimdi bu hata raporunu kapatıyoruz.


1
İşaretli: Düzenim bu ölçütleri karşılıyor ancak olası bir varsayılan düzen olarak tanınmıyor. Bu yüzden mühendisleri tam bilgi vermediler veya yanlış bilgi verdiler.
İsimsiz_1

1
@DmitryDulepov Varsayılan düzen olarak kullanmak mümkündür, ancak diğerini kaldırma düğmesi hala etkinleştirilmez; bunu manuel olarak yapmanız gerekir ( Lri'nin cevabı hakkındaki yorumuma
RolKau

@RolKau, evet ama daha sonra başka sorunlar da var. Birden fazla mizanpajınız varsa, yeni özel mizanpaj bazı uygulamalarda kullanılamaz. Örneğin, AppStore'un arama çubuğunda buna geçiş yapamazsınız. En azından yapamadım.
İsimsiz_1


1

Ben sadece yardımcı olabilecek bir şeyle karşılaştım. İşte gidiyor:

$ 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;
        }
    );
}

Bu, benim özel klavye düzenimin (“QWERTY” olarak adlandırılır) varsayılan olduğu sistemimde. KeyboardLayout NameVe KeyboardLayout IDözelliklerinin .keylayoutdosyanın başındaki kimliğe ve ada başvurduğunu unutmayın .

Gördüğünüz gibi, defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceIDhala dizeyi döndürüyor "com.apple.keylayout.Dutch". Mevcut com.apple.keylayoutdeğerlerin bir yerinde bir liste var mı ? Özel bir klavye düzeni için böyle bir değer elde etmek mümkün müdür? Çünkü bu durumda mülkü geçersiz kılabiliriz.

Ayrıca AppleEnabledInputSources, AppleInputSourceHistoryve AppleSelectedInputSourcesözellikleri tüm değerleri Kur Yardımcısı çalıştırırken Başlangıçta seçilen doğal OS X klavye düzenine karşılık olarak, özel klavye düzeni göz ardı etmek gibi görünüyor.


Başka bir güncelleme: Aha! plistAyarları kopyalayabileceğimiz başka bir dosya var gibi görünüyor .

$ 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;
    };
}

Gördüğünüz gibi ( AppleCurrentKeyboardLayoutInputSourceID), görünüşe göre özel klavye düzenleri , klavye düzeninin adının ( dosyada belirtildiği gibi) "org.unknown.keylayout.FOO"olduğu gibi değerler alır .FOO.keylayout

Bu nedenle, tüm değerleri adlandırılmış QWERTYve kimliğiyle 1337( .keylayoutdosyada belirtilen ) özel klavye düzenimize ayarlamayı deneyelim :

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

Ne yazık ki, bu işe yaramıyor gibi görünüyor.

Güncelleme: @Lri güvenilir bir yöntem keşfetti - cevabına bakın.


1

Apple'ın Sistem Tercihleri ​​ile başka bir tane seçildiyse, sistemin varsayılan klavye düzenini kaldırmayı mümkün kıldığım hata raporuma yanıtı:

Mühendislik, bunun Apple'ın ele alması gereken bir sorun olmadığını belirledi.

Bu özel klavye düzeni birlikte (varsayarak .keylayoutgibi bir paket içinde olduğunu foo.bundle/Contents/Resources/foo.keylayout), o zaman bu sokmaya kadar kolay olabilir Info.plist'ın KLInfo_ sözlüğü:

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

Bu düzene sistem genelinde ihtiyaç duyulursa (örn. Şifre girişi dahil) /Library/Keyboard Layouts/aynı konumda değil, içine kurulabilir ~/Library/.

Bunun hala sizin için bir sorun olup olmadığını bize bildirmek için lütfen hata raporunuzu güncelleyin.

Bu sorunun çözümü ile ilgili sorularınız varsa, lütfen hata raporunuzu onlarla güncelleyin.

Lütfen bu sorunu etkileyebilecek güncellemeler için düzenli olarak yeni Apple ürünlerini kontrol ettiğinizden emin olun. Yine, hata göndermek için zaman ayırdığınız için teşekkür ederiz. Girişinizi içtenlikle takdir ediyoruz.


1

Ben sadece aşağıdaki yöntemi kullanarak High Sierra varsayılan düzeni kaldırma başarılı oldu:

  1. Library/PreferencesKlasörünüze gidin .
  2. Dosya com.apple.HIToolbox.plistdosyasını çift tıklatarak veya openkomut satırında kullanarak açın . Bu, XCode'u açacaktır ve ek bileşenler yüklemek isteyebilir.
  3. XCode sonunda dosyanın yapısını gösterene kadar 2. adımı tekrarlayın.
  4. AppleEnabledInputSourcesDüğümü bulun ve açın.
  5. Kaldırmak istediğiniz düzen için girişi kaldırın.
  6. Dosyayı kaydedin ve XCode'dan çıkın.

Şimdi bu finali yapmak için muhtemelen oturumu kapatmanız veya yeniden başlatmanız gerekiyor. Benim için hile yaptı bu yüzden bazı güncelleme için yine de yeniden başlatmak zorunda kaldı. Şimdi Neo'yu heyecan verici bir buzul hızında yazıyorum ama tek bir QWERTZ görünmüyor!


0

İşte bir fikir: Özel mizanpajınızın klavye kimliğinin Roman olarak ayarlandığından emin olduktan sonra, yalnızca bu mizanpajı içeren özel bir AppleKeyboardLayouts.bundle yapın ve bunu işletim sistemiyle birlikte gelenle değiştirin. (Kendimi bir .bundle oluşturmaya neyin dahil olduğunu bilmiyorum)


0

Kullanılan mizanpajınızı Latin alfabesi kullanan bir düzen olarak işaretlemek için Ukelele'yi kullanabilirsiniz . Bir paket olarak dışa aktarın, yükleyin ve ardından ABD'yi silebilirsiniz.


-1

Kolayca yapılabilir. Özel düzeni (kullanım menü çubuğu Girdi menüsü) İlk değişim, daha sonra ABD düzenini kaldırın.


Özel düzenim şu anda kullanımda olan. Soruda belirtildiği gibi, artık ABD klavye düzenini kullanmıyorum.
Mathias Bynens

ABD klavye düzeni olmadan yaşıyorum ve seçimini kaldırmakta sorun yaşamadım. Sahip olduğum diğer özelleştirmeler varsayılan olmayan, ABD dışı bölge ve dildir.
shpokas

Başlangıçta Mac'i kurarken seçtiğiniz klavye düzeninin seçimini kaldırabilir misiniz?
Mathias Bynens

Evet, bölgeyi de değiştirirsem yapabilirim.
shpokas

Bakın, sorun bu. Her zaman OS X'in silemeyeceğiniz veya devre dışı bırakamayacağınız yerleşik klavye düzenlerinden biri vardır.
Mathias Bynens
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.