Aprende AutoHotKey robando mis scripts
(hillelwayne.com)- Como AutoHotKey es una herramienta potente de automatización para Windows pero puede resultar intimidante al principio, se publica como material de aprendizaje una colección de scripts personales usados en la práctica
- El material está compuesto por un total de 14 archivos y se centra en ejemplos de automatización que se pueden usar de inmediato, como abrir carpetas, insertar texto y ampliar atajos por programa
- Incluye desde entrada rápida de la fecha actual, em dash y
¯\_(ツ)_/¯hasta un sistema de atajos modales para usuarios de vim y una demo sencilla de GUI - También hay un script para convertir marcas de tiempo entre UTC y hora local, lo que permite ver automatización práctica de flujos de trabajo más allá de simples atajos
- Cada archivo incluye comentarios sobre lo que hace el código y, en algunos casos, por qué fue implementado así, por lo que se lee bien como una base de código educativa
Una colección de ejemplos de AutoHotKey cercana al trabajo real
- Para quienes sienten que AutoHotKey es difícil de aprender, se comparten con explicación la mayoría de los scripts personales que se usaban a diario
- Todo el código puede verse en el repositorio de GitHub y está compuesto por 14 archivos en total
- Los ejemplos principales son los siguientes
Cómo leerlo como una base de código educativa
- Este repositorio es un ejemplo de base de código educativa creada para que la gente aprenda leyendo código
- Cada archivo incluye muchos comentarios sobre lo que hace el código y, en algunas implementaciones, también explica por qué se eligió ese enfoque
- Una explicación aparte sobre las bases de código educativas continúa en este artículo del boletín
- Si hay partes que requieren más explicación, se puede pedir a través de un issue en GitHub
1 comentarios
Opiniones de Hacker News
Creo que por primera vez puedo aportar algo útil a una discusión sobre código. Como escritor, tengo un script de AutoHotkey que abre rápidamente un notepad.exe vacío en cualquier momento: se abre al presionar la tecla
~, se cierra al volver a presionarla, y si hay contenido aparece el cuadro de diálogo para guardar.Eso es todo lo que hace mi AHK.
Cuando quieres ir y venir rápidamente a la ventana anterior sin cerrar ni minimizar nada, el atajo predeterminado de Windows Alt + Escape resulta útil. A diferencia de Alt+Tab, no muestra la vista general de ventanas, sino que cambia directamente a la ventana que tenía el foco justo antes.
En AutoHotkey v1 se puede armar una plantilla de switcher/launcher que busque un fragmento del título de la ventana y la active; si ya está activa, vuelve con
send, !{escape}; y si no existe, la ejecuta. Si no quieres desordenar la barra de tareas, también puedes usarWinHide/WinShow, aunque no funciona bien con algunas ventanas, y para detectar ventanas a veces conviene más usarahk_exeoahk_class.WinActive("Untitled - Notepad")yWinExist("*Untitled - Notepad")para cerrar o activar la ventana, y si no existe, ejecutarRun "Notepad".WinActive()oWinExist()puedes combinar varias condiciones de título conory, si hace falta, también incluir una condición ahk_class, como"Untitled - Notepad ahk_class Notepad".AutoHotkey es genial, pero ojalá el lenguaje fuera un poco más normal. La pasé mal intentando hacer de forma estable una versión con proporción áurea de Aero Snap; no parece que manejar varios monitores y tamaños tenga por qué ser tan difícil, pero entre la sintaxis rara de
Loopy los fallos silenciosos por errores simples, dejó de ser divertido y terminé rindiéndome.También encontré un módulo ahk para Python, pero combinado con el módulo
keyboardno funcionaba tan bien como AutoHotkey como listener de atajos.https://github.com/idbrii/daveconfig/blob/main/win/autohotke...
https://pypi.org/project/ahk/
Para mi boda hice una cabina de fotos con AutoHotKey. Usé un software simple para controlar por USB la Nikon de mi prometida, junto con IrfanView en la laptop; configuré IrfanView para vigilar una carpeta y mostrar siempre la foto más reciente.
Con AutoHotKey hice una GUI sencilla con botones de Preview, Autofocus y “SNAP”; al presionar SNAP, mostraba una cuenta regresiva grande, tomaba la foto, minimizaba el software de la cámara y traía IrfanView al frente. Unos segundos después volvía a la GUI con los botones. A los invitados les encantó, nos ahorramos varios cientos de euros en el alquiler de una cabina de fotos y además obtuvimos buenas fotos.
Este script de AutoHotKey me cambió las reglas del juego. Mapea Ctrl + Shift + V a pegar sin formato: convierte el portapapeles a texto, lo pega, espera un momento y luego restaura el portapapeles original.
https://learn.microsoft.com/en-us/windows/powertoys/
https://stevemiller.net/puretext/
También sería bueno tener un portapapeles con múltiples valores, como los últimos 5 clips, aunque quizá eso ya sea pedir demasiado.
AHK es una de esas apps que me mantienen atado a Windows. La uso para agregar al teclado caracteres como äöüß y áóúñ, controlar el brillo de las luces de mi cuarto y departamento, insertar marcas de tiempo como
08:39 –,2023-08-22 08:39:46o2023-08-22 — Tuesdaycon uno o dos botones, y encender o apagar el monitor con un enchufe compatible con Tasmota al alternar la tecla PauseEso sí, me gustaría que tuviera una función para usar un segundo teclado como pad de botones y, a la vez, tragarse esas pulsaciones. Por eso estoy usando un teclado Bluetooth pequeño conectado a una Raspberry Pi Zero para tener más botones
https://www.hammerspoon.org/
https://miquelvir.medium.com/secondkeyboard-1c39e52e023b
También está esto: https://github.com/evilC/AutoHotInterception
https://github.com/autokey/autokey
Yo también uso AutoHotKey todo el tiempo. Tengo 6 atajos para sellos de fecha/hora, lanzadores de PuTTY/SSH para hosts y puertos seriales que uso seguido, lanzadores basados en estado para más de 10 apps como Outlook, Windows Terminal y Total Commander, pegado sin formato desde cualquier lugar, pegado eliminando saltos de línea, una capa de entrada AltGr para caracteres especiales y emoji, y hasta atajos de medios/volumen
https://gist.github.com/raveren/bac5196d2063665d2154
En mi laptop personal con Linux tengo Caps Lock y Escape intercambiados, y ya me acostumbré. Cuando hacía dual boot con Windows, usaba Powertoys para la misma configuración, pero en el trabajo no puedo instalar ni Powertoys ni Uncap, así que AutoHotKey es mi única opción
Seguí una respuesta de StackOverflow y terminé con Caps Lock y Escape enviando ambas teclas a la vez, lo que a veces me arruina mensajes en 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 ejemplo, https://github.com/evilC/TapHoldManager implementa esto en AHK. Si pones Shift/Ctrl/Win/Alt debajo de
fdsayjkl;, reduces el uso de los meñiques y tus dedos pueden permanecer más tiempo en la fila baseCapsLock::Esc,Esc::CapsLockTambién recopilé otras mejoras rápidas con AHK, como ejecutar programas con atajos globales: 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...
También implementa una doble función: CapsLock actúa como Ctrl cuando se presiona junto con otra tecla, y como Esc cuando se presiona brevemente
Como dijeron otros, AHK permite hacer una cantidad sorprendente de cosas en Windows. Personalmente, diría que gracias a AHK ahorré o gané más de 100 mil dólares
Pero el lenguaje AHK en sí no es de los más agradables para escribir. Me pregunto por qué no hay herramientas igual de potentes en Python o Lua, y https://github.com/pywinauto/pywinauto tampoco funcionó tan bien como AHK en la práctica. Al final, por debajo todo es WinAPI, así que C# también podría ser una opción si hubiera una buena biblioteca envoltorio. Creo que AHK es popular porque, aunque es feo, funciona
https://www.autohotkey.com/boards/viewtopic.php?f=80&t=77248
AutoHotKey es excelente. Lo uso para cambiar de app más rápido y, en mi caso, controlo todo usando Right Alt como tecla para “activar atajos”
Si la mantengo presionada y pulso una tecla de letra, voy alternando entre las instancias de esa app. Por ejemplo, Alt+C cambia a las ventanas de VS Code, y las combinaciones Alt+F abren nuevas instancias de apps, como una nueva ventana de Chrome con un perfil específico. Alt+número se puede asignar a la ventana actualmente enfocada, y al tocar Alt se activa el modo de edición, donde la ventana actual se puede asignar a una tecla numérica. En el modo de edición, H/J/K/L se convierten en teclas de navegación arriba/abajo/izquierda/derecha, lo que hace que cambiar de app sea mucho más rápido
Lo más impresionante fue un script que encontré y modifiqué cuando jugaba Diablo 3 hace tiempo. Me estaba causando problemas de lesión por esfuerzo repetitivo porque apretaba demasiado la mano del mouse contra el mousepad, así que busqué una forma de jugar con control
Ese script vinculaba el movimiento analógico a un pequeño círculo alrededor del personaje, lo que permitía correr suavemente en cualquier dirección, y al presionar un botón cambiaba el rango a uno más lejano para lanzar habilidades a distancia. Con apenas un poco de personalización por clase, funcionaba sorprendentemente bien