viernes, 5 de diciembre de 2008

Potencia Macro

Si hay algo para lo que un ordenador debería servir es para ahorrarnos tareas tediosas y repetitivas.

AutoHotKey es el sucesor de un viejo conocido. Un programa que se llamaba ScriptIt y que permitía emular pulsaciones de teclas y movimientos de ratón; pero incorporando mayor potencia, con un lenguaje simple y funciones simples que combinadas permiten hacer cualquier cosa.

También sirve para sacarnos de algún apuro.

Por ejemplo, debido a algún bug de Windows o los drivers gráficos, cuando desactivo una pantalla de mi sistema de monitores dual, a veces sucede que algunas aplicaciones se abren fuera de la pantalla, en coordenadas horizontales negativas, y la única forma que tengo de mostrarlas es usando la opción maximizar pero al conmutar el tamaño de la ventana vuelve a quedarse fuera de alcance.

Así que he hecho un sencillo script.ahk:

#F2::
WinMove, A,, 0, 0, 1280, 1024
return
#F3::
WinMove, A,, 1280, 0, 1440, 900
return



De modo que al pulsar la combinación de teclas Win+F2, la ventana activa se mueve a mi monitor cuadrado (de aspecto 5:4) de 17" y se amplia a su máximo tamaño nativo, 1280 x 1024. (También puedo poner 994 pixels de alto para no ocultar la barra de tareas de windows o parte de la aplicación bajo ella)

La segunda parte del script macro permite con una sola pulsación de teclas (Win+F3) trasladar la ventana activa a todo el ancho y alto del monitor 16:10 de 19", a 1440x900.

Cualquiera de estas dos acciones, aun sin el bug, me ahorra mucho tiempo si quiero pasar una ventana a otro monitor. Ya que hay que pulsar, arrastrar, redimensionar... Y las coordenadas nunca son exactas a pulso.

Pero quiero ir más allá y no deseo que me redimensione todas las ventanas que traslade de monitor así que he cambiado el atajo de teclado (o hotkey) para llamarlos solo al pulsar las teclas combinadas con la tecla mayúsculas. cambiando #F2 y #F3 por +#F2 y +#F3.

Y he agregado este par de nuevas macros al script de AutoHotKey .ahk:

#F2::
SysGet, Mon1, Monitor, 1
SysGet, Mon2, Monitor, 2
WinGetPos, posX, posY, anchoX, altoY, A
if ( posX > Mon1Right ) {
Espa2 := Mon2Right - ( posX + anchoX )
Pos1 := Mon1Right - Espa2 - anchoX
WinMove, A,, Pos1, posY
}
return
#F3::
SysGet, Mon1, Monitor, 1
SysGet, Mon2, Monitor, 2
WinGetPos, posX, posY, anchoX, altoY, A
if ( posX < Mon2Left ) {
Espa2 := Mon1Right - ( posX + anchoX )
Pos1 := Mon2Right - Espa2 - anchoX
WinMove, A,, Pos1, posY
}
return



De este modo puedo mover cualquier ventana a otro monitor teniendo en cuenta la separación desde el margen derecho de cualquier ventana sin variar sus dimensiones.



Interesante, ¿no?

Y las posibilidades son ilimitadas...

Además permite crear GUIs o ventanas de botones y controladores para interactuar de forma más intuitiva.

Sirve por ejemplo para arrancar tus programas favoritos y seleccionar la opción que quieras con una sola pulsación, o abrir una serie de enlaces web con un solo atajo de teclado... Cualquier tarea que requiera más de una pulsación de teclas o movimiento de ratón puede simplificarse en tan solo una acción. Ahorrando cada vez más tiempo en tediosas tareas rutinarias informáticas.


Para un webmaster como yo, viene bien tener en el atajo de teclas "AltGr+h" el texto "http://" que aunque no sea necesario ponerlo en los navegadores, desde que en Chrome se pueden hacer búsquedas en lugar de visitar sitios, no viene mal anteceder el protocolo HTTP para evitar busquedas no deseadas.

<^>!h::
SendInput http://
return



Más sencillo imposible...

Si te interesa algo de ésto pero no te aclaras con la documentación en english, francés, italiano, ruso, japonés, griego, portugués, coreano o chino de AutoHotKey, quizás te pueda echar una mano.

Deja un comentario. Aunque si no te aclaras con el inglés igual tampoco te aclaras con mi forma de hablar. ;-)

No hay comentarios:

Publicar un comentario

Comentarios de humanos, bienvenidos.