Ir para o conteúdo
ou

Software livre Brasil

 Voltar a Helio Loureiro
Tela cheia

Remapeando a tecla ± do MacBook Pro

26 de Novembro de 2022, 17:57 , por Home - helio.loureiro.eng.br - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 6 vezes

Por algum motivo bizarro, a Apple inclui essa tecla esquisita no teclado de seus notebooks.  Tenho no MacBook Pro que uso, mas já vi que é a mesma coisa em outro modelos como o MacBook Air.  Como eu uso boa parte do tempo em casa, onde tenho um teclado mecânico, quase nunca percebo o problema dessa tecla alienígena instalada.  Mas basta eu trabalhar só no laptop em hackathons e outros eventos pra começarem os problemas.  Principalmente quando vou mexer no shell e passar o "~" pra usar como abreviação do HOME.

Hoje, um dos raros dias que faço isso, resolvi mexer no laptop na sala pra assistir à copa do mundo e acertar algumas coisas no raspberrypi.  Além de escrever pro blog aqui.  Eis que o raio da tecla "~" faz falta.  Mas dessa vez resolvi buscar alguma solução na Internet.  E achei!

https://apple.stackexchange.com/questions/281405/easy-way-to-remap-non-modifier-keys-on-mac

Basicamente é rodar o seguinte comando:

MacOS@helio> hidutil property --set '{"UserKeyMapping":
   [{"HIDKeyboardModifierMappingSrc":0x700000035,
      "HIDKeyboardModifierMappingDst":0x700000064},
     {"HIDKeyboardModifierMappingSrc":0x700000064,
      "HIDKeyboardModifierMappingDst":0x700000035}]
}'

Isso já configura a tecla corretamente. E pra iniciar durante o boot, criar o arquivo ~/Library/LaunchAgents/com.user.loginscript.plist com o seguinte conteúdo:

<?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>com.user.loginscript</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/hidutil</string>
        <string>property</string>
        <string>--set</string>
        <string>{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000035, "HIDKeyboardModifierMappingDst":0x700000064}, {"HIDKeyboardModifierMappingSrc":0x700000064, "HIDKeyboardModifierMappingDst":0x700000035}]}</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

E chamar na inicialização assim:

MacOS@helio> launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist

E pronto! Tecla funcional.  Agradeço de coração quem deu essa resposta maravilhosa no stack exchange.

UPDATE:  Sun Nov 27 19:27:29 CET 2022

Quando fui usar o laptop conectado no teclado externo, tive a triste verificação de que os comandos acima troca uma tecla pela outra, o que é altamente indesejado.  O que eu quero é mesmo sumir com a tecla do "±" que não uso.

Pra isso eu precisei modificar o comando anterior para:

MacOS@helio> hidutil property --set '{"UserKeyMapping":
   [{"HIDKeyboardModifierMappingSrc":0x700000064,
      "HIDKeyboardModifierMappingDst":0x700000035}]
}'

E o mesmo pra ~/Library/LaunchAgents/com.user.loginscript.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>com.user.loginscript</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/hidutil</string>
        <string>property</string>
        <string>--set</string>
        <string>{"UserKeyMapping":[{"HIDKeyboardModifierMappingSrc":0x700000064, "HIDKeyboardModifierMappingDst":0x700000035}]}</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

E agora tenho a tecla "~" em ambos os teclados.  Precisei dar um "reload" no launchctl pro caso do teclado:

MacOS@helio> launchctl unload ~/Library/LaunchAgents/com.user.loginscript.plist
MacOS@helio> launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist

Fonte: http://helio.loureiro.eng.br/index.php/unix/26-macosxdarwinbsd/427-remapeando-a-tecla-do-macbook-pro

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.