Я просто натрапив на щось, що може допомогти. Ось:
$ 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
властивості посилаються на ідентифікатор та ім'я на початку .keylayout
файлу.
Як бачите, defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID
все одно повертає рядок "com.apple.keylayout.Dutch"
. Чи є десь список доступних com.apple.keylayout
значень? Чи можливо отримати таке значення для власної розкладки клавіатури? Тому що в цьому випадку ми можемо просто перекрити майно.
Крім того, всі AppleEnabledInputSources
, AppleInputSourceHistory
і AppleSelectedInputSources
властивості, здається, ігнорують користувальницьку розкладку клавіатури, оскільки їх значення відповідають нативній розкладці клавіатури OS X, яку я спочатку вибрав під час роботи програми Assistant Setup.
Ще одне оновлення: Ага! Здається, є ще один 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 виявив надійний метод - дивіться його відповідь.