Why it doesn't work?

作業のメモ、記録をブログに残しています。

Python マウスとキーボードを制御する(キーボードの制御)

Python マウスとキーボードを制御する(マウスの移動) - Why it doesn't work?
Python マウスとキーボードを制御する(マウスのクリック) - Why it doesn't work?
続きです。今回はキーボードの制御についてです。

1. 仮想キーボードから文字列を送信する

モニター上の座標(150, 90)にエディタウィンドウがある状態で、以下のプログラムを実行すると、エディタがクリックされ、Hello world!'が入力されます。

import pyautogui
pyautogui.click(150, 90)
pyautogui.typewrite('Hello world!')

typewrite()関数は時間(秒)を指定することが可能となっており、文字入力のスピードを調整することが可能になっています。
以下のように指定することで、一文字の入力が0.25秒ごとに行われるようになります。

pyautogui.typewrite('Hello world!', interval=0.25)

2. キーの押下とリリース

keyDown()関数とkeyUp()関数で仮想的にキーの押下とリリースを再現できます。下記のプログラムを実行すると大文字のエディタに入力されます。press()関数は、keyDown()関数とkeyUp()関数を順番に呼び出す関数です。

import pyautogui

pyautogui.click(150, 90)
pyautogui.keyDown('shift')
pyautogui.press('a')
pyautogui.keyUp('shift')

シフトキーなどのキーボードなどの名前はこちらを確認してください。
Keyboard Control Functions — PyAutoGUI 1.0.0 documentation

3. ホットキー

CtrlキーやAltキーなどを組み合わせて使用するホットキーはhotkey()関数を使用して再現できます。
例えば、Ctrl+cなどは以下のように表現されます。

pyautogui.hotkey('ctrl', 'c')

これは、以下の様にkeyDown()関数とkeyUp()関数でも表現できますが、hotkey()関数を使用してシンプルに表現することができます。

pyautogui.keyDown('ctrl')
pyautogui.keyDown('c')
pyautogui.keyUp('c')
pyautogui.keyUp('ctrl')

まだ続きます。