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 la distribución de mi teclado personalizado (llamada "QWERTY") es la predeterminada. Tenga en cuenta que las propiedades KeyboardLayout Name
y KeyboardLayout ID
se refieren a la ID y al nombre al inicio del archivo .keylayout
.
Como puede ver, defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID
sigue devolviendo la cadena "com.apple.keylayout.Dutch"
. ¿Hay una lista en algún lugar de los valores com.apple.keylayout
disponibles? ¿Es posible obtener tal valor para una distribución de teclado personalizada? ’Debido a que en ese caso, simplemente podríamos anular la propiedad.
Además, las propiedades AppleEnabledInputSources
, AppleInputSourceHistory
y AppleSelectedInputSources
parecen ignorar la distribución personalizada del teclado, ya que sus valores corresponden a la distribución del teclado OS X original que seleccioné originalmente al ejecutar el Asistente de configuración.
Otra actualización: ¡Ajá! Parece que hay otro archivo plist
desde el cual 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
), aparentemente las distribuciones de teclado personalizadas obtienen valores como "org.unknown.keylayout.FOO"
donde FOO
es el nombre de la distribución del teclado (como se especifica en el archivo .keylayout
).
Por lo tanto, vamos a intentar configurar todos los valores en nuestra distribución de teclado personalizada, denominada QWERTY
y con el ID 1337
(especificado en el archivo .keylayout
):
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; consulte su respuesta.