Python でキーボード入力をシミュレートする
Python はほとんどすべてに使用されます。Python を使用すると、Django
や Flask
などの無料のオープンソースフレームワークを使用して、Web アプリケーションのバックエンド、モバイルアプリケーションのバックエンド、および API を開発できます。
さらに、Python プログラムは、Keras
、NumPy
、Tensorflow
、PyTorch
などの堅牢なライブラリを使用して効率的な機械学習モデルを作成します。これらのライブラリは、Matplotlib
などを使用してさまざまな種類のプロットをプロットします。
この記事では、Python のそのようなユースケースを見ていきます。Python を使用してキーボードをシミュレートまたは制御する方法を学習します。
2つのオープンソース Python ライブラリ keyboard
と PyAutoGUI
について説明し、Python スクリプトを使用してキーボードを制御できるようにします。
Python の keyboard
ライブラリを使用してキーボードをシミュレートする
keyboard
ライブラリは、キーボードを制御するためのオープンソースライブラリです。
このライブラリは、キーボードイベントのリッスンと送信、ホットキーの使用、国際化のサポート、および pip install mouse
または pip3 install mouse
を使用してダウンロードできる mouse
ライブラリの助けを借りてマウスサポートを提供できます。
keyboard
ライブラリをインストールするには、次の 2つの pip
コマンドのいずれかを使用します。
pip install keyboard
pip3 install keyboard
このライブラリを使用してキーボードを制御する方法を理解しましょう。テキストを入力する簡単な例については、次の Python コードを参照してください。
import keyboard
keyboard.write("Python is an amazing programming language.")
keyboard.press_and_release("enter")
keyboard.press_and_release("shift+p")
keyboard.press_and_release("y")
keyboard.press_and_release("t")
keyboard.press_and_release("h")
keyboard.press_and_release("o")
keyboard.press_and_release("n")
出力:
Python is an amazing programming language.
Python
上記のコードを実行する前に、テキストカーソルまたはキャレットに注意してください。出力ボックス内の上記のテキストは、そこに自動的に入力されます。
write()
関数は、引数としてこの関数に渡される文字列を入力します。この関数は、人工キーボードイベントをオペレーティングシステムに送信します。オペレーティングシステムは、キャレットでさらに入力されます。
キーボードで使用できない文字がある場合は、代わりに明示的な Unicode 文字が入力されます。press_and_release()
関数は、オペレーティングシステムのイベントを送信して、ホットキーを実行し、引数として渡された文字を入力します。
このライブラリの詳細については、そのドキュメントこちらを参照してください。
Python の PyAutoGUI
ライブラリを使用してキーボードをシミュレートする
PyAutoGUI
ライブラリを使用すると、キーボードとマウスを制御する Python スクリプトを記述できます。
このライブラリは、マウスカーソルを移動してウィンドウやアプリケーションをクリックし、キーイベントを送信して文字を入力してホットキーを実行し、スクリーンショットを撮り、移動、サイズ変更、最小化、最大化、画面上のアプリケーションの検索、アラートメッセージの表示などを行うことができます。
このライブラリをインストールするには、次のいずれかのコマンドを使用します。
pip install pyautogui
pip3 install pyautogui
ユースケースには PyAutoGUI
ライブラリを使用できます。これについては、次のコードを参照してください。
import pyautogui
pyautogui.write("Python is an amazing programming language.")
出力:
Python is an amazing programming language.
ご覧のとおり、write()
関数は、キャレットで引数として渡された文字列の文字を型指定します。この機能は、アルファベットや数字などの 1 文字のキーのみを押すことができます。
つまり、Shift、Ctrl、Command、Alt、Option、F1、F3のようなキーは押せません。keyDown()
および keyUp()
メソッドを使用して、このようなキーを押すことができます。
keyDown()
メソッドはキーを押し続けます。そして、keyUp()
メソッドは保持されたキーを解放します。
例については、次の Python コードを参照してください。テキストカーソルまたはキャレットの位置に注意することを忘れないでください。
import pyautogui
pyautogui.keyDown("shift")
pyautogui.press("a")
pyautogui.press("b")
pyautogui.press("c")
pyautogui.keyUp("shift")
pyautogui.press("x")
pyautogui.press("y")
pyautogui.press("z")
pyautogui.keyDown("shift")
pyautogui.press("a")
pyautogui.keyUp("shift")
pyautogui.keyDown("shift")
pyautogui.press("b")
pyautogui.keyUp("shift")
pyautogui.keyDown("shift")
pyautogui.press("c")
pyautogui.keyUp("shift")
出力:
ABCxyzABC
Shift + Fなどのキーを押すには、press()
メソッドを使用することもできます。この関数は、文字列として渡されたすべてのキーを押します。
舞台裏では、この関数は keyDown()
および keyUp()
メソッドの単なるラッパーです。
このライブラリの詳細については、そのドキュメントこちらを参照してください。