So entfernen oder deaktivieren Sie ein Standard-Tastaturlayout

16

Ist es möglich, eines der Standard-Tastaturlayouts von OS X Lion zu entfernen oder zu deaktivieren?

Ich verwende ein benutzerdefiniertes Tastaturlayout. Nachdem ich es nun als systemweites Standard-Tastaturlayout festgelegt habe , möchte ich das integrierte US-Tastaturlayout, das mit dem Betriebssystem geliefert wurde, deaktivieren oder entfernen können X. Hier ist ein Screenshot - beachten Sie, dass das Kontrollkästchen deaktiviert ist:

Bildschirmfoto

In OS X 10.9 wurde dieser Einstellungsbereich neu gestaltet, aber es gibt immer noch keine Möglichkeit, das integrierte US-Tastaturlayout zu entfernen:

Bildschirmfoto

Da ich das US-amerikanische Tastaturlayout nie verwende, würde ich es gerne entfernen, dh aus dem Menü "Eingabe" in der Menüleiste entfernen. Wie kann ich das machen?


Update: Daniels Antwort beantwortet diese Frage nicht wirklich, bietet jedoch einige wertvolle Informationen zu diesem Problem:

Für Mac OS X muss anscheinend mindestens ein Tastaturlayout ausgewählt werden, das vom System als Layout mit lateinischen Zeichen erkannt wird.

Unter der Annahme, dass dies genaue Informationen sind (danke, Daniel!), Könnte die Frage folgendermaßen umformuliert werden:

Wie wird OS X veranlasst, eine benutzerdefinierte Tastatur als Layout für lateinische Zeichen zu betrachten?


Update: Ich bin gerade auf etwas gestoßen, das helfen könnte.

Mathias Bynens
quelle
1
Ich denke nicht, dass "Latein" ausreicht. Dies ist in Ukelele einfach zu bewerkstelligen, indem Sie die Tastatur-ID auf Roman setzen. Ich vermute, dass Ihr Layout auch Teil des AppleKeyboardLayouts.bundle in System- / Bibliotheks- / Tastaturlayouts sein muss.
Tom Gewecke

Antworten:

20
  1. Aktivieren Sie in den Systemeinstellungen eine Eingabequelle, die Ihrem physischen Tastaturlayout nicht entspricht (ich habe Afghan Dari verwendet).
  2. Rennen f=~/Library/Preferences/ByHost/com.apple.HIToolbox*.plist; plutil -convert xml1 $f; open $f -e.
  3. Entfernen Sie andere Eingabequellen mit Ausnahme des vorübergehend aktivierten Tastaturlayouts und Ihres benutzerdefinierten Tastaturlayouts.
  4. Melden Sie sich ab und wieder an.
  5. Entfernen Sie das temporär aktivierte Tastaturlayout aus der Eigenschaftenliste.
  6. Melden Sie sich ab und wieder an.

Bearbeiten: Die obige Methode scheint in 10.9 nicht mehr zu funktionieren. Dies funktionierte jedoch sowohl in 10.9 als auch in 10.8:

  1. Ändern Sie die aktuelle Eingabequelle in Ihr benutzerdefiniertes Tastaturlayout.
  2. Öffnen Sie ~/Library/Preferences/com.apple.HIToolbox.plist(in 10.9) oder ~/Library/Preferences/ByHost/com.apple.HIToolbox.*.plist(in 10.8 und früher). Sie können die plist mit in XML konvertieren plutil -convert xml1.
  3. Entfernen Sie die Eingabequelle oder die Eingabequellen, die Sie deaktivieren möchten, aus dem AppleEnabledInputSourcesWörterbuch. Wenn es einen AppleDefaultAsciiInputSourceSchlüssel gibt, entfernen Sie ihn.
  4. Neustart.
Lri
quelle
1
Aha, es scheint zu funktionieren, wenn Sie den Computer neu starten, anstatt sich nur aus- und wieder einzuloggen (Schritt 4). Vielen Dank! Würde es Ihnen etwas ausmachen, eine neue Antwort mit einem Link zu Ihrer Ressource zu veröffentlichen, damit Sie das Kopfgeld erhalten können?
Mathias Bynens
1
@MathiasBynens Ich habe die Antwort und meine Website bearbeitet. Als ich die zweite Methode erneut versuchte, musste ich auch neu starten, um die Änderungen zu übernehmen.
Lri
4
Funktioniert gut in OS X 10.9, wenn Sie Ihren Computer neu starten. Allerdings musste ich auch das temporäre Layout aus der plist-Datei entfernen und mit 'sudo reboot' neu starten, sonst wurde das temporäre Layout beim normalen Neustart wieder hinzugefügt.
Unbenannt_1
2
@Lri Am 10.9 musste ich löschen: AppleEnabledInputSources: 0 (das alte Standardlayoutelement) und das: AppleInputSourceHistory: Wörterbuch (mit PlistBuddy). Kein Neustart, sondern nur Abmeldung notwendig.
RolKau
1
Bei Yosemite funktioniert das nicht. Immer wenn ich die Datei in Xcode ändere, wird sie nach ein paar Sekunden wiederhergestellt. Kann mir jemand erklären, wie du es genau gemacht hast?
Simon Perepelitsa
7

Es sieht so aus, als könnten Sie nicht das tun, was Sie wollen, ohne das System noch unentdeckt zu hacken . Für Mac OS X muss anscheinend mindestens ein Tastaturlayout ausgewählt werden, das vom System als "lateinisches Zeichen" erkannt wird . Auf diese Weise wird verhindert, dass Sie Ihr Kennwort auf dem Anmeldebildschirm usw. nicht eingeben können. Wenn Sie Französisch oder Kanadisch oder ein anderes Tastaturlayout ausgewählt haben, das vom System als lateinische Zeichen erkannt wird, können Sie die Auswahl des US-Layouts aufheben.

Ihr Problem ist, dass Ihr benutzerdefiniertes Layout, obwohl es lateinische Zeichen enthält, vom System nicht als lateinisches Tastaturlayout erkannt wird und daher nicht das einzige ausgewählte Tastaturlayout sein kann. Weitere Informationen finden Sie in dieser Frage (leider ohne gute Antwort).

Beachten Sie, dass eine gute Antwort auf diese Frage auch Ihre Frage beantworten würde. Leider verdeutlicht meine Antwort hier nur, was das Problem ist, aber ich habe keine schrittweise Lösung für Sie. Obwohl ein solcher Hack möglich sein mag, sehe ich keine Beweise dafür, dass jemand herausgefunden hat, wie man Mac OS X davon überzeugen kann, dass eine bestimmte benutzerdefinierte Tastatur sicher als einzige auswählbare Tastatur verwendet werden kann.

Daniel
quelle
@Lri Ich vermute, Sie haben Recht, aber nicht die Hardware, um das zu testen. Vielleicht gibt es einen Leser dieser Seite, der das kann?
Daniel
7

Der Vollständigkeit halber habe ich dies als Bug-ID # 11137961 bei Apple hinterlegt, und dies ist die Antwort, die ich erhalten habe:

Fehler- ID-Nr .: 11137961 Fehlertitel
: Deaktivieren von (integrierten) Standardtastaturlayouts bei Verwendung einer benutzerdefinierten


Aufgrund der folgenden Informationen wurde festgestellt, dass sich dieses Problem wie beabsichtigt verhält:

Wenn das Problem nur darin besteht, dass Ihr Tastaturlayout als ASCII-fähig erkannt wird, ist es am einfachsten, Ihr .keylayout zu "bündeln". In Ihrer Info.plist kann sich ein "KLInfo_" -Wörterbuch befinden, das es näher beschreibt, z.

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

Ich müsste das etwas genauer untersuchen, aber es sieht so aus, als würde TIS die Tastaturlayout-Ausgabe scannen, um ein USet zu erzeugen und eine erste Vorstellung von der Wahrnehmung zu bekommen, ob es den folgenden Minimaltest besteht:

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

TIS prüft auch das Exemplarset für das oben angegebene Gebietsschema und benötigt ein gutes Dutzend Zeichen im Bereich [a-z].

Einige Vorschläge zum Bündeln von a .keylayoutfinden Sie auch unter TextInputSources.h.

Wenn dies immer noch ein Problem ist oder Sie Fragen zur Lösung dieses Problems haben, aktualisieren Sie bitte Ihren Fehlerbericht mit diesen Informationen.

Wir schließen jetzt diesen Fehlerbericht.

Mathias Bynens
quelle
1
Aktiviert: Mein Layout erfüllt diese Kriterien, wird jedoch nicht als mögliches Standardlayout erkannt. Daher gaben ihre Ingenieure anscheinend nicht die vollständigen oder falschen Informationen an.
Unbenannt_1
1
@DmitryDulepov Es ist möglich, es als Standardlayout zu verwenden, aber die Schaltfläche zum Entfernen des anderen wird immer noch nicht aktiviert. Sie müssten das manuell tun (siehe meinen Kommentar zu Lris Antwort
RolKau
@ RolKau, ja, aber es gibt später noch andere Probleme. Wenn Sie mehr als ein Layout haben, ist das neue benutzerdefinierte Layout in einigen Apps nicht verfügbar. Beispielsweise können Sie in der Suchleiste des AppStore nicht darauf umschalten. Zumindest konnte ich nicht.
Unbenannt_1
2

Hier ist eine andere Idee: Vor einigen Jahren waren die Bundles für Apple-Tastaturlayouts viel einfacher zu bearbeiten, und dieses Problem scheint lösbar gewesen zu sein:

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

Vielleicht könnte man das alte bearbeitbare Bundle im aktuellen Betriebssystem noch verwenden, wenn man eines von einem alten System bekommen könnte.

Tom Gewecke
quelle
1

Ich bin gerade auf etwas gestoßen, das helfen könnte. Hier geht:

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

Dies ist auf meinem System, wo mein benutzerdefiniertes Tastaturlayout (mit dem Namen "QWERTY") die Standardeinstellung ist. Beachten Sie, dass sich die Eigenschaften KeyboardLayout Nameund KeyboardLayout IDauf die ID und den Namen am Anfang der .keylayoutDatei beziehen .

Wie Sie sehen können, wird defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceIDimmer noch die Zeichenfolge zurückgegeben "com.apple.keylayout.Dutch". Gibt es irgendwo eine Liste der verfügbaren com.apple.keylayoutWerte? Ist es möglich, einen solchen Wert für ein benutzerdefiniertes Tastaturlayout zu erhalten? In diesem Fall könnten wir die Eigenschaft einfach überschreiben.

Auch die AppleEnabledInputSources, AppleInputSourceHistoryund AppleSelectedInputSourcesEigenschaften scheinen alle das benutzerdefinierte Tastaturlayout zu ignorieren, da ihre Werte auf das native OS X Tastaturlayout entsprechen ich ursprünglich ausgewählt , wenn Setup - Assistenten ausgeführt wird .


Noch ein Update: Aha! Es scheint, als gäbe es eine andere plistDatei, aus der wir möglicherweise die Einstellungen kopieren können.

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

Wie Sie sehen können ( AppleCurrentKeyboardLayoutInputSourceID), erhalten anscheinend benutzerdefinierte Tastaturlayouts Werte wie, "org.unknown.keylayout.FOO"wo FOOist der Name des Tastaturlayouts (wie in der .keylayoutDatei angegeben).

Versuchen wir also, alle Werte auf unser benutzerdefiniertes Tastaturlayout mit dem Namen QWERTYund der ID 1337(in der .keylayoutDatei angegeben) festzulegen :

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

Leider scheint dies nicht zu funktionieren.

Update: @Lri hat eine zuverlässige Methode entdeckt - siehe seine Antwort.

Mathias Bynens
quelle
1

Apples Antwort auf meinen Fehlerbericht, in dem ich darum gebeten habe, das Entfernen des Standard-Tastaturlayouts des Systems zu ermöglichen, wenn in den Systemeinstellungen ein anderes ausgewählt wird:

Die Technik hat festgestellt, dass dies für Apple kein Problem darstellt.

Unter der Annahme , dieses individuellen Tastaturlayout wird gebündelt ( .keylayoutist in einem Bündel wie foo.bundle/Contents/Resources/foo.keylayout), dann könnte dies so einfach wie das Einfügen in den Info.plist‚s - KLInfo_ Wörterbuch:

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

Wenn dieses Layout systemweit benötigt wird (dh einschließlich Passworteingabe), kann es an einem anderen /Library/Keyboard Layouts/Ort als am selben Ort installiert werden ~/Library/.

Bitte aktualisieren Sie Ihren Fehlerbericht, um uns mitzuteilen, ob dies immer noch ein Problem für Sie ist.

Wenn Sie Fragen zur Lösung dieses Problems haben, aktualisieren Sie bitte Ihren Fehlerbericht.

Bitte überprüfen Sie regelmäßig neue Apple-Produkte auf Updates, die dieses Problem betreffen könnten. Nochmals vielen Dank, dass Sie sich die Zeit genommen haben, Fehler einzureichen. Wir bedanken uns sehr für Ihren Beitrag.

Mathias Bynens
quelle
1

Ich hatte gerade Erfolg beim Entfernen des Standardlayouts in High Sierra mithilfe der folgenden Methode:

  1. Navigieren Sie zu Ihrem Library/PreferencesOrdner.
  2. Öffnen Sie die Datei com.apple.HIToolbox.plistfile, indem Sie darauf doppelklicken oder openin der Befehlszeile verwenden. Dadurch wird XCode eingeblendet, und möglicherweise möchten Sie zusätzliche Komponenten installieren.
  3. Wiederholen Sie Schritt 2, bis XCode endlich die Dateistruktur anzeigt.
  4. Suchen Sie den AppleEnabledInputSourcesKnoten und klappen Sie ihn auf.
  5. Entfernen Sie den Eintrag für das Layout, das Sie entfernen möchten.
  6. Speichern Sie die Datei und beenden Sie XCode.

Jetzt müssen Sie sich wahrscheinlich abmelden oder neu starten, um das endgültige Ergebnis zu erzielen. Ich musste trotzdem neu starten, um ein Update zu erhalten, damit das für mich den Trick machte. Jetzt tippe ich glücklich in Neo mit rasender Geschwindigkeit, aber kein einziger QWERTZ ist in Sicht!

Bombe
quelle
0

Hier eine Idee: Nachdem Sie sichergestellt haben, dass die Tastatur-ID Ihres benutzerdefinierten Layouts auf Roman eingestellt ist, erstellen Sie ein benutzerdefiniertes AppleKeyboardLayouts.bundle, das nur dieses Layout enthält, und ersetzen Sie dieses durch das mit dem Betriebssystem gelieferte. (Ich weiß selbst nicht, worum es beim Erstellen eines .bundles geht.)

Tom Gewecke
quelle
0

Sie können Ukelele verwenden , um Ihr verwendetes Layout als ein Layout mit lateinischer Schrift zu kennzeichnen. Exportiere es als Bundle, installiere es und dann kannst du das US-amerikanische löschen.

Alexandre G
quelle
-1

Das geht ganz einfach. Wechseln Sie zuerst in Ihr benutzerdefiniertes Layout (verwenden Sie die Menüleiste Eingabemenü) und deaktivieren Sie dann das US-Layout.

shpokas
quelle
Mein benutzerdefiniertes Layout ist das derzeit verwendete. Wie in der Frage erwähnt, verwende ich das US-Tastaturlayout nicht mehr.
Mathias Bynens
Ich lebe ohne US-Tastaturlayout und hatte kein Problem, es abzuwählen. Die anderen Anpassungen, die ich habe, sind Nicht-Standard, Nicht-US-Region und Sprache.
Shpokas
Können Sie das Tastaturlayout deaktivieren, das Sie beim erstmaligen Einrichten des Mac ausgewählt haben?
Mathias Bynens
Ja, ich kann, wenn ich auch die Region ändere.
Shpokas
Sehen Sie, das ist das Problem. Es gibt immer eine der in OS X integrierten Tastaturbelegungen, die Sie nicht löschen oder deaktivieren können.
Mathias Bynens