Python - pobierz surowe dane wejściowe myszy
Chcę używać Pythona do odczytywania surowych danych z myszy (np. Lewy sygnał, prawy sygnał) niezależnie od wskaźnika myszy. Nie chcę czytać pozycji kursora, chcę czytać surowe dane, podobnie jak gra. Jak mogę to zrobić? Nie mogę znaleźć żadnych bibliotek, które to obsługują.
Używam systemu Windows.
Edycja: Aby wyjaśnić, kiedy powiedziałem „lewy sygnał i prawy sygnał”, miałem na myśli ruch myszą , a nie kliknięcia myszą. Edycja 2: Myślę, że terminologia jest taka, że chcę „delty myszy”. Oto jak ludzie robili to w autohotkey -https://www.autohotkey.com/boards/viewtopic.php?t=10159 - ale chcę to w Pythonie.
Edycja 3: Powinienem wspomnieć, że jest to gra, która nieustannie resetuje pozycję wskaźnika, więc nie mogę użyć różnicy w pozycji wskaźnika. Dlatego chcę API niższego poziomu.
Odpowiedzi
Uzyskaj pozycję myszy i porównaj dwa zdarzenia. Jeśli wartość na osi X wzrośnie, mysz przesunęła się w prawo, jeśli wartość na osi X spadnie, mysz przesunęła się w lewo:
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()
Zawsze możesz stale porównywać pozycję, co z łatwością dałoby ci deltę. Każde API niższego poziomu, które będziesz musiał sam zakodować sterownik myszy, robią programiści gier, aby uniemożliwić ludziom pisanie skryptów, co nie jest tym, do czego służy 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")