Python-원시 마우스 입력 가져 오기

Aug 30 2020

나는 파이썬을 사용 하여 마우스 포인터와 관계없이 마우스에서 원시 데이터 (예 : 왼쪽 신호, 오른쪽 신호)를 읽고 싶습니다 . 나는 커서의 위치를 ​​읽고 싶지 않고 게임처럼 원시 데이터를 읽고 싶습니다. 어떻게 할 수 있습니까? 지원하는 라이브러리를 찾을 수 없습니다.

Windows를 사용하고 있습니다.

편집 : 명확히하기 위해 "왼쪽 신호 및 오른쪽 신호"라고 말했을 때 마우스 클릭이 아니라 마우스 움직임을 의미했습니다 . 편집 2 : 용어는 "마우스 델타"를 원한다는 것입니다. 이것이 사람들이 autohotkey에서 한 방법입니다.https://www.autohotkey.com/boards/viewtopic.php?t=10159 -하지만 파이썬으로 원합니다.

편집 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는 마우스 드라이버를 직접 코딩해야합니다. 이는 게임 개발자가 스크립트 작성을 방지하기 위해 수행하는 작업입니다. 이는 파이썬이 만든 것이 아닙니다.

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