Python - ham fare girdisi alın
Fare imlecinden bağımsız olarak fareden ham verileri (örneğin sol sinyal, sağ sinyal) okumak için Python kullanmak istiyorum . İmlecin konumunu okumak istemiyorum, bir oyunun nasıl yapacağına benzer şekilde ham verileri okumak istiyorum. Bunu nasıl yapabilirim? Onu destekleyen herhangi bir kitaplık bulamıyorum.
Windows kullanıyorum.
Düzenleme: Açıklığa kavuşturmak için, "sol sinyal ve sağ sinyal" dediğimde , fare tıklamalarını değil, fare hareketini kastetmiştim , Düzenleme 2: Terminolojinin "fare deltası" olmasını istediğime inanıyorum. İnsanlar autohotkey'de bunu böyle yaptı -https://www.autohotkey.com/boards/viewtopic.php?t=10159 - ama Python'da istiyorum.
Düzenleme 3: Bunun işaretçi konumunu sürekli sıfırlayan bir oyunda olduğunu belirtmeliyim, bu yüzden işaretçi konumundaki farkı kullanamıyorum. Bu yüzden daha düşük seviyeli bir API istiyorum.
Yanıtlar
Fare konumunu alın ve iki olayı karşılaştırın. X ekseni değeri artarsa, fare sağa hareket eder, x ekseni değeri azalırsa fare sola hareket eder:
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()
Size kolayca bir delta verebilecek konumu her zaman sürekli olarak karşılaştırabilirsiniz. Daha düşük seviyeli herhangi bir API, bir fare sürücüsünü kendiniz kodlamanız gerekir; bu, oyun geliştiricilerinin insanların komut dosyası yazmasını önlemek için yaptığı şeydir, ki python bunun için yapılmamıştır.
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")