Pythonのpynputライブラリでマウスとキーボードを自在に制御する方法
はじめに
pynputは、キーボードやマウスといった入力デバイスをプログラムから操作(制御)したり、その動きを監視(リスニング)したりできるPythonライブラリです。
ライブラリ内のpynput.mouseモジュールはマウスの操作と監視を、pynput.keyboardモジュールはキーボードの操作と監視をそれぞれ担当しています。
本記事では、マウスカーソルを指定した座標へ移動させる方法、クリックの自動化、そしてキーボードのキー入力をシミュレートする方法を順番に解説していきます。
pynputはWindows、macOS、Linuxといった主要なOSで動作するため、環境を選ばずに自動化スクリプトを構築できるのが大きな魅力です。それでは早速始めましょう。
セットアップ
pynputはPythonに標準で同梱されていないため、pipパッケージマネージャーを使って手動でインストールする必要があります。
ターミナル(コマンドプロンプト)を起動し、以下のコマンドを実行してください。
pip install pynput
インストールが正常に完了したら、Pythonスクリプト内で各種モジュールをインポートできるようになります。
マウスとキーボードの両方で複数のモジュールを使用するため、import文については後ほど詳しく説明します。
マウスを制御する
Pythonでマウスを操作・シミュレートするには、まずpynputライブラリからマウス用モジュールをインポートします。クリックや移動もシミュレートするため、必要なクラスをまとめてインポートしておきましょう。
from pynput.mouse import Button, Controller
まず、Controller()メソッドを使ってマウスを操作するためのオブジェクトを作成します。
mouse = Controller()
画面上の任意の位置にマウスを移動したい場合は、座標を指定するだけでOKです。
mouse.position = (50,60)
実際にマウスがどこに移動したかを確認したい場合は、現在位置を出力してみましょう。
print('Current mouse position −> {0}'.format(mouse.position))
現在位置からの相対的な移動を行いたい場合は、move()関数を使用します。
mouse.move(30,15)
ボタンの押下をシミュレートしたい場合は、press()とrelease()を組み合わせます。
mouse.press(Button.left) mouse.release(Button.left) mouse.press(Button.right) mouse.release(Button.right)
ダブルクリックを行いたい場合は、click()関数に回数を指定します。
mouse.click(Button.left, 2)
さらに、スクロール操作もシミュレートできます。
mouse.scroll(0,2)
この例では2段階下方向へスクロールします。第1引数のx座標が左右方向のスクロール、第2引数のy座標が上下方向のスクロールに対応しています。
マウス操作のコード例
ここまでの内容をすべて組み合わせたサンプルコードがこちらです。
from pynput.mouse import Button, Controller
mouse = Controller()
mouse.position = (50,60)
print('Current mouse position −> {0}'.format(mouse.position))
mouse.move(30,15)
mouse.press(Button.left)
mouse.release(Button.left)
mouse.press(Button.right)
mouse.release(Button.right)
mouse.click(Button.left, 2)
mouse.scroll(0,2)
これらのメソッドを応用すれば、基本的な座標計算を組み合わせてペイントアプリ上でお絵かきを自動的に行う、といったことも可能になります。
キーボードを制御する
次に、キーボードの操作方法を見ていきましょう。まずは必要なモジュールとクラスをインポートします。pynputライブラリのkeyboardモジュールからは、KeyとControllerを使用します。
from pynput.keyboard import Key, Controller
Controllerクラスを使ってキーボードを操作し、キー入力をシミュレートします。
keyboard = Controller()
キー入力のシミュレートには、press()(押す)とrelease()(離す)の2つのメソッドを使用します。
keyboard.press('a')
keyboard.release('a')
この方法は大文字を含むすべてのアルファベットに対応しています。大文字を入力したい場合は、「a」の代わりに「A」を指定するだけです。
また、SpaceキーやCtrlキーなどの特殊キーの入力もシミュレートできます。
keyboard.press(Key.space) keyboard.release(Key.space) keyboard.press(Key.ctrl) keyboard.release(Key.ctrl)
文章や単語を一気に入力したい場合は、type()関数が便利です。
keyboard.type('Hello World!!')
以上が、Pythonでキーボードデバイスを操作・シミュレートする基本的な方法です。
キーボード操作のコード例
from pynput.keyboard import Key, Controller
keyboard = Controller()
keyboard.press('a')
keyboard.release('a')
keyboard.press(Key.space)
keyboard.release(Key.space)
keyboard.press(Key.ctrl)
keyboard.release(Key.ctrl)
keyboard.type('Hello World!!')
まとめ
本記事では、Pythonのpynputライブラリを使ってキーボードとマウスの入力をシミュレートする方法を学びました。
これらの技術を活用すれば、クリッカー系ゲームで自動的にクリックを連打するボットや、複数のメッセージを一括送信するスパムボットなど、さまざまな自動化ツールを作成できます。アイデア次第であらゆる種類の自動化ツールを構築できるため、応用範囲は非常に広いと言えるでしょう。
スパムボットのミニプロジェクト例:
https://github.com/SVijayB/Spam-botz
pynputのその他の機能について詳しく知りたい方は、公式ドキュメントをご覧ください。
https://pynput.readthedocs.io/en/latest/index.html
-
PythonのTkinterでファイル選択ダイアログを使い、選択したディレクトリの場所を表示・保存する方法
ダイアログボックスは、さまざまな種類のアプリケーションでおなじみのUI要素であり、ユーザーとの対話が重要となるアプリケーション開発において非常に役立ちます。ダイアログボックスを利用すれば、ユーザーにファイルの選択を求め、その後、ファイルの読み込みや書き込みといった操作を実行できます。Pythonでは、filedialogモジュールを使用することで、こうしたダイアログボックスを簡単に作成できます。 サンプルコード 以下の例では、ローカルディレクトリからファイルを選択するようユーザーに促し、選択されたファイルの場所(パス)をラベルウィジェットで表示するアプリケーションを作成します。 #Import
-
iPhoneをワイヤレスマウス&キーボードとして使う方法【Mac・PC対応】
このチュートリアルでは、iPhone・iPad・iPod touchをワイヤレスのマウス兼キーボードに変身させ、MacやWindows PCを操作する手順を詳しく解説します。専用アプリを使えば、離れた場所からでもパソコンを快適にコントロールできるようになります。必要なものiPhone / iPad / iPod touch(iOSデバイス)操作対象となるMacまたはWindows PC両方のデバイスが接続された同じWi-Fiネットワーク設定手順1. Logitech Touch Mouse Serverをダウンロードしてインストールまず、お使いのPC(Windows)またはMac向けに、Log