Acabei de encontrar algo que pode ajudar. Aqui vai:
$ 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;
}
);
}
Este é o meu sistema, onde meu layout de teclado personalizado (chamado “QWERTY”) é o padrão. Observe que as propriedades KeyboardLayout Name
e se KeyboardLayout ID
referem ao ID e nome no início do .keylayout
arquivo.
Como você pode ver, defaults read /Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID
ainda retorna a string "com.apple.keylayout.Dutch"
. Existe uma lista em algum lugar dos com.apple.keylayout
valores disponíveis ? É possível obter esse valor para um layout de teclado personalizado? Porque nesse caso, poderíamos simplesmente substituir a propriedade.
Além disso, as AppleEnabledInputSources
, AppleInputSourceHistory
e AppleSelectedInputSources
propriedades de todos parecem ignorar o layout de teclado personalizado, como seus valores correspondem ao layout de teclado OS X nativa I originalmente selecionado ao executar a instalação do assistente.
Outra atualização: Aha! Parece que há outro plist
arquivo do qual podemos copiar as configurações.
$ 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 você pode ver ( AppleCurrentKeyboardLayoutInputSourceID
), layouts de teclado aparentemente personalizados obtêm valores como "org.unknown.keylayout.FOO"
onde FOO
está o nome do layout do teclado (conforme especificado no .keylayout
arquivo).
Então, vamos tentar definir todos os valores para nosso layout de teclado personalizado, nomeado QWERTY
e com ID 1337
(especificado no .keylayout
arquivo):
sudo defaults write /Library/Preferences/ByHost/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID -string "org.unknown.keylayout.QWERTY"
Infelizmente, isso não parece funcionar.
Atualização: @Lri descobriu um método confiável - veja sua resposta.