Saya baru saja menemukan sesuatu yang mungkin bisa membantu. Ini dia:
$ 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;
}
);
}
Ini ada di sistem saya, di mana tata letak keyboard khusus saya (bernama "QWERTY") adalah default. Perhatikan bahwa KeyboardLayout Namedan KeyboardLayout IDproperti merujuk ke ID dan nama di awal .keylayoutfile.
Seperti yang Anda lihat, defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceIDmasih mengembalikan string "com.apple.keylayout.Dutch". Apakah ada daftar di suatu tempat yang tersediacom.apple.keylayout nilai yang ? Apakah mungkin untuk mendapatkan nilai seperti itu untuk tata letak keyboard khusus? Karena dalam kasus itu, kita bisa dengan mudah mengganti properti.
Juga, AppleEnabledInputSources, AppleInputSourceHistory, dan AppleSelectedInputSourcessifat semua tampaknya mengabaikan layout keyboard kustom, sebagai nilai-nilai mereka sesuai dengan layout keyboard OS X asli awalnya saya pilih saat menjalankan Setup Assistant.
Pembaruan lain: Aha! Sepertinya ada plistfile lain dari mana kita mungkin bisa menyalin pengaturan.
$ 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;
};
}
Seperti yang dapat Anda lihat ( AppleCurrentKeyboardLayoutInputSourceID), tata letak keyboard tampaknya mendapatkan nilai seperti di "org.unknown.keylayout.FOO"mana FOOnama tata letak keyboard (seperti yang ditentukan dalam .keylayoutfile).
Jadi, mari kita coba mengatur semua nilai ke tata letak keyboard khusus kami, bernama QWERTYdan dengan ID 1337(ditentukan dalam .keylayoutfile):
sudo defaults write /Library/Preferences/ByHost/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID -string "org.unknown.keylayout.QWERTY"
Sayangnya, ini sepertinya tidak berhasil.
Pembaruan: @ri menemukan metode yang dapat diandalkan - lihat jawabannya.