Python: ottieni l'input del mouse non elaborato
Voglio usare Python per leggere dati grezzi dal mouse (ad es. Segnale sinistro, segnale destro) indipendentemente dal puntatore del mouse. Non voglio leggere la posizione del cursore, voglio leggere i dati grezzi, simile a come farebbe un gioco. Come lo posso fare? Non riesco a trovare nessuna libreria che lo supporti.
Sto usando Windows.
Modifica: per chiarire, quando ho detto "segnale sinistro e segnale destro", intendevo il movimento del mouse , non i clic del mouse, Modifica 2: credo che la terminologia sia che voglio il "delta del mouse". Ecco come le persone lo hanno fatto in autohotkey -https://www.autohotkey.com/boards/viewtopic.php?t=10159 - ma lo voglio in Python.
Modifica 3: dovrei menzionare che questo è in un gioco che reimposta costantemente la posizione del puntatore, quindi non posso usare la differenza nella posizione del puntatore. Ecco perché voglio un'API di livello inferiore.
Risposte
Ottieni la posizione del mouse e confronta due eventi. Se il valore dell'asse x aumenta, il mouse si sposta a destra, se il valore dell'asse x diminuisce, il mouse si sposta a sinistra:
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()
Puoi sempre confrontare costantemente la posizione che ti avrebbe facilmente dato un delta. Qualsiasi API di livello inferiore dovrai codificare tu stesso un driver del mouse, che è ciò che gli sviluppatori di giochi fanno per impedire alle persone di scrivere script, che non è ciò per cui Python ha creato.
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")