Acabo de encontrar algo que podría ayudar. Aquí va:
$ 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;
}
);
}
Esto está en mi sistema, donde mi diseño de teclado personalizado (llamado "QWERTY") es el predeterminado. Tenga en cuenta que las propiedades KeyboardLayout Namey se KeyboardLayout IDrefieren a la ID y el nombre al comienzo del .keylayoutarchivo.
Como puede ver, defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceIDaún devuelve la cadena "com.apple.keylayout.Dutch". ¿Hay una lista en algún lugar de los com.apple.keylayoutvalores disponibles ? ¿Es posible obtener ese valor para un diseño de teclado personalizado? Porque en ese caso, simplemente podríamos anular la propiedad.
Además, las AppleEnabledInputSources, AppleInputSourceHistoryy AppleSelectedInputSourcespropiedades de todos parecen ignorar la disposición de teclado personalizado, ya que sus valores se corresponden con la disposición de teclado OS X nativo que he seleccionado originalmente cuando se ejecuta el programa de instalación Asistente.
Otra actualización: ¡Ajá! Parece que hay otro plistarchivo del que podríamos copiar la configuración.
$ 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;
};
}
Como puede ver ( AppleCurrentKeyboardLayoutInputSourceID), los diseños de teclado aparentemente personalizados obtienen valores como "org.unknown.keylayout.FOO"dónde FOOestá el nombre del diseño del teclado (como se especifica en el .keylayoutarchivo).
Entonces, intentemos configurar todos los valores en nuestro diseño de teclado personalizado, con nombre QWERTYy con ID 1337(especificado en el .keylayoutarchivo):
sudo defaults write /Library/Preferences/ByHost/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID -string "org.unknown.keylayout.QWERTY"
Lamentablemente, esto no parece funcionar.
Actualización: @Lri descubrió un método confiable: vea su respuesta.