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

マウスの位置を取得し、2つのイベントを比較します。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")