Python - Holen Sie sich rohe Mauseingaben
Ich möchte Python verwenden, um Rohdaten von der Maus (z. B. linkes Signal, rechtes Signal) unabhängig vom Mauszeiger zu lesen . Ich möchte nicht die Position des Cursors lesen, ich möchte die Rohdaten lesen, ähnlich wie bei einem Spiel. Wie kann ich das machen? Ich kann keine Bibliotheken finden, die dies unterstützen.
Ich benutze Windows.
Edit: Um zu klären, als ich sagte , „linkes Signal und richtiges Signal“, ich meine Maus Bewegung , nicht Mausklicks, Edit 2: „Maus delta“ Ich glaube , die Terminologie ist , dass ich das will So haben es die Leute in Autohotkey gemacht -https://www.autohotkey.com/boards/viewtopic.php?t=10159 - aber ich will es in Python.
Bearbeiten 3: Ich sollte erwähnen, dass dies in einem Spiel ist, das die Zeigerposition ständig zurücksetzt, so dass ich den Unterschied in der Zeigerposition nicht verwenden kann. Deshalb möchte ich eine API auf niedrigerer Ebene.
Antworten
Holen Sie sich die Mausposition und vergleichen Sie zwei Ereignisse. Wenn der Wert der x-Achse zunimmt, bewegt sich die Maus nach rechts, wenn der Wert der x-Achse abnimmt, bewegt sich die Maus nach links:
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()
Sie können immer die Position ständig vergleichen, die Ihnen leicht ein Delta gegeben hätte. Bei jeder API auf niedrigerer Ebene müssen Sie selbst einen Maustreiber codieren. Dies tun Spieleentwickler, um zu verhindern, dass Benutzer Skripte erstellen. Dafür ist Python nicht geeignet.
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")