🖱️

Pythonでマウスの移動、クリック、スクロールを個別に無効化(pynputライブラリ)

2023/06/02に公開

まえがき

最初はPowerShellを使ったWindowsAPIのグローバルフックでマウス入力の無効化をしていましたが、他PCではPowerShellの実行ポリシーを変更しないと、外から持ってきたPowerShellスクリプトが動かせないことがわかり、Pythonで新たに作りました。

環境

・Windows10 64bit
・Python 3.7.5
・pynput 1.7.6

マウスの移動、クリック、スクロールを個別に無効化

それぞれのイベント内でsuppress_event()を呼べば無効化できます

from pynput import mouse
import time


# マウスポインタが移動した際に呼ばれるイベント
def on_move(x, y):
    print("Block mouse move")
    Mouselistener.suppress_event()      # このイベントを無効化

# マウスボタンがクリックされた際に呼ばれるイベント
def on_click(x, y, button, pressed):
    print("Block mouse click", button, pressed)
    Mouselistener.suppress_event()      # このイベントを無効化

# マウスホイールがスクロールされた際に呼ばれるイベント
def on_scroll(x, y, dx, dy):
    print("Block mouse scroll")
    Mouselistener.suppress_event()      # このイベントを無効化

# マウス入力を監視するリスナー
Mouselistener = mouse.Listener(
    on_move   = on_move,
    on_click  = on_click,
    on_scroll = on_scroll,
    suppress  = False
)


Mouselistener.start()   # リスナー開始
time.sleep(5)           # 5秒待つ
Mouselistener.stop()    # リスナー終了

マウスの移動、クリック、スクロールをすべて無効化

mouse.ListenerのsuppressにTureを指定すればOK

from pynput import mouse
import time


# マウス入力を監視するリスナー (suppress = Trueですべてのマウス入力を無効化)
Mouselistener = mouse.Listener(suppress = True)

Mouselistener.start()   # リスナー開始
time.sleep(5)           # 5秒待つ
Mouselistener.stop()    # リスナー終了

pynputドキュメント

https://pynput.readthedocs.io/en/latest/index.html

Discussion