Este é um adendo à resposta de Steven C. Howell.
Eu tenho um novo MacBook Pro com um teclado escandinavo. Este novo modelo não tem mais uma tecla Esc, o que é uma desvantagem significativa para mim.
Descobri que o seguinte traduzirá a tecla § (canto superior esquerdo, esquerdo de 1 e acima da tecla tab) - que eu acho que nunca usei para nada antes de hoje - para produzir Esc.
hidutil property --set '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'
Na documentação da Apple (vinculada à resposta de Steven), isso é rotulado como "Teclado fora dos EUA \ e |" (0x64).
Várias das teclas "fora dos EUA" são difíceis de descobrir porque geralmente se referem a teclas com um rótulo diferente no teclado que você está usando. (I também descoberto que "acento e til Grave" refere-se a chave entre desvio para a esquerda e z, que no meu teclado produz <
. I não foi capaz de estabelecer que corresponde chave para "não-US #
e ~
" e não experimentar mais uma vez I encontrado minha chave.) Se você quiser experimentar, tente executar o script no terminal até encontrar a chave que precisa:
for ((i=1;i<=128;++i)); do
printf '0x7000000%0x\n' "$i"
printf '{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x7000000%0x,"HIDKeyboardModifierMappingDst":0x70000000a}]}' "$i" |
xargs -0 hidutil property --set >/dev/null
read -p "Type some stuff: "
hidutil property --set '{"UserKeyMapping":[{}]}' >/dev/null
done
Isso percorre os códigos de chave e muda um de cada vez, na esperança de que você possa encontrar, por tentativa e erro, uma chave que não é particularmente útil para você. Tente digitar algo quando solicitado - se você receber um em g
vez do que esperava, encontrou o código da chave certo. (Mude 0x70000000a
para outra coisa se g
não for uma opção conveniente para você. Talvez você queira remapear a g
tecla?) Quando terminar de digitar, basta pressionar Enter para prosseguir para a próxima tecla.
Pelo que vale, o último comando dentro do loop é como você zap todas as UserKeyMapping
configurações:
hidutil property --set '{"UserKeyMapping":[{}]}'
Quando você executa inicialmente hidutil property --get UserKeyMapping
, produz
(null)
mas parece que você não pode alimentar esse valor para zap a configuração (ou melhor, ele aceita, mas ignora essa entrada).
(Se você não estiver familiarizado com o Terminal, basta copiar / colar o item for
até o done
seu bash$
prompt ou similar.)
De acordo com a pergunta Stack Overflow relacionada, você pode colocar o comando em um arquivo de script no diretório inicial e adicioná-lo à sua launchd
configuração para tornar essa alteração persistente.
Caso alguns leitores não se sintam à vontade para fazer isso sozinhos, aqui está um script rápido que faz isso por você. Novamente, basta copiar / colar isso no prompt do Terminal.
mkdir -p "$HOME"/bin
printf '%s\n' '#!/bin/sh' \
'hidutil property --set '"'"'{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064,"HIDKeyboardModifierMappingDst":0x700000029}]}'"'" \
>"$HOME"/bin/userkeymapping
chmod 755 "$HOME"/bin/userkeymapping
cat<<: >"$HOME"/Library/LaunchAgents/userkeymapping.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>userkeymapping</string>
<key>ProgramArguments</key>
<array>
<string>$HOME/bin/userkeymapping</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
:
launchctl load "$HOME"/Library/LaunchAgents/userkeymapping.plist
Obviamente, se você acabou com outra chave que 0x700000064
não a alterada no script ou no arquivo, "$HOME"/bin/userkeymapping
ela será criada se você já executou o procedimento acima.