- Convierte una combinación en «tecla líder» y multiplica atajos con toque simple o doble.
- Haz hotkeys «spameables» con {Blind} para respetar modificadores como Ctrl.
- Mejora la usabilidad con GUI mínima, organización por categorías y #IfWinActive.

Si alguna vez has sentido que tus atajos de teclado se te quedan cortos, con AutoHotkey (AHK) puedes ir mucho más lejos y moldear Windows a tu gusto. Crear accesos rápidos propios, encadenar combos y disparar scripts con una sola mano está al alcance de cualquiera en unos minutos.
Más allá de los clásicos Ctrl+Q o Ctrl+W, AHK permite un enfoque más flexible: usar una tecla «líder» que convierte la siguiente pulsación en una acción distinta. Este truco multiplica las combinaciones sin mover la mano izquierda, además de admitir «doble toque» para variantes, una mini señal visual en pantalla y hasta comportamientos «spameables» que no sueltan Ctrl.
Qué es AutoHotkey y por qué merece la pena
AutoHotkey es un lenguaje de scripts gratuito para Windows que escucha tus combinaciones y ejecuta lo que hayas programado. Los scripts son archivos .ahk que editas con cualquier bloc de notas, y al ejecutarlos el sistema queda «a la escucha» de tus hotkeys y hotstrings (expansiones de texto).
Sus modos de envío de teclas marcan la diferencia: Send, SendInput o SendEvent. Para atajos veloces y estables, combina SendMode Input con SetKeyDelay -1 y notarás respuestas más rápidas y sin latencias molestas.
No necesitas programar mucho: copiar y adaptar ejemplos funciona sorprendentemente bien. Y si quieres llevar tus soluciones a cualquier PC, puedes compilar el script a EXE para ejecutar sin instalar AHK en destino.
Del atajo clásico a la «tecla líder»: combina sin moverte
El problema típico es consumir combos cómodos con la mano izquierda: Ctrl+Q, Ctrl+W, Ctrl+E… y te quedas sin hueco. La alternativa es declarar, por ejemplo, Ctrl+Q como «líder» temporal: lo pulsas y la siguiente tecla (Q, W, E, R…) decide qué script se ejecuta. Tras eso, todo vuelve a la normalidad.
Así, Ctrl+Q seguido de Q puede lanzar un Script 1, y Ctrl+Q seguido de W un Script 2, y así con todo el abecedario. El número de combinaciones crece de forma bestial sin que tu mano abandone la zona de confort.
¿Aún te parece poco? Añade el «doble toque»: Ctrl+Q, Q, Q para Script 3; Ctrl+Q, W, W para Script 4; y, si quieres, hasta triple toque. No es “infinito” a nivel físico, claro, pero en la práctica te sobrarán atajos antes de quedarte sin ideas.
Para que sea más cómodo, mucha gente muestra una pista visual: un cuadradito naranja, arriba a la derecha, que aparece al activar el modo líder y desaparece tras la siguiente tecla. Es un «ok, el modo está listo» que evita dudas.
Casos reales: categorías por líderes y usos diferentes
Organizar atajos por «familias» funciona de maravilla. Por ejemplo: Ctrl+Q para tareas de trabajo, Ctrl+W para abrir aplicaciones y Ctrl+R para ocio o scripts personales. Dentro de cada líder, la segunda tecla decide la acción concreta, y el doble toque abre variantes.
Si juegas y automatizas pequeñas acciones, puedes usar Ctrl+R como líder de «juego» y, por ejemplo, Ctrl+R luego P para un script de piano con un preset, y doble P para cargar otra canción. Es rápido, ordenado y escalable.
Quien diga que no hay «infinito» en físico tiene razón, pero esto va de práctica: con letras, doble toque y, si hace falta, triple, tendrás más combinaciones de las que puedas memorizar de forma cómoda.
Implementación AHK v1: líder con doble toque y GUI de confirmación
Empecemos con un ejemplo sencillo en AutoHotkey v1 que activa Ctrl+Q como líder, muestra la mini GUI naranja, espera una tecla y distingue toque simple de doble toque. Puedes ampliarlo con todas las letras que necesites.
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
SetKeyDelay, -1, -1
#InstallKeybdHook
; Ctrl+Q como líder con indicador y doble toque
$^q::
if (leaderBusy)
return
leaderBusy := true
; Mini GUI naranja en esquina superior derecha
SysGet, mon, MonitorWorkArea, 1
Gui, +AlwaysOnTop -Caption +ToolWindow
Gui, Color, FF7F00
Gui, Show, % "x" monRight-28 " y" monTop+10 " w18 h18", Leader
; Espera una tecla (800 ms)
Input, LKey, L1 T0.8 V
Gui, Destroy
if (ErrorLevel = "Timeout" || LKey = "") {
leaderBusy := false
return
}
; Doble toque si repites la misma tecla rápido
second := ""
KeyWait, %LKey%, T0.3
if (!ErrorLevel)
Input, second, L1 T0.3 V
if (second = LKey)
Gosub, Leader_Double_%LKey%
else
Gosub, Leader_Single_%LKey%
leaderBusy := false
return
; Ejemplos de acciones
Leader_Single_q:
MsgBox, 64, Script 1, Ejecutado con Ctrl+Q luego Q
return
Leader_Single_w:
MsgBox, 64, Script 2, Ejecutado con Ctrl+Q luego W
return
Leader_Double_q:
MsgBox, 64, Script 3, Doble toque en Q
return
Leader_Double_w:
MsgBox, 64, Script 4, Doble toque en W
return
Solo tienes que añadir tus etiquetas tipo Leader_Single_letra y Leader_Double_letra y colgar ahí tus acciones (abrir apps, enviar pulsaciones, lanzar scripts…). El patrón es muy fácil de mantener y ampliar.
Hacer un hotkey «spameable» sin soltar Ctrl: el caso de ^g → ^t y luego Alt+g
Un clásico: quieres que Ctrl+G envíe Ctrl+T y luego Alt+G, pero que, si sigues manteniendo Ctrl físicamente, puedas spamear el atajo sin que se suelte. La clave está en {Blind}, que respeta el estado real de los modificadores que tienes pulsados.
SendMode Input
$^g::
; {Blind} conserva el Ctrl físico al mandar la "t"
SendInput, {Blind}{t}
; Luego Alt+g explícito
SendInput, !g
return
Con este patrón no necesitas cerrar ni reabrir Ctrl a mano. Como nunca envías {CtrlUp}, Ctrl sigue donde estaba (tú lo tienes pulsado). Si una app es quisquillosa, añade un pequeño Sleep o separa los envíos:
$^g::
SendInput, {Blind}^t
Sleep, 10
SendInput, {Blind}!g
return
Otra opción es usar eventos down/up manuales, pero no lo recomiendo salvo que sepas por qué lo necesitas. El enfoque con SendInput + {Blind} suele ser más rápido y robusto en la mayoría de programas.
Atajos útiles del día a día: ventanas, texto y portapapeles
Remapear atajos del sistema es facilísimo —y si necesitas eliminar accesos directos antiguos, puedes eliminar accesos directos con CCleaner Portable—. Por ejemplo, abrir el Administrador de tareas desde Ctrl+Q enviando su combo nativo (Ctrl+Shift+Esc). El envío con SendInput es rápido y fiable:
^q::
SendInput, ^+{Esc}
return
Para escribir fragmentos recurrentes (correo, firma, plantillas), puedes teclearlos directamente o cargarlos al portapapeles. La diferencia es si quieres que se escriba o prefieres pegar tú:
; Escribir directamente
yourHotkey1::
SendInput, micorreo@ejemplo.com
return
; Preparar el portapapeles
yourHotkey2::
Clipboard := "micorreo@ejemplo.com"
return
Si te gusta la autocorrección o las expansiones, los hotstrings son una delicia: puedes corregir erratas al vuelo o expandir palabras clave en bloques largos.
Fechas automáticas: mes actual y mes anterior sin líos
Insertar el nombre del mes (en español) es un gesto recurrente. Con AHK lo haces con una tecla. Este snippet obtiene el mes actual y lo teclea:
^+!F4:: ; Ctrl+Shift+Alt+F4
time := A_NowUTC
FormatTime, mes, %time%, L0x0C0A, MMMM ; Español (España)
SendInput, %mes%
return
Y para el mes anterior, basta restar un día al día 1 del mes actual y formatear. Así evitas cálculos manuales con meses de 28, 30 o 31 días:
^+!F5:: ; Ctrl+Shift+Alt+F5
date := (A_YYYY . A_MM . "01")
date += -1, days
FormatTime, mesAnterior, %date%, L0x0C0A, MMMM
SendInput, %mesAnterior%
return
Una vuelta más: copiar una celda, reemplazar el mes anterior por el actual y pegar el resultado. Ideal para flujos mensuales en hojas de cálculo:
^+!F6::
time := A_NowUTC
FormatTime, mesActual, %time%, L0x0C0A, MMMM
date := (A_YYYY . A_MM . "01")
date += -1, days
FormatTime, mesAnterior, %date%, L0x0C0A, MMMM
SendInput, ^c
ClipWait, 0.5
texto := Clipboard
texto := StrReplace(texto, mesAnterior, mesActual)
Clipboard := texto
SendInput, ^v
return
Script con la rueda del ratón para moverse por la barra de ítems
Existe un enfoque muy práctico para juegos con barra de ranuras: usar la rueda del ratón para avanzar/retroceder por los ítems, con emparejado de teclas para equipar a la vez espada y escudo, báculo y runas, etc. La idea es que al desplazarte a uno, su pareja también se seleccione.
Este tipo de script (pensado en AHK v1) suele exponer unas variables muy claras al inicio: doubleKeyPairs define los pares de ranuras que deben ir juntas (por ejemplo ] para espada/escudo), skipKeys excluye ranuras que no quieres afectar (comida/bebidas), maxSlot marca cuántas ranuras existen, e invertScroll invierte el sentido de la rueda si no te convence el predeterminado.
Además, conviene tener una tecla para pausar o suspender el script si algo se comporta raro; por ejemplo, ~g:: para activar/desactivar rápidamente sin cerrar el proceso. Aunque no suele chocar con menús, configuraciones o rotaciones de estructuras, siempre puede haber excepciones, así que va bien contar con un interruptor de emergencia.
La compatibilidad con AHK v2 no está garantizada si fue escrito para v1 tal cual, por lo que, si usas v2, quizá tengas que ajustar sintaxis. Si aún no tienes AutoHotkey instalado, descárgalo desde su web oficial e instala la versión estable antes de probar.
Cargar scripts al iniciar Windows y compilar a EXE
Para que tus atajos estén activos nada más arrancar, crea un acceso directo a tu .ahk en la carpeta de inicio de sesión. Abre Win+R, escribe shell:startup y pega ahí el acceso directo. Desde entonces, el script se carga automáticamente con tu usuario.
Si necesitas usarlo en un equipo donde no quieres (o no puedes) instalar AHK, compila el script a ejecutable con el menú contextual. Botón derecho sobre el .ahk → Compile Script y listo: obtienes un .exe autosuficiente.
Buenas prácticas para que todo vaya fino
Detallitos que se notan: usa SendMode Input y SetKeyDelay -1,-1 para velocidad; añade el prefijo $ a hotkeys que envíen teclas similares para evitar recursión; y, cuando simules pulsaciones con modificadores, apóyate en {Blind} para respetar el estado físico de Shift, Ctrl o Alt.
Si un hotkey debe actuar solo en determinadas apps, encapsúlalo con #IfWinActive o filtros por título de ventana y evitarás interferencias. También puedes subir prioridad de captura con #UseHook cuando una aplicación intercepta demasiados atajos.
Cuidado con pisar atajos del sistema (copiar, pegar, deshacer…). Es mejor inventar combos neutros que no peleen con tu memoria muscular. Y, en scripts grandes, divide por temas y usa #Include: mantenerlos será mucho más llevadero.
Finalmente, documenta. Un comentario claro junto a cada sección y nombres autoexplicativos (Leader_Single_x, Apps_Double_x, etc.) hacen milagros cuando vuelves al archivo meses después. Y no subestimes una GUI de confirmación mínima al activar el líder: te da la certeza de que el modo está «armado» y te quita fricción mental.
Con una tecla «líder» para agrupar acciones, variantes por doble toque, secuencias spameables que no sueltan Ctrl y unos cuantos snippets de productividad (texto, fechas, ventanas, búsquedas), AutoHotkey te permite trabajar a la velocidad de tu cabeza. La combinación de organización por categorías (trabajo, apps, ocio), feedback visual y buenas prácticas de envío de teclas crea un sistema de atajos potente, escalable y, sobre todo, cómodo de usar cada día.