Python - obtenir l'entrée brute de la souris
Je veux utiliser Python pour lire les données brutes de la souris (par exemple, signal gauche, signal droit) indépendamment du pointeur de la souris. Je ne veux pas lire la position du curseur, je veux lire les données brutes, comme le ferait un jeu. Comment puis je faire ça? Je ne trouve aucune bibliothèque qui le prend en charge.
J'utilise Windows.
Edit: Pour clarifier, quand j'ai dit "signal gauche et signal droit", je voulais dire le mouvement de la souris , pas les clics de souris, Edit 2: Je crois que la terminologie est que je veux le "delta de la souris". Voici comment les gens l'ont fait en autohotkey -https://www.autohotkey.com/boards/viewtopic.php?t=10159 - mais je le veux en Python.
Edit 3: Je dois mentionner que c'est dans un jeu qui réinitialise constamment la position du pointeur, donc je ne peux pas utiliser la différence de position du pointeur. C'est pourquoi je veux une API de niveau inférieur.
Réponses
Obtenez la position de la souris et comparez deux événements. Si la valeur de l'axe x augmente, la souris s'est déplacée vers la droite, si la valeur de l'axe x diminue, la souris s'est déplacée vers la gauche:
from pynput.mouse import Listener
last_position = None
def on_move(x, y):
global last_position
if last_position:
if x > last_position:
print('mouse moved right')
elif x < last_position:
print('mouse moved left')
last_position = x
with Listener(on_move=on_move) as listener:
listener.join()
Vous pouvez toujours comparer constamment la position qui vous aurait facilement donné un delta. Pour toute API de niveau inférieur, vous devrez coder vous-même un pilote de souris, ce que font les développeurs de jeux pour empêcher les gens de créer des scripts, ce qui n'est pas le but de python.
import pyautogui
import time
while True:
prev_x, prev_y = pyautogui.position()
time.sleep(0.3)
curr_x, curr_y = pyautogui.position()
if (curr_x - prev_x) > 0:
print("move right")
else:
print("move left")