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 Name
y se KeyboardLayout ID
refieren a la ID y el nombre al comienzo del .keylayout
archivo.
Como puede ver, defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID
aún devuelve la cadena "com.apple.keylayout.Dutch"
. ¿Hay una lista en algún lugar de los com.apple.keylayout
valores 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
, AppleInputSourceHistory
y AppleSelectedInputSources
propiedades 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 plist
archivo 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 FOO
está el nombre del diseño del teclado (como se especifica en el .keylayout
archivo).
Entonces, intentemos configurar todos los valores en nuestro diseño de teclado personalizado, con nombre QWERTY
y con ID 1337
(especificado en el .keylayout
archivo):
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.