Python - รับอินพุตเมาส์ดิบ

Aug 30 2020

ฉันต้องการใช้ Python เพื่ออ่านข้อมูลดิบจากเมาส์ (เช่นสัญญาณซ้ายสัญญาณขวา) โดยไม่ขึ้นกับตัวชี้เมาส์ ฉันไม่ต้องการอ่านตำแหน่งของเคอร์เซอร์ฉันต้องการอ่านข้อมูลดิบคล้ายกับว่าเกมจะทำอย่างไร ฉันจะทำเช่นนั้นได้อย่างไร? ฉันไม่พบห้องสมุดที่รองรับ

ฉันใช้ Windows

แก้ไข: เพื่อความชัดเจนเมื่อฉันพูดว่า "สัญญาณซ้ายและสัญญาณขวา" ฉันหมายถึงการเคลื่อนไหวของเมาส์ไม่ใช่การคลิกเมาส์แก้ไข 2: ฉันเชื่อว่าคำศัพท์คือฉันต้องการ "เดลต้าของเมาส์" นี่คือวิธีที่ผู้คนทำใน autohotkey -https://www.autohotkey.com/boards/viewtopic.php?t=10159 - แต่ฉันต้องการใน Python

แก้ไข 3: ฉันควรพูดถึงว่านี่เป็นเกมที่รีเซ็ตตำแหน่งตัวชี้ตลอดเวลาดังนั้นฉันจึงไม่สามารถใช้ความแตกต่างของตำแหน่งตัวชี้ได้ นั่นเป็นเหตุผลที่ฉันต้องการ API ระดับล่าง

คำตอบ

1 Pascalco Aug 30 2020 at 20:15

รับตำแหน่งเมาส์และเปรียบเทียบสองเหตุการณ์ หากค่าแกน 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()        
albusSimba Aug 30 2020 at 20:45

คุณสามารถเปรียบเทียบตำแหน่งได้ตลอดเวลาซึ่งจะทำให้คุณได้เดลต้าอย่างง่ายดาย 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")