Я только что наткнулся на то, что могло бы помочь. Вот оно:
$ 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;
}
);
}
Это в моей системе, где моя пользовательская раскладка клавиатуры (названная «QWERTY») используется по умолчанию. Обратите внимание , что KeyboardLayout Nameи KeyboardLayout IDсвойства относятся к ID и имени в начале .keylayoutфайла.
Как видите, по- defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceIDпрежнему возвращает строку "com.apple.keylayout.Dutch". Есть ли где-нибудь список доступных com.apple.keylayoutзначений? Можно ли получить такое значение для пользовательской раскладки клавиатуры? Потому что в этом случае мы могли бы просто переопределить свойство.
Кроме того AppleEnabledInputSources, свойства AppleInputSourceHistory, и, AppleSelectedInputSourcesкажется, игнорируют пользовательскую раскладку клавиатуры, поскольку их значения соответствуют встроенной раскладке клавиатуры OS X, которую я первоначально выбрал при запуске Setup Assistant.
Еще одно обновление: ага! Похоже, есть еще один plistфайл, из которого мы могли бы скопировать настройки.
$ 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;
};
}
Как вы можете видеть ( AppleCurrentKeyboardLayoutInputSourceID), очевидно, что пользовательские раскладки клавиатуры получают такие значения, как "org.unknown.keylayout.FOO"где FOOимя раскладки клавиатуры (как указано в .keylayoutфайле).
Итак, давайте попробуем установить все значения для нашей пользовательской раскладки клавиатуры с именем QWERTYи идентификатором 1337(указанным в .keylayoutфайле):
sudo defaults write /Library/Preferences/ByHost/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID -string "org.unknown.keylayout.QWERTY"
К сожалению, это не похоже на работу.
Обновление: @Lri обнаружил надежный метод - смотрите его ответ.