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 Name
dan KeyboardLayout ID
properti merujuk ke ID dan nama di awal .keylayout
file.
Seperti yang Anda lihat, defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID
masih 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 AppleSelectedInputSources
sifat 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 plist
file 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 FOO
nama tata letak keyboard (seperti yang ditentukan dalam .keylayout
file).
Jadi, mari kita coba mengatur semua nilai ke tata letak keyboard khusus kami, bernama QWERTY
dan dengan ID 1337
(ditentukan dalam .keylayout
file):
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.