Я только что наткнулся на то, что могло бы помочь. Вот оно:
$ 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 обнаружил надежный метод - смотрите его ответ.