miércoles, junio 10, 2015

Automatización de tareas repetitivas con teclado y mouse en linux

Si trabajas con computadoras seguramente te ha tocado el caso donde tienes que realizar una tarea repetitiva muchas veces, por ejemplo que tienes una hoja de excel donde las celdas vienen como dato textual pero son datos númericos (o sea empiezan con '123 por ejemplo) y al estar como texto, entonces no se puede sumar, en este caso el cambio del dato de texto a número se hace oprimiendo F2 para que la celda entre en modo de edición, seguido de la tecla Home para que el cursor se vaya al principio y luego la tecla supr para borrar el ', acto seguido presionar ENTER para que el cambio sea guardado como contenido de la celda, esto hace que el cursor de la celda se vaya a la celda de abajo.

Supongamos que tienes un documento donde tienes que hacer el procedimiento antes mencionado 500 veces, esto es suficiente para desesperar a personas que no soportan realizar tareas repetitivas (como es mi caso, ya que me genera mucho estrés), así que investigando rapidamente en google, hay alternativas de software para hacer este tipo de automatización, a saber dos principales.

1. Autokeys
2. xmacro

En este post voy a describir como lograr automatizar mediante xmacro y bash.

Antes que nada si no teneis instalado el software ya saben que en ubuntu y derivativos lo pueden hacer facilmente con la orden:

sudo apt-get install xmacro

Lo primero es escribir la secuencia de eventos de teclado y mouse en un archivo de texto, en el caso de lo que se desea hacer para convertir la celda de texto a número, teniendo como precondición tener la hoja de calculo abierta, con el foco, y posicionada en la celda de la columna a procesar:

macro1.txt


KeyStrPress F2
KeyStrRelease F2
KeyStrPress Home
KeyStrRelease Home
KeyStrPress Delete
KeyStrRelease Delete
KeyStrPress Return
KeyStrRelease Return


El macro anterior convierte una celda, para llamarlo un número determinado de veces por ejemplo 125, desde nuestra terminal bash podemos hacer un for que mande llamar 125 veces la macro, y antes de empezar esperar un tiempo para que nos de tiempo de posicionar el cursor sobre la hoja de cálculo y la celda donde se va a empezar.

sleep 3; for i in {1..125}; do cat macro1.txt | xmacroplay -d 1; done

En el ejemplo la opción -d es para indicar cuanto tiempo debe esperar el xmacroplay entre mandar un evento y otro, en este caso 1 milisegundo, lo que sería un superhumano tecleando muy rápido, maybe superman o flash, aunque para la computadora un milisegundo es mucho tiempo.

Otro ejemplo de macro, por ejemplo para abrir el cuadro de dialogo de ejecutar comando en linux y tener listo el comando para ejecutar una terminal, ya solo esperar el enter de confirmación del usuario sería:

macro2.txt

Delay 0
KeyStrPress Alt_L
KeyStrPress F2
KeyStrRelease F2
KeyStrRelease Alt_L
Delay 1
KeystrPress x
KeyStrRelease x
KeystrPress t
KeyStrRelease t
KeystrPress e
KeyStrRelease e
KeystrPress r
KeyStrRelease r
KeystrPress m
KeyStrRelease m


Queda pendiente el uso de eventos del mouse, pero si deseamos saber la sintaxis que va en la macro la podemos grabar con el comando:

xmacrorec2 > macroName.txt

Los eventos de mouse son por ejemplo:

MotionNotify 2730 596
ButtonPress 1
ButtonRelease 1
ButtonPress 3
ButtonRelease 3
ButtonPress 2
ButtonRelease 2

Siendo el boton izquierdo 1, el derecho 3 y el central 2.

Eso es todo por hoy, en otro post algún día hablaremos de Autokeys, que poseé características más sofisticadas y una GUI.

Happy automation!

No hay comentarios.: