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 Name
und KeyboardLayout ID
auf die ID und den Namen am Anfang der .keylayout
Datei beziehen .
Wie Sie sehen können, wird defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID
immer noch die Zeichenfolge zurückgegeben "com.apple.keylayout.Dutch"
. Gibt es irgendwo eine Liste der verfügbaren com.apple.keylayout
Werte? 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
, AppleInputSourceHistory
und AppleSelectedInputSources
Eigenschaften 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 plist
Datei, 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 FOO
ist der Name des Tastaturlayouts (wie in der .keylayout
Datei angegeben).
Versuchen wir also, alle Werte auf unser benutzerdefiniertes Tastaturlayout mit dem Namen QWERTY
und der ID 1337
(in der .keylayout
Datei 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.