Siempre con la idea de tener siempre afilada tu herramienta de trabajo, según lo vimos en la fábula de los leñadores, hoy vamos a ver cómo controlar el ratón con AutoHotkey.
Como siempre, te daré casos prácticos para partir de un punto inicial y así puedas imaginarte tú cómo lo puedes hacer…
Índice
Control del ratón con AutoHotkey
1.ª idea básica: saber las coordenadas del ratón
Para saber las coordenadas del ratón, se emplea la función MouseGetPos. Por ejemplo, el siguiente código mostrará un cuadro de diálogo (función MsgBox) con las coordenadas horizontal (xpos) y vertical (ypos) del ratón.
; WIN+CTRL+ñ (macro 1A) ; Muestra las coordenadas del ratón ; respecto a la ventana activa ; https://www.gonduana.com/controla-el-raton-con-autohotkey/ #^ñ:: MouseGetPos, xpos, ypos Msgbox, Coordenada X=%xpos%. Coordenada Y=%ypos%. Return
Atención: son las coordenadas del ratón en píxeles respecto a la ventana activa, no respecto a la pantalla de tu monitor.
La macro se ejecuta al pulsar simultáneamente las teclas WINDOWS + CTRL+Ñ.
Si queremos saber las coordenadas respecto a la pantalla, emplearemos la función CoordMode, como en la siguiente macro:
; WIN+CTRL+ñ (macro 1B) ; Muestra las coordenadas del ratón ; respecto a la pantalla ; https://www.gonduana.com/controla-el-raton-con-autohotkey/ #^ñ:: CoordMode, Mouse, Screen MouseGetPos, xpos, ypos Msgbox, Coordenada X=%xpos%. Coordenada Y=%ypos%. Return
Por si no se entienden bien las coordenadas absolutas (respecto a la pantalla) y las coordenadas relativas (respecto a la ventana), la siguiente imagen animada lo explica fenomenal (Made in Myself):
Recuerda que según el sistema cartesiano, el primer número es la coordenada horizontal, y después de la coma viene la coordenada vertical.
El origen de coordenadas está en la esquina superior izquierda de la pantalla, y la coordenada vertical crece hacia abajo.
2.ª idea básica: colocar el ratón en unas coordenadas determinadas
También es posible colocar el ratón en una determinada posición, sin moverlo físicamente con la mano, parece magia…
Por ejemplo, la siguiente macro emplea la función MouseMove para colocar el cursor del ratón en las coordenadas (100, 160) respecto a la ventana activa al pulsar simultáneamente las teclas ALT y ESPACIO.
; ALT+ESPACIO (macro 2A) ; Sitúa el ratón en las coordenadas (100,200) ; respecto a la ventana activa ; https://www.gonduana.com/controla-el-raton-con-autohotkey/ ~!Space:: CoordMode, Mouse, Window MouseMove, 100, 160, R return
La virgulilla (~) antes de la abreviatura hace que, aparte de ejecutarse las dos líneas que se ven de la macro, se envía al sistema la abreviatura que ejecuta la macro, en este caso, ALT+ESPACIO. Esta combinación de teclas de Windows, hace que se muestre un menú para poder minimizar, maximizar, restaurar, cambiar el tamaño o cerrar la ventana activa. ¡Pruébalo!
Por tanto, lo que hace la anterior macro es:
- mostrar el menú;
- colocar el ratón dentro de ese menú, para hacer más rápidamente la operación que quieres.
También podemos colocar el ratón con diferencias respecto a la posición actual del puntero. Por ejemplo, si ejecutas la siguiente macro:
; WIN+CTRL+ñ (macro 2B) ; Desplaza el cursor 10 píxeles a la derecha y ; 15 píxeles hacia abajo ; https://www.gonduana.com/controla-el-raton-con-autohotkey/ #^ñ::MouseMove, 10, 15, 0, R
el cursor se moverá 10 píxeles a la derecha, y 15 hacia abajo.
Pruébalo: cada vez que pulses WIN+CTRL+Ñ, el cursor se desplazará los píxeles que hayas escrito en la macro.
Fíjate que como solo tenemos una línea de código (MouseMove), podemos ponerlo en la misma línea que la abreviatura, y sin return, como las macros anteriores.
Otro caso práctico que utilizo:
Si viste el artículo Traducir con dos monitores, ya sabes que trabajo con 2 monitores dispuestos uno al lado del otro. Cada monitor tiene una resolución de 1920 × 1080 píxeles.
Pues bien, cuando quiero llevar el cursor del ratón de un monitor a otro, lo consigo rápidamente con la siguiente macro:
; WIN+CTRL+ñ (macro 2C) ; Cambia el cursor de pantalla. ; Mueve el cursor 1920 píxeles a la derecha/izquierda ; https://www.gonduana.com/controla-el-raton-con-autohotkey/ #^ñ:: CoordMode, Mouse, Screen MouseGetPos, xpos, ypos ;Msgbox, X=%xpos% Y=%ypos%. if xpos > 1920 difX := - 1920 else difX := 1920 MouseMove, %difX%, 0, 0, R ; Presiona la tecla CTRL Send {Ctrl down} Sleep 50 ; Libera la tecla CTRL ; para ver círculos concéntricos Send {Ctrl up} Return
Gráficamente, esto es lo que hace la macro si se ejecutara cada dos segundos y no se moviera el ratón con la mano:
Primero, la función MouseGetPos consigue las coordenadas del cursor respecto a la pantalla.
Después, si el cursor está en el monitor izquierdo (xpos < 1920), asigno a la variable difX el valor 1920.
Si el cursor está en el monitor derecho (xpos > 1920), asigno a la variable difX un valor negativo de -1920.
Fíjate que 1920 es el ancho en píxeles de cada uno de mis monitores, así que al posicionar el cursor del ratón con la función MouseMove, lo que consigo es llevármelo al otro monitor.
Las líneas 15 a 20 no son necesarias, pero las dejo para dejar la más a mi gusto.
Te explico porqué:
Lo que hace el primer Send de la línea 16 es presionar la tecla CTRL; luego la macro espera 50 milisegundos antes de levantar la tecla CTRL con otra función Send.
¿Para qué todo esto?
Porque en la configuración del ratón de Windows en Panel de control > Mouse > Opciones de puntero, tengo marcada la casilla Mostrar la ubicación del puntero al presionar la tecla CTRL.
Tengo marcada esa casilla, porque a veces no veo el puntero en ninguno de los dos monitores. Siempre que me pasa, pulso la tecla CTRL y me aparecen unos círculos concéntricos en la posición del ratón, así lo localizo enseguida.
Pues bien, al mover el ratón de un monitor al otro, los círculos concéntricos me ayudan a ubicar rápidamente el ratón.
Ya digo: si no lo ves interesante, siempre puedes quitar estas últimas líneas…
Nota: en el próximo artículo, te desvelaré cómo ejecuto en realidad esta macro, que no es realmente con WIN+CTRL+Ñ.
3.ª idea básica: haz clic, clic, clic…
Con AutoHotkey también puedes hacer clic en las coordenadas que quieras.
Por ejemplo, la siguiente macro hará clic en las coordenadas (790, 876) relativas a la ventana activa.
; WIN+CTRL+ñ (macro 3A) ; Hace clic en las coordenadas (790, 876) ; https://www.gonduana.com/controla-el-raton-con-autohotkey/ #^ñ::Click 790, 876
Como te puedes imaginar, la función de AutoHotkey que nos sirve para hacer clic es Click.
Por si te lo estás preguntando: ¡sí, también se puede hacer clic con el botón derecho!:
; WIN+CTRL+ñ (macro 3B) ; Hace clic derecho en icono de altavoz de la ; Bandeja del sistema, y luego hace clic ; en un elemento del menú ; https://www.gonduana.com/controla-el-raton-con-autohotkey/ #^ñ:: CoordMode, Mouse, Screen ; Clic derecho en el icono de altavoz Click right 1869, 1022 Sleep 100 ; Clic en Abrir mezclador de volumen Click 1790, 876 Return
Esta macro, por ejemplo, te puede servir para hacer clic con el botón derecho del ratón en un icono de la Bandeja del sistema, y luego hacer clic en un elemento del menú contextual mostrado.
En la siguiente imagen, tienes el ejemplo para abrir el Mezclador de volumen (icono de altavoz) solo con AutoHotkey:
Ten en cuenta que cualquier operación breve, pero que haces muchas veces al cabo del día, puede interesarte automatizarla creando una macro de AutoHotkey.
Por si no lo sabías, en AutoHotkey se incluye una herramienta que te puede ayudar a saber las coordenadas del ratón en tiempo real. Esta herramienta se llama AutoIt 3 Window Spy, y la tienes en el menú Inicio > Todos los programas > AutoHotkey.
Al ejecutarla, según vas moviendo el ratón por el monitor, esta aplicación te mostrará las coordenadas absolutas y relativas en la sección Mouse Position.
Conclusiones del control del ratón con AutoHotkey
Con AutoHotkey podrás:
- saber las coordenadas (x,y) del ratón;
- mover el puntero a una posición determinada (x,y);
- hacer clic en unas coordenadas determinadas (x,y).
Una vez más, te recuerdo la encuesta (ratón o mouse), tu granito de arena para todos los que hablamos español en todo el mundo.
Si la has rellenado, te lo agradecemos todos, porque así podremos ver un mapa con todos los países con participantes.
* * * * *
Si te interesa AutoHotkey, te doy un par de recomendaciones más:
- Lee los otros artículos de AutoHotkey de este mismo blog. Los tienes todos si filtras por «AutoHotkey» en la nube de etiquetas (columna derecha del blog).
- Suscríbete al blog, o sígueme en LinkedIn o Twitter (@jssprt). De esta manera, serás el primero en enterarte de la publicación de los artículos.
Muchas gracias , me ha servido mucho
Gracias.
Que sepas que tengo pensado empezar con una serie de artículos dedicados a AutoHotkey.
Saludos.
… Jesús Prieto …
Buenas....Quisiera saber si con autohotkey podria detectar el movimiento del mouse y al mover este aplique una funcion o tarea especifica como la funcion de una tecla ..
Osea que si al mover el mouse a la derecha un poco se active o escriba la laetra "Z" el el bloc de notas por ejemplo... Se puede hacer esto ? Gracias por su respuesta...
Hola, Jaime:
No lo he intentado nunca, pero creo que no hay ninguna función de AutoHotkey para detectar si se ha movido el ratón.
De modo que supongo que solo podrás hacerlo programando un poco, con un temporizador de 1 segundo, por ejemplo, (funciones SetTimer o Sleep), y ver si han cambiado las coordenadas del ratón.
¡Suerte!
… Jesús Prieto …
Excelente el blog! me surge la duda, además de posicionar el mouse en un sector concreto, podemos hacer que a continuacion copie un texto dentro de un campo?
Hola, Jaime:
Sí, se puede…
Para copiar un campo, podrías hacer lo siguiente (en esquema, sin ir a la programación de AutoHotkey):
1. Situar el ratón en las coordenadas del campo.
2. Hacer clic (para tener el foco en ese campo).
3. Seleccionar todo (con CTRL+A o CTRL+E).
4. Copiar (con CTRL+C)
Por cierto: Una aplicación útil de AutoHotkey es ir pasando automáticamente de un campo a otro (suele funcionar con la tecla TAB) y así tener el contenido de todos los campos en una variable para poder procesar ese texto.
¡Suerte!
… Jesús Prieto …