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 Namei KeyboardLayout IDodnoszą się do identyfikatora i nazwy na początku .keylayoutpliku.
Jak widać, defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceIDnadal zwraca ciąg "com.apple.keylayout.Dutch". Czy jest gdzieś lista dostępnych com.apple.keylayoutwartoś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, AppleInputSourceHistoryi AppleSelectedInputSourceswł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 plistplik, 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 FOOjest nazwa układu klawiatury (jak podano w .keylayoutpliku).
Tak więc, spróbujmy ustawić wszystkie wartości na nasz niestandardowy układ klawiatury, nazwany QWERTYiz identyfikatorem 1337(określonym w .keylayoutpliku):
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ź.