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