Acerca de
Curriculum Vitae
Blog
Artículos


Automatización de Funciones con Scripts de AutoHotKey

INTRODUCCION


Como ya había mencionado en un articulo anterior, desde hace ya varios años he tratado de reducir en la medida de lo posible el estrés producido en las muñecas y los dedos resultado del uso continuo de la computadora (mouse y teclado), gran parte de este estrés se debe al hecho de que al presionar combinaciones de teclas que fuerzan a utilizar los dedos de forma muy poco natural en muy repetidas ocasiones, se comprimen los nervios y tendones de las manos y muñecas por ejemplo, algunas de las combinaciones mas usadas (al menos por mi) son estas:

Copiar: Ctrl + C
Pegar: Ctrl + V
Cortar: Ctrl + X
TaskBar Switching: Alt+Tab

En la búsqueda por hacerle mas amable a mis manos el uso del teclado, recientemente encontré una utilería para Windows con la que se pueden automatizar cualquier tipo de tarea en , incluyendo "re-mapear" ciertas teclas, o combinaciones de teclas, para realizar cualquier función.De acuerdo a la ayuda de la aplicación, con el AutoHotKey, se puede:

-Automatizar casi cualquier cosa, mandando clicks del mouse y enviando combinaciones de teclas. Se pueden escribir macros "a mano", o usar el grabador de macros.

-Crear hotkeys para el teclado, joystick y el mouse. Virtualmente, cualquier tecla, botón, o combinación de los mismos, puede ser un hotkey.

- Expandir abreviaciones al escribirlas. Por ejemplo. al teclear "eml" automáticamente se puede producir la salida "micorreo@miserver.com"

-Crear formas de captura de datos personalizadas, interfaces de usuario y barras de menu.

-Re-mapear teclas y botones en el teclado, joystick y mouse

-Responder a señales de controles remotos de hand-helds con el script cliente de WinLIRC

- Convertir cualquier script en un archivo EXE que puede ser usado en otras computadores que no tengan el AutoHotkey instalado.

En este artículo analizaré algunos de los scripts que utilizo para automatizar el uso de combinaciones del teclas mas frecuentes con el AutoHotKey, la idea es sustituir las combinaciones de teclas que fuerzan o tensan la mano por una sola tecla, generalmente son teclas usadas con poca frecuencia como la tecla Pausa o "Bloq. Despl."

INSTALACION Y EJECUCION DE LOS SCRIPTS

Para instalar el AutoHotKey es necesario bajar el programa de www.autohotkey.com, solo será necesario bajar el instalador y seguir las instrucciones del asistente de instalación. Una vez instalado el programa y para probar los scripts sera necesario copiar el texto de los scripts y guardarlos en un archivo de texto con la extensión .ahk, una vez guardado el archivo se podrá hacer doble click para ejecutarlo.

COPIAR, PEGAR, CORTAR


Para evitar usar las combinaciones de teclas de copiar Ctrl+C , pegar Ctrl+ V, y cortar Ctrl+ X tenemos los siguientes scripts para remapear esas combinaciones de teclas, es un buen momento para mencionar que en la sintaxis de los scripts de AutoHotkey los comentarios deben de ir precedidos por un punto y coma, para conocer mas a detalle la sintaxis de los scripts, pueden revisar el Tutorial (Quick Start) en el archivo de ayuda del AutoHotKey.

autohotk1


Sustitución de Ctrl + C por la tecla "Bloq.Despl":
;---------------------------------------------------------------------------------------------------
;Script para asignar a la tecla Bloq.Despl la funcionalidad de "Copiar" es decir, presionar Ctrl+C
SC046:: ;Este es el codigo para la tecla "Bloq.Despl"
Send ^c
return


Sustitución de Ctrl + V por la tecla "Pausa"
;---------------------------------------------------------------------------------------------------
;Script para asignar a la tecla "Pausa" la funcionalidad de "Pegar" es decir, presionar Ctrl+V
SC045:: ;Este es el codigo para la tecla "Pausa"
Send ^v
return


Sustitución de Ctrl + X por la tecla "F12"
;---------------------------------------------------------------------------------------------------
;//Script para asignar a la tecla F12 la funcionalidad de "Cortar" es decir, presionar Ctrl+x
F12:: ;
Send ^x
return


USO ALTERNO DE ALT+TAB y "TABBED BROWSING"


Otra de las combinaciones de teclas usadas con mayor frecuencia se presenta cuando, al tener varios programas o ventanas abiertas y querer cambiar a otra ventana utilizando el teclado, se debe presionar el boton "Alt" y sin soltarlo presionar varias veces seguidas la tecla "Tab" hasta encontrar la ventana deseada, y de la misma forma, sin soltar "Alt", presionar "Shift+Tab", para ir en sentido inverso.

autohotk1


autohotk1
También existen algunas aplicaciones que nos permiten tener varios archivos abiertos en una sola instancia del programa (en ingles se le llama "tabs"), mi editor de texto preferido ConTEXT tiene esta característica, y para cambiarnos de una archivo a otro es necesario utilizar la combinación de teclas Control+Tab o para ir en sentido inverso Control+Shift+Tab, lo mismo sucede con el FireFox (ellos le llaman "Tabbed Browsing"), si abrimos varias paginas web en varios "tabs" para navegar entre las distintas paginas hay que utilizar la misma secuencia de teclas que en el ConTEXT. Y por ultimo, otro de los editores para desarrollo que uso con mayor frecuencia es el JEdit, también este editor nos permite tener abiertos varios archivos al mismo tiempo pero a diferencia de los dos casos anteriores, para cambiarnos entre un archivo y otro es necesario presionar "Ctrl + Re.Pag" para ir en un sentido y "Ctrl+ Av.Pag" para el otro sentido.

autohotk1

autohotk1


Para automatizar estas tareas, tenemos dos scripts, el primero sirve únicamente para sustituir la combinación Alt-Tab por una sola tecla, esta se utiliza cuando estamos trabajando únicamente entre dos ventanas y tenemos que ir y venir varias veces entre ellas. Este script permite hacer el "switching" entre esas dos ventanas al presionar la tecla "Supr" del teclado numérico (este script es muy util para cuando estén jugando buscaminas y su jefe se acerque a su maquina, basta presionar "Supr" y estaremos de regreso en Excel o Word o lo que sea de debieran estar haciendo)

Sustitución de Alt+Tab por la tecla "Supr (En teclado numérico)" o el botón medio del mouse
;---------------------------------------------------------------------------------------------------
;//Script para sustituir Alt+Tab con la tecla "Supr".del teclado numérico
NumpadDel::!Tab
NumpadDot::!Tab


El segundo script es un poco mas elaborado y funciona con el mouse, el propósito es navegar entre todas las ventanas abiertas utilizando la rueda de scroll del mouse.
Para evitar que se active cuando en realidad si necesitamos la funcionalidad que nos proporciona la rueda del mouse (mover el "scroll bar") , el script se debe activar cuando presionemos Shift y giremos el boton de scroll del Mouse al hacer esto se debe desplegar la pequeña ventana en la que aparecen todas las aplicaciones abiertas y al girar la rueda del mouse debemos de movernos entre esas aplicaciones, al soltar la tecla shift se desplegara la aplicación que hayamos seleccionado con la rueda del mouse.

Esa misma funcionalidad nos sería muy util al estar trabajando con alguno de los editores mencionados y si tenemos varios archivos abiertos movernos entre ellos dentro del editor.
Para activar el script cuando estemos dentro de ConTEXT, FireFox o JEdit y hacer el "Tabbed Browsing", debemos presionar la telca Ctrl, y sin soltarla, dar vuelta a la rueda del mouse, con lo cual nos moveremos entre los distintos archivos abiertos de una misma aplicación y para diferenciar si la aplicación activa es el JEdit (ya que utiliza una combinación de teclas diferente al Contex y FireFox) utilizamos la función #ifWinActive del AutoHotkey que nos sirve para identificar que ventana esta activa.

Por ultimo, y como complemento del Script anterior, si hacemos click en la rueda del mouse (en el mio, la rueda de scroll tambien es un boton) sin presionar la tecla "Shift" y tampoco presionar "Ctrl" se debe de enviar la secuencia "Alt-Tab" al igual que en el script anterior, lo cual nos permitirá hacer el "switching" entre dos aplicaciones sin utilizar el teclado.

En resumen:

-Para navegar entre distintas ventanas utilizamos Shift + Rueda del Mouse
-Para navegar entre distintos archivos de una misma aplicacion utilizamos Ctrl + Rueda del Mouse
-Para movernos entre dos aplicaciones presionamos el boton medio del mouse (en este caso es la misma rueda de scroll).

autohotk1


Sustitucion de Alt+Tab por el Botón de Scroll del Mouse
;---------------------------------------------------------------------------------------------------
;//Script para Sustitucion de Alt+Tab por el Botón de Scroll del Mouse
#ifWinActive,ahk_class org.gjt.sp.jedit.View
^WheelDown::^PgDn
^WheelUp::^PgUp
#ifWinActive ahk_class TfmMain
^WheelDown::^Tab
^WheelUp::^+Tab
#ifWinActive ahk_class TChamiHKMainForm
^WheelDown::^Tab
^WheelUp::^+Tab
#IfWinActive
MButton::!Tab
LShift & WheelDown::AltTab
LShift & WheelUp::ShiftAltTab


DESPLEGAR LA HORA, SUSTITUCIóN DE TEXTO


Finalmente, un par de scripts mas, si tienen que teclear el mismo texto una y otra vez al teclear una dirección de correo, un saludo al redactar un e-mail, una pequeña porcion de codigo que utilizan muy frecuentemente, con la funcionalidad de expandir texto de AutoHotKey se puede programar un script que al detectar que se teclean cierta secuencia de caracteres, sustituya lo escrito por otra secuencia de caracteres, por ejemplo, si ejecutamos el siguiente script, al detectar que se teclea "eml" lo sustituirá por mi correo electronico marioalberto.ramirez@gmail.com, a esta acción se le llama, "expansión de abreviaciones".

Por ultimo, a mi en lo personal no me gusta ver la hora en todo momento y por default en un equipo con Windows, el reloj siempre se despliega en la barra de estado. Solución: quitar el reloj de la barra y crear un script que despliegue la hora con un mensaje tipo "TrayTip" al presionar la tecla F11, de esta forma solo se desplegará cuando yo quiera saber que hora es.



Expansión de abreviaciones y Desplegado de la Hora en Tray Bar
;---------------------------------------------------------------------------------------------------
;//Script para asignar a la tecla F12 la funcionalidad de "Cortar" es decir, presionar Ctrl+x
F11::
TrayTip, c.time, %A_Hour%:%A_Min%:%A_Sec%,,1
;Sleep 1000
return
;//Script para asignar a la tecla F12 la funcionalidad de "Cortar" es decir, presionar Ctrl+x
::eml::marioalberto.ramirez@gmail.com
return


autohotk1


CONCLUSIONES


Recomiendo mucho el uso de AutoHotkey, al menos del lado del cliente pueden considerarlo como el Windows Scripting Host On Stereoids! Mucho mas facil de usar, permite manejar Windows por completo desde un script, es open source... Las posibilidades son infinitas!
Mi Sugerencia ...Diviertanse! hagan que su computadora haga lo que ustedes quieren y no solo lo que los deje hacer.

Respecto a los scripts para "re-mapear" el teclado si se les hace muy dificil acostumbrarse a otra combinación de teclas, recuerden que al igual que al utilizar el famoso editor "vi", al principio es dificil pero los resultados en eficiencia y comodidad bien valen la pena, sus manos se lo agradeceran, o en todo caso si tienen un dinerillo de sobra pueden considerar utilizar esta extensión del teclado, que basicamente puede proporcionar casi la misma funcionalidad.

15 Comentario(s)
Angel Larreal-2008-01-05 23:55:31
Mi nombre es Angel Larreal, de Maracaibo, Venezuela Me ha parecido excelente su articulo acerca del autohotkey

Alejandro-2008-01-06 00:15:27
Hola te queria agradecer por lo del artículo de hotkeys. Por fin pude usar las teclas f3 y f4 para copiar y pegar, tengo q renombrar demasiados archivos q dependen de otro (video y subtitulos de series deben llamarse iguales pero con distinta extensión, x.avi...x.srt)... asi q uso f2 y f3(copiar nombre) f2 y f4(pegar nombre),

vale gracias por el aporte.


Rossana-2008-04-04 02:53:56
me parece fantastico todo eso me sirvio mucho gracias espero que siga asi suerte

jonuanse-2008-06-05 13:52:10
Excelente articulo, gracias por tu esfuerzo. De serte posible me indicas por que sucede que al usar el script "Sustitucion de Alt+Tab por el Botón de Scroll del Mouse", y presionar click en la rueda del mouse (en el mio, la rueda de scroll tambien es un boton), sin presionar la tecla "Shift" y tampoco presionar "Ctrl" se envia la secuencia "Alt-Tab", pero la ventana desaparece instantaneamente, sin poder usarla. Gracias.

Mario A Ramirez-2008-06-11 18:47:56
Que tal jonuanse,

Es por la linea que aparece casi al ultimo:
MButton::!Tab

puedes comentarla con un punto y coma:

;MButton::!Tab
o quitarla del script.

Mario Alberto

antonio-2009-08-28 06:44:15
Muy buenas

Muy interesante tú pagina de autohotkey. Necesito que me ayudes si es posible.

Quiero crear un scrip para que me copie la hora del ordenador en el portapapes y la pegue en cualquier archivo de texto, doc, etc.

Podrias decirme como se hace

Gracias y un saludo



mary-2010-02-02 14:02:25
Hola Buen dia, me parecio muy interesante su pagina sobre el software AutoHotKey que nos permite ahorrar tiempo en precionar tantas combinaciones de teclas ya que con tan solo una podemos realizar las mismas fucniones, mi problema es que necesito realmente que la funcion ALT+tab que es la combinacion que me lleva a cambiar d euna ventana a otra la sustituya por una aplicacion que me realize lo mismo que me cambie de una ventana a otra pero sin necesidad de utilizar el teclado ni el mouse, es decir por ejemplo tengo 6 archivos abiertos (dos archivos de excel y cuatro paginas de internet)y quiero ke en un cierto tiempo cambie de un archivo a otro automaticamente, lo que pasa esque en mi empresa cuento con una televisor en la entrada y quiero que se vayan mostrando los diferentres archivos que tengo arbiertos periodicamente, pero sin necesidad de usar el teclado o el mouse, osea sin que este una persona ahi en el computador...me podrian ayudar como puedo hacer esa aplicacion pleas es urgente su ayudaaaaa. gracias por su atencion espero su respuesta..
atte: Mary (iniciandose en la programacion)

Mario A Ramirez-2010-02-03 03:58:01
Hola Mary,

Prueba este script, que cambia entre tres posibles pantallas cada dos segundos y medio.

Las documentacion de las funciones que se utilizan en el script las puedes ver aqui:

SetTimer

Send

---------------------------------------------------------------

; Presionar Alt+Tab cada segundo y medio:
#Persistent
SetTimer, AltTabScript, 2500
return

AltTabScript:
Send !{Tab 3}
;Send {PgDn}
return

mary-2010-02-03 16:31:30
Hi Mario oie gracias por tu respuesta, mira lo que pasa esque si he encontrado varios codigos que me permiten hacer que cada archivo que tengo abierto cambie en un cierto tiempo,

//MIRA ENCONTRE ESTE CODIGO


Loop 100
{
WinWait, Program Manager,
IfWinNotActive, Program Manager, , WinActivate, Program Manager,
WinWaitActive, Program Manager,
Send, {ALTDOWN}{TAB}{TAB}{ALTUP}
Sleep 1800000 ; 30 minutes.

}

//O ESTE CODIGO TAMBIEN:

Settimer, sendaltTab, 1800000 ; 30 minutes.

Return

sendaltTab:
Send, {ALT DOWN}{TAB}{ALT UP}
Return


//O BIEN EL QUE TU ME ENVIASTE

#Persistent
SetTimer, AltTabScript, 2500
return

AltTabScript:
Send !{Tab 3}
;Send {PgDn}
return


el grandeeee problema :( esque no tengo ni idea en donde meter esos codigos, asi como el codigo que me mandaste no se en donde lo escribo o donde lo guardo tampoco se como ejecutarlo, porfavor me podrias ayudar en donde escribo y guardo el codigo que me pusiste y kon que extencion lo guardo y como hago que se active para que cuando tenga abiertos mis archivos vayan cambiando en un cierto tiempo, te agradesere bastante tu respuesta ya que de eso depende mi empleo
muchisisisimas gracias.
Espero lo mas pronto posible tu respuesta
BYE

Mario A-2010-02-04 15:05:38
Pues realmente eso es lo mas facil, descargas el Autohotkey de www.autohotkey.com , lo instalas, guardas cualquiera de los codigos que encontraste en un archivo con extension ahk y le das doble click. Listo.

mary-2010-02-04 18:19:42
Hi! Mario, oie muchisisisisimas gracias por tu respuesta y tu ayuda, me sirvio de mucho de echo ya kedo la aplicacion...
Nos vemos pronto
BYE ;)

Romero-2010-03-09 11:47:07
Que tal.... exelente aporte mi amigo.... yo tengo un pequeño problema y me gustaria solucionarlo, espero y puedas ayudarme...

es posible ocultar ventanas o programas al momento de switchear con alt-tab.....

no quiero tener firefox en ese taskbar.... quiero que se quede en la barra de tareas... pero solo poder ver la ventana al dar click y no al switchear...



saludos...

yugo-2010-03-31 15:40:41
tktmre hijo de puta

Jose-2010-06-21 15:09:04
Estoy intentando aprender autohotkey y tu artículo me ha gustado mucho.

Gracias


Mario-2010-06-21 17:28:37
Hola,

Me da mucho gusto que despues de tanto tiempo de haber escrito el tutorial, todavia sigue siendo de utilidad.

Saludos

www.marioalberto.com.mx


Agregar Comentarios:
Nombre/Alias:
Email:
Url:
Comentarios:
Escribe las palabras (es para evitar spam):
© Copyright Mario Alberto Ramirez, todos los derechos reservados