Aprenda AutoHotKey roubando meus scripts
(hillelwayne.com)- AutoHotKey é uma ferramenta de automação para Windows poderosa, mas intimidadora para quem está começando; por isso, foi disponibilizada como material de estudo uma coleção real de scripts pessoais
- O material é composto por 14 arquivos no total, com foco em exemplos de automação que você pode testar imediatamente, como abrir pastas, inserir texto e expandir atalhos por programa
- Inclui desde inserção rápida da data atual, de em dash e de
¯\_(ツ)_/¯até um sistema modal de atalhos para usuários de vim e uma demonstração simples de GUI - Também há um script que converte timestamps para UTC e hora local, mostrando uma automação prática de fluxo de trabalho que vai além de simples atalhos
- Cada arquivo traz comentários explicando o que o código faz e, em alguns casos, por que ele foi implementado daquela forma, tornando-o uma base de código educacional fácil de ler
Uma coleção de exemplos de AutoHotKey próxima do trabalho real
- Para usuários que acham difícil aprender AutoHotKey, a maior parte dos scripts usados pessoalmente foi publicada com explicações
- O código completo pode ser visto no repositório do GitHub e é composto por 14 arquivos no total
- Os principais exemplos são:
Como ler como uma base de código educacional
- Este repositório é um exemplo de base de código educacional feita para que as pessoas possam aprender lendo o código
- Cada arquivo contém muitos comentários sobre o que o código faz, e algumas implementações também explicam o motivo de determinada abordagem ter sido escolhida
- Uma explicação separada sobre bases de código educacionais continua neste post da newsletter
- Trechos que precisarem de mais explicações podem ser solicitados por meio de issues no GitHub
1 comentários
Comentários do Hacker News
Acho que, pela primeira vez, posso contribuir com algo útil para uma discussão sobre código. Como escritor, criei um script AutoHotkey para abrir rapidamente um notepad.exe vazio a qualquer momento: ao pressionar a tecla
~, ele abre; ao pressionar de novo, fecha; se houver conteúdo, aparece a caixa de diálogo para salvar.Isso é tudo que meu AHK faz.
Quando você quer alternar rapidamente para a janela anterior sem fechar nem minimizar a atual, o atalho padrão do Windows Alt + Escape é útil. Diferente de Alt+Tab, ele não mostra a visão geral das janelas; alterna direto para a janela que tinha o foco imediatamente antes.
No AutoHotkey v1, dá para criar um boilerplate de switcher/launcher que procura um trecho do título da janela e a ativa; se ela já estiver ativa, volta com
send, !{escape}; se não existir, executa o programa. Se não quiser poluir a barra de tarefas, também dá para usarWinHide/WinShow, mas isso não se ajusta bem a algumas janelas; para detectar janelas,ahk_exeouahk_classàs vezes é mais adequado.WinActive("Untitled - Notepad")eWinExist("*Untitled - Notepad")para fechar ou ativar a janela; se ela não existir, executarRun "Notepad".WinActive()ouWinExist(), dá para combinar várias condições de título comore, se necessário, incluir também uma condição ahk_class, como"Untitled - Notepad ahk_class Notepad".AutoHotkey é incrível, mas eu gostaria que a linguagem fosse um pouco mais normal. Sofri tentando criar de forma estável uma versão em proporção áurea do Aero Snap; lidar com vários monitores e tamanhos não deveria ser tão difícil, mas a sintaxe estranha de
Loope as falhas silenciosas por erros simples acabaram tirando a graça e me fizeram desistir.Também encontrei um módulo ahk para Python, mas, combinado com o módulo
keyboard, ele não funcionou tão bem como listener de atalhos quanto o AutoHotkey.https://github.com/idbrii/daveconfig/blob/main/win/autohotke...
https://pypi.org/project/ahk/
No meu casamento, criei uma cabine de fotos com AutoHotKey. Usei um software simples para controlar a Nikon da minha noiva via USB junto com o IrfanView no notebook, e configurei o IrfanView para monitorar uma pasta e mostrar sempre a foto mais recente.
Com AutoHotKey, criei uma GUI simples com botões Preview, Autofocus e “SNAP”; ao clicar em SNAP, aparecia uma grande contagem regressiva, a foto era tirada, o software da câmera era minimizado e o IrfanView era aberto. Alguns segundos depois, voltava para a GUI dos botões. Os convidados adoraram, economizamos algumas centenas de euros no aluguel de uma cabine de fotos e ainda conseguimos fotos boas.
Este script AutoHotKey mudou o jogo para mim. Mapeei Ctrl + Shift + V para colar sem formatação: ele converte a área de transferência em texto, cola, espera um instante e depois restaura a área de transferência original.
https://learn.microsoft.com/en-us/windows/powertoys/
https://stevemiller.net/puretext/
Também seria bom ter uma área de transferência com múltiplos valores, como os últimos 5 itens copiados, mas talvez isso já seja pedir demais.
AHK é um dos apps que eu mantenho preso ao Windows. Uso para adicionar ao teclado caracteres como äöüß e áóúñ, controlar o brilho das luzes do quarto e do apartamento, inserir timestamps como
08:39 –,2023-08-22 08:39:46e2023-08-22 — Tuesdaycom um ou dois botões, e ligar/desligar a energia do monitor por uma tomada compatível com Tasmota ao alternar a tecla PauseSó queria que houvesse um recurso para usar um segundo teclado como um painel de botões e, ao mesmo tempo, consumir essas teclas. Por isso estou usando um pequeno teclado Bluetooth conectado a um Raspberry Pi Zero para ter mais botões
https://www.hammerspoon.org/
https://miquelvir.medium.com/secondkeyboard-1c39e52e023b
Há também este: https://github.com/evilC/AutoHotInterception
https://github.com/autokey/autokey
Eu também uso AutoHotKey o tempo todo. Tenho 6 atalhos para carimbos de data/hora, lançadores PuTTY/SSH para hosts e portas seriais que uso com frequência, lançadores baseados em estado para mais de 10 apps como Outlook, Windows Terminal e Total Commander, colar sem formatação em qualquer lugar, colar removendo quebras de linha, uma camada de entrada AltGr para caracteres especiais e emojis, além de atalhos de mídia/volume
https://gist.github.com/raveren/bac5196d2063665d2154
No meu notebook Linux pessoal, troquei Caps Lock e Escape entre si e já me acostumei. Quando faço dual boot no Windows, configurei o mesmo com o Powertoys, mas no trabalho não posso instalar Powertoys nem Uncap, então AutoHotKey é a única opção
Segui uma resposta do StackOverflow e acabei com Caps Lock e Escape enviando as duas teclas juntas, o que às vezes estraga minhas mensagens no Teams
https://github.com/microsoft/PowerToys
https://github.com/susam/uncap
https://stackoverflow.com/questions/38558376/how-to-map-caps...
https://github.com/jtroo/kanata
Por exemplo, https://github.com/evilC/TapHoldManager implementa isso no AHK. Colocar Shift/Ctrl/Win/Alt sob
fdsaejkl;reduz o uso dos mindinhos e permite manter os dedos mais tempo na home rowCapsLock::Esc,Esc::CapsLockTambém reuni outras melhorias rápidas com AHK, como executar programas por atalhos globais: https://nickjanetakis.com/blog/remap-and-set-global-hotkeys-...
https://superuser.com/questions/550679/where-can-i-find-wind...
https://github.com/hwalinga/dotfiles/blob/master/CapsLockCtr...
Também implementei a função dupla em que CapsLock funciona como Ctrl quando pressionado junto com outra tecla e como Esc quando tocado rapidamente
Como outras pessoas disseram, o AHK permite fazer uma quantidade surpreendente de coisas no Windows. Pessoalmente, dá para dizer que economizei ou ganhei mais de US$ 100 mil graças ao AHK
Mas a linguagem AHK em si não é das mais agradáveis de usar. Fico me perguntando por que não há uma ferramenta igualmente poderosa em Python ou Lua, e https://github.com/pywinauto/pywinauto também não funcionou tão bem quanto o AHK na prática. No fim das contas, por baixo é WinAPI, então C# também poderia ser uma opção se existisse uma boa biblioteca wrapper. Acho que o AHK é popular porque, embora seja feio, funciona
https://www.autohotkey.com/boards/viewtopic.php?f=80&t=77248
AutoHotKey é excelente. Uso para alternar entre apps mais rapidamente e, no meu caso, controlo tudo usando o Right Alt como tecla de “ativação de atalhos”
Ao mantê-la pressionada e apertar uma tecla de letra, ele alterna entre as instâncias daquele app. Por exemplo, Alt+C muda para uma janela do VS Code, e combinações como Alt+F abrem uma nova instância de app, como uma nova janela do Chrome com um perfil específico. Alt+número pode ser configurado para a janela atualmente em foco, e tocar em Alt ativa o modo de edição, no qual a janela atual pode ser atribuída a uma tecla numérica. No modo de edição, H/J/K/L viram teclas de navegação para cima/baixo/esquerda/direita, tornando a alternância entre apps muito mais rápida
O script que mais me marcou foi um que encontrei e modifiquei quando jogava Diablo 3. Eu estava desenvolvendo problemas de lesão por esforço repetitivo por pressionar a mão do mouse com força demais contra o mousepad, então procurei uma forma de jogar com controle
Esse script vinculava o movimento analógico a um pequeno círculo ao redor do personagem, permitindo correr suavemente em qualquer direção, e, ao apertar um botão, mudava o alcance para mais longe para lançar habilidades à distância. Com um pouco de customização por classe, funcionava surpreendentemente bem