Python - รับอินพุตเมาส์ดิบ
ฉันต้องการใช้ Python เพื่ออ่านข้อมูลดิบจากเมาส์ (เช่นสัญญาณซ้ายสัญญาณขวา) โดยไม่ขึ้นกับตัวชี้เมาส์ ฉันไม่ต้องการอ่านตำแหน่งของเคอร์เซอร์ฉันต้องการอ่านข้อมูลดิบคล้ายกับว่าเกมจะทำอย่างไร ฉันจะทำเช่นนั้นได้อย่างไร? ฉันไม่พบห้องสมุดที่รองรับ
ฉันใช้ Windows
แก้ไข: เพื่อความชัดเจนเมื่อฉันพูดว่า "สัญญาณซ้ายและสัญญาณขวา" ฉันหมายถึงการเคลื่อนไหวของเมาส์ไม่ใช่การคลิกเมาส์แก้ไข 2: ฉันเชื่อว่าคำศัพท์คือฉันต้องการ "เดลต้าของเมาส์" นี่คือวิธีที่ผู้คนทำใน autohotkey -https://www.autohotkey.com/boards/viewtopic.php?t=10159 - แต่ฉันต้องการใน Python
แก้ไข 3: ฉันควรพูดถึงว่านี่เป็นเกมที่รีเซ็ตตำแหน่งตัวชี้ตลอดเวลาดังนั้นฉันจึงไม่สามารถใช้ความแตกต่างของตำแหน่งตัวชี้ได้ นั่นเป็นเหตุผลที่ฉันต้องการ API ระดับล่าง
คำตอบ
รับตำแหน่งเมาส์และเปรียบเทียบสองเหตุการณ์ หากค่าแกน x เพิ่มขึ้นให้เลื่อนเมาส์ไปทางขวาหากค่าแกน x ลดลงเมาส์จะเลื่อนไปทางซ้าย:
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()
คุณสามารถเปรียบเทียบตำแหน่งได้ตลอดเวลาซึ่งจะทำให้คุณได้เดลต้าอย่างง่ายดาย API ระดับต่ำกว่าใด ๆ คุณจะต้องเขียนโค้ดไดรเวอร์เมาส์ด้วยตัวเองซึ่งเป็นสิ่งที่นักพัฒนาเกมทำเพื่อป้องกันไม่ให้คนเขียนสคริปต์ซึ่งไม่ใช่สิ่งที่ 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")