Właśnie natrafiłem na coś, co może pomóc. Tutaj idzie:
$ 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;
}
);
}
To jest w moim systemie, gdzie mój niestandardowy układ klawiatury (o nazwie „QWERTY”) jest domyślny. Zauważ, że właściwości KeyboardLayout Name
i KeyboardLayout ID
odnoszą się do identyfikatora i nazwy na początku .keylayout
pliku.
Jak widać, defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID
nadal zwraca ciąg "com.apple.keylayout.Dutch"
. Czy jest gdzieś lista dostępnych com.apple.keylayout
wartości? Czy można uzyskać taką wartość dla niestandardowego układu klawiatury? Ponieważ w takim przypadku moglibyśmy po prostu zastąpić właściwość.
Poza tym wszystkie AppleEnabledInputSources
, AppleInputSourceHistory
i AppleSelectedInputSources
właściwości wydają się ignorować niestandardowy układ klawiatury, ponieważ ich wartości odpowiadają natywnemu układowi klawiatury OS X, który pierwotnie wybrałem podczas uruchamiania Asystenta ustawień.
Kolejna aktualizacja: Aha! Wygląda na to, że istnieje inny plist
plik, z którego możemy skopiować ustawienia.
$ 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;
};
}
Jak widać ( AppleCurrentKeyboardLayoutInputSourceID
), najwyraźniej niestandardowe układy klawiatury otrzymują wartości, takie jak "org.unknown.keylayout.FOO"
gdzie FOO
jest nazwa układu klawiatury (jak podano w .keylayout
pliku).
Tak więc, spróbujmy ustawić wszystkie wartości na nasz niestandardowy układ klawiatury, nazwany QWERTY
iz identyfikatorem 1337
(określonym w .keylayout
pliku):
sudo defaults write /Library/Preferences/ByHost/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID -string "org.unknown.keylayout.QWERTY"
Niestety to nie działa.
Aktualizacja: @Lri odkryła niezawodną metodę - patrz jego odpowiedź.