Bienvenidos al blog del Capitán Malaspina y sus secuaces donde encontrarás reflexiones sobre ciencia, tecnologia, informática y otras cosas de pensar.

14 enero 2011

Autohotkey



Una Hotkey es una "Tecla Caliente". No es que haya sido hecha en el Caribe, ni que baile lambada, ni que esté preparada eróticamente hablando. Tampoco es que se vaya a quemar uno con ella, "niño, eso no se toca, Tate Kieto". Simplemente es una tecla que por motivos desconocidos en informática, mantiene una temperatura interna dos grados centígrados por encima del resto de sus compañeras, hecho que justifica su nombre. Es como los asientos calefactados de los coches de lujo. Son teclas cuya ubicación depende del idioma que tengan serigrafiado, ya que varían del teclado inglés al castellano, al katakana, al cirílico, al griego o al taipeiguiano.

Fuera de bromas, una hotkey es un atajo de teclado.

Autohotkey es un programa que extiende el significado de "Hotkey" al máximo. No hace nada, pero hace de todo. Como podrán adivinar por su nombre, su misión es la de automatizar las hotkeys, por lo que permanece residente en memoria, monitorizando las pulsaciones del teclado. Cuando detecta determinada combinación, sustituye las teclas pulsadas por otras. Ya sé que esto suena a piligollez, y que ustedes pensarán que esto es más un ejercicio de programación de segundo de carrera que una aplicación con utilidad en la vida real, pero aguarden un poco.

En AutoHotKey somos nosotros los que le indicamos al programa qué teclas ha de detectar y por cuales otras tiene que cambiarlas, admitiendo cualquier combinación de teclado posible para realizar tareas monótonas y repetitivas, y por lo tanto cansinas. Por ejemplo, puedo instruir a Autohotkey para que cuando uso mi procesador de textos, cada vez que escriba “p.ej.”, lo sustituya por las palabras “por ejemplo”, o cuando escribo en Outlook, sustituir “Atte.” por “Le saluda atentamente Priburcito Rojas”. Esto es, se pueden expandir abreviaturas automáticamente, o corregir errores comunes de tecleo por otros menos "conumes"

Pero no solo se queda en eso, sino que puede detectar cualquier combinación de teclas, aunque sea simultánea, lo que abre mucho las posibilidades. Por ejemplo: ¿Qué hacen para acceder a su correo web? Pues buscan el icono del FireFox o el Explorer o el Chrome o el Safari, hacen click en él, escriben la página de acceso o la seleccionan con el ratón de entre alguna de las pestañas preestablecidas, introducen el nombre del usuario y la contraseña, esperan a que se les conceda el acceso, y luego hacen click en la pestaña de “bandeja de entrada” o “correo recibido”. Y todo esto lo hacen cada vez que tienen que revisar su correo, algo que en mi caso hago varias decenas de veces al día. Bien, ¿y si todo este trabajo pudieran hacerlo simplemente pulsando la tecla Windows+C?. ¿No supondría un ahorro importante?. Seguro que sí.

¿Que otras utilidades nos aporta AutoHotkey? Muchas. Muchísimas. Autohotkey se basa en scripts, o sea, ficheros de texto que contienen instrucciones en un lenguaje de programación sencillo y versátil, y por lo tanto hay infinidad de posibilidades. Con AutoHotKey, usted puede:

  • Cambiar el volumen o acallar cualquier tarjeta de sonido
  • Modificar la apariencia (tamaño, transparencia, etc.) de cualquier ventana del escritorio its shape.
  • Usar un joystick o el teclado a modo de ratón
  • Monitorizar el sistema, por ejemplo, cerrando ventanas no deseadas en el mismo momento en que aparezcan
  • Recuperar el contenido del portapapeles
  • Mostrar ventanas de aviso, de diálogo, y menús para interactuar con el usuario
  • Realizar operaciones con archivos
  • Procesar el contenido de ficheros de texto
  • Detectar períodos de inactividad del usuario para emprender tareas de mantenimiento
  • Ejecutar tareas predefinidas al apagar el ordenador o al terminar la sesión de un usuario
  • Manejar claves del registro y modificar ficheros INI

El funcionamiento no puede ser más sencillo: usted escribe su propio script, que contiene instrucciones del tipo:

tecla o combinación de teclas :: acción a realizar

Luego, carga ese script que queda residente en memoria, y AutoHotKey comprueba continuamente lo que usted escribe en el teclado. Cuando detecta que ha escrito una combinación que tiene registrada en el script, lanza la acción que usted desea realizar.

Ahora les mostraré un ejemplo que yo utilizo habitualmente.

Todos los meses recibo un listado en papel con vencimientos de contratos que debo revisar. Mi sistema informático es incompatible con el de mi central (por deseo propio, en pos de la independencia y la economía), así que antes me veía en la necesidad de tener que introducir a mano todos esos datos (entre 200 y 400 registros), tarea ardua, tediosa y odiosa como ninguna. Poco después me hice con un escáner de lápiz (un C-PEN, Gracias Inmaculada) con el que ya no tenía que teclear, pues bastaba con “subrayar” el dato del listado para que el C-PEN lo pasara a mi aplicación. Ahorré pulsaciones, pero seguía siendo una tarea pesada.

Ahora, con AutoHotkeys hago lo siguiente:

Escaneo en mi OCR el listado, y lo paso a EXCEL donde lo formateo adecuadamente (tengo una macro establecida vinculada a una tecla hotkey, claro está) y lo exporto a un fichero de texto en formato CSV ( Comma Separated Values, Valores Separados por Comas), aquí es donde verdaderamente entra en juego AutoHotKey: mi script se encarga de cargar la aplicación de mi negocio, posicionarse en la pantalla de introducción de vencimientos, e ir tomando valores del archivo CSV y escribirlos en esa pantalla, registrando en un santiamén todos los datos que antes me hubiera llevado entre tres y cuatro horas registrar a mano. Decirles que como siempre pasa en mis trabajos, los comentarios del script superan en extensión a las líneas de código, que no son más de diez frente a unas cincuenta líneas entre /* y */, que les ahorraré leer. Sólo les dejo el "cuerpo" del script:


Loop, Read,C:\ ...\fichero.csv
{
; Leemos una línea de un tirón teniendo en cuenta que los archivos CSV que genera
; EXCEL están separados por ";"
StringSplit, DatosRecibo, A_LoopReadLine, ';
; Metemos el número de índice
send, %DatosRecibo1%{ENTER}
; Escribimos el campo segundo en su casilla:
Send, {TAB}%DatosRecibo2%
; Escribimos el tercer campo en su casilla:
send, {TAB}{TAB}{TAB}{TAB}{TAB}%DatosRecibo3%

; Escribimos el cuarto dato:
send, {TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}%DatosRecibo4%
; Escribimos el quinto dato en su lugar:
send, {TAB}%DatosRecibo5%

;Finalizamos la entrada de datos de este recibo, archivandolo

send !a

}

return


Con esto ahorro más que tiempo, cansancio y tedio en mi trabajo, pudiéndome dedicar a tareas más productivas y menos repetitivas, un alivio. Seguro que usted también puede encontrarle una utilidad adaptada a su forma de trabajar con el ordenador.

Ahh, ¡Cómo no!, AutoHotKey es gratuíto. Lo tienen en: http://www.autohotkey.com/

Yo particularmente uso SciTE4Autohotkey, que pueden descargar del mismo sitio, pues integra un editor de scripts diseñado específicamente para la sintaxis de AutoHotKey. Usted escribe el script, lo compila pulsando con el botón derecho y lo carga haciendo doble click en el .exe que genera. Más fácil que hacer palmas.

Saludos.
Pulsar Informaticks

No hay comentarios:

Publicar un comentario