Curso de programacion en python3 : 08 - Pyinput, como controlar el ratón

Esta entrada es parte de una serie, puedes ver la primera aquí

Luego de entender python a un nivel respetable y para propósitos generales, es hora de empezar a buscar utilidades especializadas, hay tareas que requieren esto y python es uno de los lenguajes mas utilizados para especialización.

Pynput (pyton input) es un paquete multiplataforma que nos ayuda a controlar las entradas a nuestro computador, perteneciente a las librerías de python pero oficialmente no se incluye con los binarios por que no es de uso frecuente, mas allá diría que solo nos funciona a unos pocos, su utilidad es muy grande en un nicho tan pequeño, que incluirlo directamente sería un desperdicio de disco duro.

Para instalar esta utilidad, necesitamos una consola de windows o linux en modo superusuario, en windows solo con dar clic derecho y seleccionar "abrir como administrador" conseguimos eso, a continuación ejecutaremos el comando > pip install pynput < y esperaremos que la utilidad pip se encargue de descargar los componentes, pip es un gestor de descargas para los paquetes de python, es recomendado conocer esa utilidad mas a fondo por que nos ahorra trabajo en windows donde las actualizaciones claras y específicas nunca han sido su fuerte.

Los trabajos repetitivos son algo que un informático debe evitar a toda costa, cuando encontramos una tarea de esta índole, la mejor salida será automatizarla y no volver a perder tiempo en ella, controlando el teclado y ratón se pueden automatizar trabajos con muchísima facilidad, empecemos con el código.

/*Inicio de codigo*/

#al importar de esta forma obtenemos solamente los eventos relativos a posición del ratón
from pynput.mouse import Controller

#lo siguiente será colocar un objeto del controlador en una variable cómoda
controladorMouse = Controller()

# ahora vamos a imprimir la propiedad position del ratón
#sabremos con dos valores(x,y) en donde apunta nuestro dispositivo
print(controladorMouse.position)

#si necesitamos cambiar esa posición, podemos simplemente colocar dos números
#estos números deben ser un arreglo(la coma los vuelve arreglo)
controladorMouse.position = 10,10

/*final de codigo*/

Para fines didácticos podríamos aumentar nuestro blanco, ya no solo leer donde está el ratón y modificar su posición, también podríamos colocar un controlador de botones para hacer click(izquierdo, derecho) y controlar exactamente como sucede ese clic, si es un pulso o se sostendrá hasta nuevo aviso, podríamos arrastrar una ventana con esto, seleccionar varios elementos en un área o incluso modificar el valor de un selector, ¿para que mover algo manualmente si podríamos leer un botón del teclado que lo haga por nosotros?

Con el conocimiento actual, cualquiera podrá modificar el siguiente script para realizar cualquier cosa, este en específico funciona para la resolución de mi monitor(1600x900), se posiciona en un espacio de la pantalla, realiza un clic derecho para abrir el menú del escritorio, espera 0.5 segundos para que windows pueda abrir el menú, se mueve hasta el elemento "Nuevo", espera otros 0.5 segundos para que el sistema operativo detecte la acción, nueva mente se mueve hasta el sub menú que crea una carpeta, espera 0.5 segundos y finalmente crea una nueva carpeta.

/*En un archivo de texto .py de nombre cualquiera pegue el siguiente código*/

import time
from pynput.mouse import Button, Controller
from pynput.keyboard import Listener, KeyCode

controladorMouse = Controller()
print(controladorMouse)
controladorMouse.position = 905,69
controladorMouse.click(Button.right)
time.sleep(0.5)
controladorMouse.position = 1001,401
time.sleep(0.5)
controladorMouse.position = 1192,401
time.sleep(0.5)
controladorMouse.click(Button.left)

/*fin del archivo*/

Cabe destacar que esto solo funciona para mi pantalla, si la resolución de pantalla es exactamente la misma que la mía, puede que funcione o que cause algún problema con una ventana abierta , si alguien tiene abierto un IDE que no permita el acceso al escritorio o al explorador de archivos, puede ocurrir un desastre, la ultima vez borré casi 20 lineas de código de un script por causa de no fijarme en donde caería en ratón, a parte de click(), existe las funciones press() y release(), usando estas dos, una que presiona y otra que libera, accidentalmente borré casi 20 lineas del propio código que estaba programando, entonces recomiendo usar esta clase de scripts con precaución, simplemente deberíamos calibrar la posición del ratón comentando casi todo el código y primero monitorizando la posición del ratón en pantalla, una vez esté el recorrido del ratón terminado, vamos permitiendo que haga clic por donde pasa.

Hasta aquí esta explicación corta y concisa sobre la librería pyinput, en lo que respecta al ratón, posteriormente y si logro entender como funciona lo de controlar eventos de teclado, voy a hacer otra en donde se disparará el script cuando presionemos un botón, muy útil para hacer que estos códigos se ejecuten en segundo plano y podamos utilizar los accesos rápidos aunque tengamos otro programa en primer plano.

Comentarios

Entradas populares de este blog

Hablemos de difamación, parafilias y denuncias bien hechas

Criticamos a pablito: "Atrapado en el cuerpo equivocado"

El fruto de una era: Antiintelectualismo moderno