Cómo usar AutoHotkey (I): potente herramienta para crear macros de teclado y ratón en Windows

Si te interesa comparte ! Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

Si sueles realizar con cierta frecuencia engorrosas tareas repetitivas en Windows que te hacen perder tiempo o que simplemente te gustaría poder agilizar, probablemente AutHotkey sea lo que necesitas para lograrlo.

AutoHotkey es una potente herramienta gratuita y de código abierto con la que podrás definir qué tareas deseas que se ejecuten cuando se pulse una determinada combinación de teclado, pudiendo así por ejemplo abrir programas y páginas web, insertar un determinado texto o el contenido del portapapeles en un documento o correo electrónico,  rellenar formularios automáticamente, etc.

¿Por qué me gusta especialmente HotKey? pues porque aunque inicialmente haya que dedicar algo de tiempo para aprender el lenguaje de script que utiliza, una vez lo conozcamos podremos definir prácticamente cualquier tipo de tarea que deseemos.

A continuación te mostraré algunos ejemplos para que puedas comprobar por ti mismo su potencial, siendo necesario para probarlos descargar antes el programa desde su web oficial (haciendo clic Download AutoHotkey) e instalarlo en el equipo:

descargar-autohotkey

Una vez instalado, para definir nuestras macros deberemos crear un archivo de script, que no es más que un simple archivo de texto plano, por lo que podremos crearlo desde el block de notas teniendo en cuenta guardarlo con la extensión .ahk.

A la hora de crear un script debemos aprender a detectar cuándo se pulsa la combinación de teclas que deseemos capturar e indicar la tarea o tareas que se desea realizar.

Para ello observa el siguiente script de ejemplo en el que configuramos cinco combinaciones de teclado (las líneas que comienzan con punto y coma son comentarios):

; {WINDOWS}{ESPACIO} Abre una página web:
#space::Run www.google.com

; {F5} Abre el editor del registro de Windows
F5::Run Regedit

; {CTRL}{N} Abre el block de notas:
^n::Run Notepad

; {MAYÚSCULAS}{W} Abre un programa indicando una ruta específica:
+w::Run %A_ProgramFiles%\Winamp\Winamp.exe

; {ALT}{G} Abre una ventana de símbolo del sistema:
!g::Run cmd

; {ALT Gr}{K} Abre la calculadora:
<^>!k::Run calc

; {CTRL}{ALT}{T} Abre la calculadora:
^!t::Run calc

Si estudias un poco el código y los comentarios te darás cuenta de que:

  • Para hacer referencia a la tecla {WINDOWS} se utiliza ‘#‘.
  • Para hacer referencia a una tecla de función se antepone la letra F seguida de su número (F1 … F12).
  • Para hacer referencia a la tecla {CONTROL} se utiliza ‘^‘.
  • Para hacer referencia a la tecla {MAYÚSCULAS} (no confundir con {BLOQUE MAYÚSCULAS}) se utiliza ‘+’.
  • Para hacer referencia a la tecla {ALT} se utiliza ‘!‘.
  • Para hacer referencia a la tecla {ALT GR} se utiliza ‘<^>!‘.
  • Es posible combinar los símbolos anteriores para definir combinaciones con varias teclas especiales.

Así pues:

  • Con ‘#space‘ indicamos que deseamos capturar cuando manteniendo presionada la tecla {WINDOWS} se pulse una vez la barra espaciadora.
  • Con ‘^n‘ se detecta cuando se pulsa la combinación {CONTROL}{N}
  • Con ‘+w‘ se detecta cuando se pulsa {MAYÚSCULAS}{W}
  • Con ‘!t‘ se detecta cuando se pulsa la combinación {ALT}{T}
  • Con ‘<^>!k‘ se detecta cuando se pulsa la combinación {ALT GR}{K}
  • Con ‘^!t‘ se captura la combinación {CTRL}{ALT}{T}

Tenemos también la posibilidad de definir entre otras las siguientes teclas especiales:

  • Space (barra espaciadora)
  • Tab (tabulador)
  • Enter
  • Escape
  • Backspace (retroceso)
  • Home (Inicio)
  • Right
  • ScrollLock
  • CapsLock
  • NumLock

Para utilizarlas escribiremos el nombre de la tecla deseada precedido de virgulilla “~” (se escribe pulsando la combinación en el teclado). Por ejemplo:

~Space::MsgBox Ha sido pulsada la barra espaciadora
~Tab::MsgBox Ha sido pulsada la tecla TAB
~Enter::MsgBox Ha sido pulsada la tecla Enter/Return
~Return::MsgBox Ha sido pulsada la tecla Enter/Return
~Escape::MsgBox Ha sido pulsada la tecla Escape
~Backspace::MsgBox Ha sido pulsada la tecla Retroceso

Para más información sobre las teclas disponibles consulta este enlace.

Tras la definición de la combinación de teclado se escribe ‘::‘ como separador, indicando a continuación la acción que se desea realizar.

En este primer ejemplo hemos utilizado el comando Run, que se puede utilizar para abrir páginas web, documentos y aplicaciones.

Una vez creado y guardado nuestro script de macros lo ejecutaremos haciendo doble clic en su icono, quedando residente en memoria y visible en el área de notificaciones de Windows:

Programa residente

Al hacer clic con el botón derecho sobre él se mostrará un pequeño menú desde el que podremos entre otras cosas editar el archivo de script, recargarlo en memoria si lo hemos modificado, pausarlo, dejar de capturar temporalmente las teclas que hayamos definido o cerrarlo para que deje de estar activo.

Si modificamos un archivo script tras haber sido cargado seleccionaríamos la opción Reload this Script para actualizar los cambios durante la ejecución del mismo, mostrándose un mensaje de error en caso de haber algo incorrecto en nuestro código.

Una vez activo el script, si pulsas las combinaciones de teclado definidas anteriormente deberías poder comprobar cómo se realizan las acciones que hemos configurado.

El ejemplo anterior es realmente muy sencillo pero espero que te haya ayudado a entender algunas de las bases de AutoHotkey, pero con las posibilidades que explicaremos en siguientes artículos verás que se trata de una herramienta realmente poderosa.

Para terminar, otra funcionalidad interesante de AutoHotkey es que ofrece la posibilidad de crear un archivo ejecutable (con extensión .exe) a partir de un archivo de script, de forma que será posible ejecutarlas en otro ordenador sin necesidad de tener instalado el programa.

Para crearlo acudiremos al menú de Inicio -> Todos los programas -> AutoHotkey y abriremos Convert .ahk to .exe:

Convertir a ejecutable exe

Después tan sólo hemos de seleccionar en Source (script file) el archivo de script e indicar en Destination (.exe file) el nombre y la ruta en la que deseamos guardar el ejecutable, pulsando en el botón > Convert < para crearlo.

iconos de script macro y ejecutable exe

Como puedes ver, AutoHotkey es una de esas pequeñas herramientas que aunque suelen pasar desapercibidas pueden hacernos ahorrar mucho tiempo.

Si te interesa aprender más sobre cómo utilizarlo consulta también los otros posts de este tutorial (es posible que necesites algunas nociones muy básicas de programación) y compártelos con tus contactos !

Si te interesa comparte ! Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn
*** Escribe tu correo electrónico para recibir nuestras novedades ***
[ haz click aquísi aún no has visto nuestros cursos de informática gratis

12 pensamientos sobre “Cómo usar AutoHotkey (I): potente herramienta para crear macros de teclado y ratón en Windows

  1. Hola y gracias Santiago,

    Quizás te convenga más cambiar el idioma del teclado en Windows y ponerlo en español latinoamericano o bien en "Estados Unidos – Internacional" y asegurarte de tenerlo seleccionado en la barra de tareas, tal y como se detalla en:

    http://windows.microsoft.com/es-es/windows7/change-languages-and-keyboards

    En el resto de versiones de Windows se haría igualmente a través del panel de control.

    Aquí puedes ver cuáles son las diferencias entre un teclado configurado en español, latino y estados unidos internacional y valorar si te interesa, ya que aunque tendrás 'ñ' y tilde cambian algunos caracteres:

    https://es.wikipedia.org/wiki/Distribuci%C3%B3n_del_teclado

    Por otro lado, buscando en Google encontrarás algunos programas que permiten remapear teclas.

    En cuanto a hacerlo con hotkey, con esta tecla/carácter especial lo más aproximado que logrado con el tiempo de que dispongo es:

    >^a::Send {ASC 0225}
    >^e::Send {ASC 0233}
    >^i::Send {ASC 0237}
    >^o::Send {ASC 0243}
    >^u::Send {ASC 0250}

    Con esto se mostrarían con la tilde tras presionarlas manteniendo pulsada la tecla Control derecha.

    Luego habría que buscar otra combinación para cuando es escriban en mayúsculas. Para eso consulta:

    http://ahkscript.org/docs/KeyList.htm

    Yo creo que para esto lo mejor sería una de las otras opciones que comenté al principio.

    Saludos y ya nos cuentas si das con otra forma mejor!

  2. Hola Javier, excelente post.
    Consulta, tengo un teclado en inglés y quería hacer un script para asignar una tecla que no use como tilde, no he podido, se te ocurre alguna manera?
    Gracias!

  3. Hola Kritz, pues lo siento pero he estado buscando y no veo cómo mantener pulsada una tecla durante un determinado período de tiempo 🙁 quizás algún compañero con algo más de tiempo encuentre una forma de hacerlo…

  4. ayuda amigo, nose nada de programacion y todo esta en ingles, solo quiero programar esta secuencia.

    cada 30 segundos que accione " mantener presionado letra E" por 1 o 2 segundos y luego presione el numero 4

    de antemanos gracias 😀 he visto muchos ejemplos pero los encuentro todos distintos, me enreda mucho

  5. Hola Eli, el código para enviar la combinación de teclado <Alt><Enter> es:

    Send !{Enter}

    Podrías asignarlo a una tecla, por ejemplo:

    F9::Send !{Enter}

    Un saludo !

  6. He logrado hacer funcionar el alt y el enter pero no al mismo tiempo como requiero , funciona primero alt y luego enter

  7. ayuda por favor requiero hacer Autohotkey que cuando presione sobre el automaticamente de las teclas ALT + enter pero no e podido llevo desde las 9 am de ayer y es la 1:20 am del dia presente y no encuentro una solucion te agradezco la colaboracion , contesta pronto por favor
    e utilizado send y nada, es para cuando abra un emulador este aparezca en pantalla coompleta sin tener que presionar alt+enter

  8. Hola Brandon disculpa el retraso en responder, te doy un par de pistas para orientarte.

    Para detectar cuando se pulsa el tabulador "~Tab", y para enviar nosotros mismos dicha pulsación "Send {tab}".

    Para que el procedimiento se ejecute cada cierto tiempo se utiliza la función setTimer().

    Saludos !

  9. Hola me pueden decir que comandos utilizar, para hacer un script con las ordenes de Autopulsar als teclas "Tabulador" y "El NUMERO 1" del teclado y que se repita cada 2.5 sec y así infinitamente hasta q cierre el script o q se pare cuando yo presione una tecla porfavor

  10. Hola Walter, con el siguiente código de ejemplo quedaría deshabilitada la tecla Enter únicamente cuando se encuentra activo el bloc de notas (observa que hay que definir también la que se encuentra en el teclado numérico) :

    Enter::
    IfWinActive ahk_class Notepad
    return
    Send {Enter}
    return

    NumpadEnter::
    IfWinActive ahk_class Notepad
    return
    Send {NumpadEnter}
    return

    … pero no te lo voy a dar todo hecho 🙂

    Ahora podrías por ejemplo crear una variable global, de modo que tenga valor cero cuando no se permita la edición o 1 cuando sí se permita… conmutándose dicho valor cada vez que se pulse F5.

    Manos a la obra !

  11. hola amigo muy util toda la info de tu pagina me parece exelente…..quisiera saber si puedo bloquear la tecla (enter) y que se acive presionando la tecla (5) pero solo en un programa especifico.
    de antemano gracias…