Ho appena trovato qualcosa che potrebbe aiutare. Ecco:
$ 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;
}
);
}
Questo è nel mio sistema, dove il mio layout di tastiera personalizzato (denominato "QWERTY") è l'impostazione predefinita. Nota che le proprietà KeyboardLayout Name
e KeyboardLayout ID
si riferiscono all'ID e al nome all'inizio del file .keylayout
.
Come puoi vedere, defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID
restituisce ancora la stringa "com.apple.keylayout.Dutch"
. Esiste una lista da qualche parte dei valori di com.apple.keylayout
disponibili? È possibile ottenere tale valore per un layout di tastiera personalizzato? In questo caso, potremmo semplicemente ignorare la proprietà.
Inoltre, le proprietà AppleEnabledInputSources
, AppleInputSourceHistory
e AppleSelectedInputSources
sembrano ignorare il layout personalizzato della tastiera, poiché i loro valori corrispondono al layout di tastiera OS X nativo che ho selezionato originariamente durante l'esecuzione di Setup Assistant.
Un altro aggiornamento: Aha! Sembra che ci sia un altro file plist
da cui potremmo essere in grado di copiare le impostazioni.
$ 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;
};
}
Come puoi vedere ( AppleCurrentKeyboardLayoutInputSourceID
), i layout di tastiera apparentemente personalizzati ottengono valori come "org.unknown.keylayout.FOO"
dove FOO
è il nome del layout della tastiera (come specificato nel file .keylayout
).
Quindi, proviamo ad impostare tutti i valori sul nostro layout di tastiera personalizzato, denominato QWERTY
e con ID 1337
(specificato nel file .keylayout
):
sudo defaults write /Library/Preferences/ByHost/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID -string "org.unknown.keylayout.QWERTY"
Purtroppo, questo non sembra funzionare.
Aggiornamento: @Lri ha scoperto un metodo affidabile: vedi la sua risposta.