Python - Holen Sie sich rohe Mauseingaben

Aug 30 2020

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

1 Pascalco Aug 30 2020 at 20:15

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()        
albusSimba Aug 30 2020 at 20:45

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")