Tornar um layout de teclado personalizado o padrão do sistema - mesmo para a tela de login


37

Posso criar um layout de teclado personalizado (que não esteja incluído no OS X por padrão) como padrão do sistema - mesmo para a tela de login?


(enquanto isso, você pode não aceitar a resposta, os leitores podem ficar confusos)
o0 '.

1
@Lohoris: Feito!
Mathias Bynens

Por favor, atualize a questão b remover a nota de actualização, a melhor resposta agora trabalha nas últimas versões OSX bem
Bert Goethals

Respostas:


13

Isso funciona no OSX 10.9 Mavericks, com um layout de teclado que eu criei com o Ukulele. Supondo que você já tenha o layout instalado no sistema, faça login na sua conta e ative o layout do teclado personalizado.

Abra um terminal e execute o seguinte comando:

cp /Library/Preferences/com.apple.HIToolbox.plist /tmp/

Se você pretende usar um editor de texto (por exemplo, TextWrangler) para fazer essa alteração em vez do XCode (que possui um editor gráfico especializado), execute também :

plutil -convert xml1 /tmp/com.apple.HIToolbox.plist

Agora, abra /tmp/com.apple.HIToolbox.plistno editor de texto ou no XCode.

Em todo o arquivo, você encontrará várias menções a uma KeyboardLayout IDchave, seguidas por um número inteiro e KeyboardLayout Nameseguidas por uma string. Altere essas strings para o nome do seu layout de teclado personalizado e os números inteiros de ID para o ID do seu layout (a maneira mais fácil de encontrar os valores certos é comparar com as configurações de usuário encontradas no arquivo ~/Library/Preferences/com.apple.HIToolbox.plist.

Além disso, o valor da chave AppleCurrentKeyboardLayoutInputSourceIDdeve ser alterado de acordo (provavelmente para algo como org.unknown.keylayout.NameOfYourLayout). Novamente, você pode encontrar esse valor no seu arquivo de preferências local.

Depois que essas alterações forem concluídas, salve o arquivo e volte ao terminal. Para garantir a segurança, você pode criar uma cópia do com.apple.HIToolbox.plistarquivo original , caso tenha cometido um erro e precise reverter. Por exemplo, para salvar uma cópia na sua pasta Documentos :

sudo cp /Library/Preferences/com.apple.HIToolbox.plist ~/Documents

Em seguida, instale sua alteração com o seguinte:

sudo sh -c 'cat /tmp/com.apple.HIToolbox.plist > /Library/Preferences/com.apple.HIToolbox.plist'

(Não é necessário converter seu arquivo novamente para fora do formato de texto, plutilse você o fez anteriormente.)

Saia do terminal e reinicie o computador (o logout não é suficiente: o arquivo não será relido). Após reiniciar, você deverá ter o layout do teclado na tela de login.

OBSERVAÇÃO: é possível que bastasse copiar o arquivo com.apple.HIToolbox.plistde ~/Library/Preferences/para /Library/Preferences/, no entanto, no meu caso, há mais entradas, por isso decidi jogar pelo seguro e apenas modificar o arquivo existente.


Tentando isso agora, pois a outra resposta não funcionou. FWIW, aqui está o que os meus com.apple.HIToolbox.plistolhares de arquivo como após as alterações: gist.github.com/anonymous/d18bae208b5cf12e48be
Mathias Bynens

Trabalhou perfeitamente, obrigado! Sinto muito por não poder mais dar a você a recompensa, então montarei uma nova apenas para recompensá-lo por esta resposta.
Mathias Bynens

Ainda bem que ajudou. Obrigado pela recompensa extra! :-)
Eric J. Francois

Funcionou como um encanto. Ótima dica!
precisa saber é o seguinte

Isto é fantástico. Fiquei atolado pelo meu padrão de teclado belga por muito tempo! Eu gostaria de poder lhe dar vários votos positivos!
Bert Goethals

12

Encontrei essa dica antiga do MacWorld , que sugeria executar o Assistente de Instalação novamente:

sudo /System/Library/CoreServices/Setup Assistant.app\
/Contents/MacOS/Setup Assistant

No começo, pensei que isso não era mais suportado no Lion, pois a execução desse comando não parecia ter nenhum efeito. Somente depois de postar esta pergunta, notei que há um erro de digitação no comando. Os caracteres de espaço precisam ser escapados corretamente ou o local do binário precisa ser citado. Por esse motivo, a dica à qual vinculei não funciona.

Aqui está o comando correto:

sudo "/System/Library/CoreServices/Setup Assistant.app/Contents/MacOS/Setup Assistant"

Como alternativa, isso também funcionaria:

sudo /System/Library/CoreServices/Setup\ Assistant.app/Contents/MacOS/Setup\ Assistant

Outra dica que não foi mencionada na página à qual vinculei: o layout do teclado personalizado precisa ser instalado em /Library/Keyboard Layouts/(ou seja cd /Library/Keyboard\ Layouts), não ~/Library/Keyboard Layoutspara que apareça na tela de seleção de layout do teclado do Assistente de Configuração.


Atualização: A partir do OS X 10.8, você precisará executar um comando extra (por exemplo, remover um arquivo primeiro):

sudo rm /var/db/.AppleSetupDone; sudo "/System/Library/CoreServices/Setup Assistant.app/Contents/MacOS/Setup Assistant"

Além disso, você precisará criar uma nova conta de usuário para concluir o Assistente de Configuração - mas não se preocupe, você pode excluir a nova conta posteriormente.

Esse truque não funciona mais nas versões recentes do OS X 10.8.


Update: Aqui está tudo o que eu sei sobre layouts de teclado personalizados no Mac OS X .


Segui suas etapas para o Mountain Lion 10.8 e executei o assistente de configuração. Defina meu layout de teclado padrão para Dvorak e tentei fazer login, mas ele não funcionou. na reinicialização, ele ainda estava usando o qwerty na tela de login.
AMS

Sim, parece não funcionar mais desde o OS X 10.8. :(
Mathias Bynens

3

Estou usando um layout de teclado personalizado criado com o Ukelele no OS X 10.8.5 . Alterei o layout do teclado da tela de login com as seguintes etapas:

  1. Abrir Users & GroupsemSystem Preferences
  2. Selecione Login Optionsna parte inferior do painel esquerdo
  3. Verifica Show Input menu in login window
  4. Ir para a tela de login
  5. Selecione o layout preferido em Other input sourcesno menu de entrada, localizado no canto superior direito
  6. Volte e desmarque a opção Show Input menu in login windowpara impedir mais alterações no layout de login

Achei esse método muito mais fácil do que editar alguns .plistarquivos aleatórios e executar comandos no Terminal.

Esse método pode exigir acesso administrativo, pois é possível desbloquear o painel direito na etapa 3. acima, clicando no ícone de cadeado na parte inferior.

Atualização: Infelizmente, isso não parece funcionar no OS X 10.9.


Eu concedi a você a recompensa, pois essa parecia ser a melhor resposta, mas na verdade não parece funcionar - ela sempre volta ao layout de teclado padrão dos EUA. Para testar isso, usei um layout de teclado que permite digitar três símbolos com um toque de tecla, para que eu possa ver quantos caracteres mascarados aparecem na caixa de entrada da senha. Depois de aplicar as etapas que você mencionou, só foi possível inserir um símbolo de cada vez (conforme o teclado dos EUA).
Mathias Bynens

Você pode descrever o que não funciona com o OS X 10.9? Consigo seguir estas etapas (não realizei a etapa 6) com êxito ao usar o layout Workman (encontrado aqui: workman.deekayen.net ). Meu problema, no entanto, é que, se esse layout for selecionado e eu bloquear o computador, o menu de entrada não será exibido na tela de login, mas tudo bem se eu tiver o Dvorak ou qualquer outra coisa suportada nativamente pelo OS X. (ou seja, eu vejo o menu e pode voltar para US se necessário)
Timothée Boucher

@ TimothéeBoucher Meu comentário anterior descreve o que está errado, e como eu testei isso.
Mathias Bynens 11/11

2

Depois de instalar o macOS Sierra, meu layout personalizado foi reinicializado de volta ao padrão todas as vezes após o login na minha conta.

A Apple adicionou novos teclados e o ID estava em conflito com o teclado que eu estava usando.

Para validar se você tem esse problema, execute:

sudo touch / Biblioteca / Teclado \ Layouts /

A saída:

Keyboard Layouts: duplicate keyboard layout identifier 5000.
Keyboard Layouts: keyboard layout identifier 5000 has been replaced with 16383.

A saída afirma que corrige algo, mas na verdade não fez nada. Eu ainda tinha que editar o layout e ele começou a funcionar como antes.


Também tenho o meu personalizado alterado. Infelizmente, corrigir IDs nos arquivos .plist não me ajudou.
Pavel Gurkov 04/10

@PavelGurkov Você executou o comando sudo touch na pasta depois? Era necessário que o sistema operacional considerasse isso.
jrobichaud

Sim, fiz isso, não tenho saída nenhuma. Verifiquei tudo que pude, mas ainda assim ... Trabalhei perfeitamente no El Capitan, sem sorte na Sierra.
Pavel Gurkov 05/10
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.