★悩み★
・PyAutoGUIでどのようなキーボード入力操作を自動化できる?
・ショートカットや特殊キー(f5など)といった複数キーの同時押しは可能?
・PyAutoGUIを使ってメモ帳に日本語を連続入力ってできる?
こういった「悩み」に答えます。
★本記事の内容★
① PyAutoGUIとは?
② PyAutoGUIで可能なキーボード入力操作【よく使う6事例を紹介】
これからご紹介する「【最短5分】PyAutoGUIによるキーボード入力自動化のパターン6選順」を実践したことで、30分以内で「指定した文字列をメモ帳へ入力」(下の動画参照)できました。
記事の前半では「PyAutoGUIとは?」や「PyAutoGUIのインストール方法」を解説します。
記事の後半では「PyAutoGUIでよく使うキーボード入力操作6パターン」をプログラムと実行例をもとに紹介します。
この記事を読み終えることで、「PyAutoGUIでキーボード入力操作を自動化できる」状態になります。
PyAutoGUIとは?
「PyAutoGUIとは?」/「PyAutoGUIの特徴」/「PyAutoGUIのユースケース(利用場面)」に関しては、以下の記事をご覧ください。
>> 【要点】PyAutoGUIとは?初心者向けに特徴から使い方までを図解
また、PyAutoGUIのインストール方法に関しては、以下の記事をご覧ください。
>> 【最短5分】PyAutoGUIをWindowsにインストールする手順
>> 【最短5分】UbuntuにPyAutoGUIをインストールする手順
>> 【最短5分】MacにPyAutoGUIをインストールする手順
ウェブブラウザなどの画面操作を自動化をしたい場合、PyAutoGUIを使って無料で実現できます。
以降で、PyAutoGUIでキーボード入力操作を自動化する方法をご紹介しますね。
PyAutoGUIで可能なキーボード入力操作
「PyAutoGUIで可能なキーボード入力操作」に関してご紹介します。
★PyAutoGUIで可能なキーボード入力操作に関するご紹介事項★
・入力できるキーボードの一覧(KEYBOARD_KEYSで把握)
・writeで文字列を入力
・pressでキーボードを押す
・keyDownとkeyUpでキーボードを下げる/上げる
・hotkeyでショートカットや特殊キーを入力(複数キー同時入力)
・typewriteでキーボードを連続入力
・pyperclipのcopyで日本語を入力
PyAutoGUIを使うことで、「矢印の下キー」「f5などの特殊キー」「同時に複数のキー(ショートカットキー)」入力といったキーボード操作を自動化できます。
上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2022年7月8日
動作確認済み環境:Windows Pro 11
以降で、上記「PyAutoGUIで可能なキーボード入力操作に関するご紹介事項」の各項目に関してご説明します。
入力できるキーボードの一覧(KEYBOARD_KEYSで把握)
「入力できるキーボードの一覧(KEYBOARD_KEYSで把握)」に関して説明します。
PyAutoGUIからは、「194」種類のキーをキーボード入力できます。
PyAutoGUIからキーボード入力できる「キーの種類」は、以下の公式サイトから確認できます。
>> PyAutoGUIから入力できるキーの種類(公式サイト)
上記サイトより、PyAutoGUIからキーボード入力できるキーは、以下となります。
['\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", '(',
')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^', '_', '`',
'a', 'b', 'c', 'd', 'e','f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~',
'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace',
'browserback', 'browserfavorites', 'browserforward', 'browserhome',
'browserrefresh', 'browsersearch', 'browserstop', 'capslock', 'clear',
'convert', 'ctrl', 'ctrlleft', 'ctrlright', 'decimal', 'del', 'delete',
'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'f1', 'f10',
'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20',
'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9',
'final', 'fn', 'hanguel', 'hangul', 'hanja', 'help', 'home', 'insert', 'junja',
'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail',
'launchmediaselect', 'left', 'modechange', 'multiply', 'nexttrack',
'nonconvert', 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6',
'num7', 'num8', 'num9', 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn',
'pgup', 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn',
'prtsc', 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator',
'shift', 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab',
'up', 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen',
'command', 'option', 'optionleft', 'optionright']
上記より、PyAutoGUIから「日本語」をキーボード入力できません。
日本語を入力する方法に関しては、本記事の中盤で解説しますね。
以上が、「入力できるキーボードの一覧(KEYBOARD_KEYSで把握)」となります。
writeで文字列を入力
「writeで文字列を入力」に関して解説しますね。
PyAutoGUIで文字列をキーボード入力したい場合、「write」を使います。
「write」の構文は、以下となります。
★writeの構文(リファレンス)★
・機能
指定した文字列をキーボード入力する
・使い方
write(入力したい文字列, <任意:interval=秒数>)
・例
write(‘PyAutoGUI keyboard’, interval=0.5)
・実行結果
0.5秒間隔で「PyAutoGUI keyboard」をキーボード入力する
・参照
write関数のリファレンス(公式サイト)
それでは、上記のwriteを使って、PyAutoGUIで文字列のキーボード入力を自動化してみましょう。
以下のプログラムを作成し、「pyautogui-keyboard-write.py」というファイル名で保存してください。
import pyautogui
import subprocess
import time
# メモ帳を開く
subprocess.Popen([r'c:\windows\system32\notepad.exe'], shell=True)
time.sleep(5)
# writeで文字列を入力
pyautogui.write('PyAutoGUI keyboard', interval=0.5)
print('PyAutoGUIのwriteでキーボード入力しました。')
続いて、コマンドプロンプトを起動し、作成したプログラムを以下のコマンドで実行してみましょう。
python pyautogui-keyboard-write.py
コマンド実行後、下の動画のようにメモ帳に「PyAutoGUI keyboard」がキーボード入力された場合、「正常に作成したプログラムを実行できた」と判断できます。
以上が、「writeで文字列を入力」となります。
pressでキーボードを押す
「pressでキーボードを押す」に関して説明します。
PyAutoGUIでenterやtabなどのキー(KEYBOARD_KEYS内の範囲)を入力したい場合、「press」を使います。
「press」の構文は、以下となります。
★pressの構文(リファレンス)★
・機能
KEYBOARD_KEYS範囲内のキーを入力する
・使い方
press(入力したいキー, <任意:presses=回数>, <任意:interval=秒数>)
・例
press(‘enter’, presses=5, interval=0.5)
・実行結果
0.5秒間隔で「Enterキー」を5回入力する
・参照
press関数のリファレンス(公式サイト)
それでは、上記のpressを使って、PyAutoGUIでenterやtabなどのキーボード入力を自動化してみましょう。
以下のプログラムを作成し、「pyautogui-keyboard-press.py」というファイル名で保存してください。
import pyautogui
import subprocess
import time
# メモ帳を開く
subprocess.Popen([r'c:\windows\system32\notepad.exe'], shell=True)
time.sleep(5)
# pressで文字列を入力
pyautogui.press('enter', presses=5, interval=0.5)
pyautogui.press('tab')
pyautogui.press(['P','y','A','u','t','o','G','U','I',' ','k','e','y','b','o','a','r','d'])
print('PyAutoGUIのpressで文字列をキーボード入力しました。')
続いて、コマンドプロンプトを起動し、作成したプログラムを以下のコマンドで実行してみましょう。
python pyautogui-keyboard-press.py
コマンド実行後、下の動画のようにメモ帳に「enter」「tab」「PyAutoGUI keyboard」がキーボード入力された場合、「正常に作成したプログラムを実行できた」と判断できます。
以上が、「pressでキーボードを押す」となります。
keyDownとkeyUpでキーボードを下げる/上げる
「keyDownとkeyUpでキーボードを下げる/上げる」に関してご紹介します。
PyAutoGUIでショートカットキーなどの複数キーを同時入力したい場合、keyDownとkeyUpを使います。
ただし、hotkeyと用途が被るのであまり使う機会はないです。
「keyDown」の構文は、以下となります。
★keyDownの構文(リファレンス)★
・機能
KEYBOARD_KEYS範囲内のキーを下げる
・使い方
keyDown(入力したいキー)
・例
keyDown(‘ctrl’)
・実行結果
「ctrlキー」を下げる
・参照
keyDown関数のリファレンス(公式サイト)
また、「keyUp」の構文は、以下となります。
★keyUpの構文(リファレンス)★
・機能
KEYBOARD_KEYS範囲内のキーを上げる
・使い方
keyUp(入力したいキー)
・例
keyUp(‘ctrl’)
・実行結果
「ctrlキー」を上げる
・参照
keyUp関数のリファレンス(公式サイト)
それでは、上記のkeyUpとkeyDownを使って、PyAutoGUIで複数キーの同時入力を自動化してみましょう。
以下のプログラムを作成し、「pyautogui-keyboard-keyup-keydown.py」というファイル名で保存してください。
import pyautogui
import subprocess
import time
# メモ帳を開く
subprocess.Popen([r'c:\windows\system32\notepad.exe'], shell=True)
time.sleep(5)
# keyUpとkeyDownでctrl, shift, sを同時に押す
pyautogui.keyDown('ctrl')
pyautogui.keyDown('shift')
pyautogui.keyDown('s')
# 下げた状態のキーを上げる
pyautogui.keyUp('ctrl')
pyautogui.keyUp('shift')
pyautogui.keyUp('s')
print('PyAutoGUIのkeyUpとkeyDownで複数キーを同時入力しました。')
プログラム内でkeyDownで下げたキーをkeyUpで上げなかった場合、プログラム実行後のキーボード操作がおかしくなります。
おかしくなった場合は、「ctrl」「shift」「s」を順番にキーボード入力することで解消できます。
続いて、コマンドプロンプトを起動し、作成したプログラムを以下のコマンドで実行してみましょう。
python pyautogui-keyboard-keyup-keydown.py
コマンド実行後、下の動画のようにメモ帳の「名前を付けて保存」ウィンドウが表示された場合、「正常に作成したプログラムを実行できた」と判断できます。
以上が、「keyDownとkeyUpでキーボードを下げる/上げる」となります。
hotkeyでショートカットや特殊キーを入力(複数キー同時入力)
「hotkeyでショートカットや特殊キーを入力(複数キー同時入力)」に関して解説します。
先ほどのkeyDownとkeyUpと同じことをhotkeyでも実現できます。
hotkeyを使うことで、keyDownとkeyUpで実現したことをより少ない行数で実現できます。
「hotkey」の構文は、以下となります。
★hotkeyの構文(リファレンス)★
・機能
KEYBOARD_KEYS範囲内のキーの上げ下げをする
・使い方
hotkey(入力したいキー1, 入力したいキー2, … )
・例
hotkey(‘ctrl’, ‘shift’, ‘s’)
・実行結果
「ctrlキー」「shitfキー」「s」キーを下げたのちに上げる
・参照
hotkey関数のリファレンス(公式サイト)
それでは、上記のhotkeyを使って、PyAutoGUIで複数キーの同時入力を自動化してみましょう。
以下のプログラムを作成し、「pyautogui-keyboard-hotkey.py」というファイル名で保存してください。
import pyautogui
import subprocess
import time
# メモ帳を開く
subprocess.Popen([r'c:\windows\system32\notepad.exe'], shell=True)
time.sleep(5)
# hotkeyで特殊キー(shift,a)を入力
pyautogui.hotkey('ctrl', 'a')
# hotkeyでctrl, shift, sのショートカットキーを入力
pyautogui.hotkey('ctrl', 'shift', 's')
print('PyAutoGUIのhotkeyで特殊キーとショートカットキー入力しました。')
続いて、コマンドプロンプトを起動し、作成したプログラムを以下のコマンドで実行してみましょう。
python pyautogui-keyboard-hotkey.py
コマンド実行後、下の動画のようにメモ帳の「名前を付けて保存」ウィンドウが表示された場合、「正常に作成したプログラムを実行できた」と判断できます。
以上が、「hotkeyでショートカットや特殊キーを入力(複数キー同時入力)」となります。
typewriteでキーボードを連続入力
「typewriteでキーボードを連続入力」に関して説明します。
PyAutoGUIでキーボードを連続して入力したい場合、「typewrite」を使います。
挙動は、先ほど紹介した「write」と同じです。
「typewrite」の構文は、以下となります。
★typewriteの構文(リファレンス)★
・機能
指定した文字列をキーボード入力する
・使い方
typewrite(入力したい文字列, <任意:interval=秒数>)
・例
typewrite(‘PyAutoGUI keyboard’, interval=0.5)
・実行結果
0.5秒間隔で「PyAutoGUI keyboard」をキーボード入力する
それでは、上記のtypewriteを使って、PyAutoGUIでキーボードを連続入力してみましょう。
以下のプログラムを作成し、「pyautogui-keyboard-typewrite.py」というファイル名で保存してください。
import pyautogui
import subprocess
import time
# メモ帳を開く
subprocess.Popen([r'c:\windows\system32\notepad.exe'], shell=True)
time.sleep(5)
# writeで文字列を入力
pyautogui.typewrite('PyAutoGUI keyboard', interval=0.5)
print('PyAutoGUIのtypewriteで文字列をキーボード入力しました。')
続いて、コマンドプロンプトを起動し、作成したプログラムを以下のコマンドで実行してみましょう。
python pyautogui-keyboard-typewrite.py
コマンド実行後、下の動画のようにメモ帳に「PyAutoGUI keyboard」がキーボード入力された場合、「正常に作成したプログラムを実行できた」と判断できます。
以上が、「typewriteでキーボードを連続入力」となります。
pyperclipのcopyで日本語を入力
「pyperclipのcopyで日本語を入力」に関して説明します。
PyAutoGUIからは、日本語をキーボード入力できません。
そのため、「pyperclip」というライブラリを使う必要があります。
Pythonのライブラリの1つである「pyperclip」をインストールするために、以下のコマンドを順番に実行してください。
pip install pyperclip
pip list
コマンド実行後、「pyperclip バージョン名」が表示された場合、「正常にpaperclipをインストールできた」と判断できます。
ちなみに、日本語を入力するために、pyperclipのcopy関数を使います。
copy関数の構文は、以下となります。
★copyのリファレンス★
・機能
指定した文字列をクリップボードにコピーする
・使い方
copy(クリップボードにコピーしたい文字列)
・例
copy(“駆け出し物語”)
・実行結果
駆け出し物語という文字列をクリップボードにコピーする
・参照
pyperclipのcopy関数のリファレンス(公式サイト)
それでは、上記のcopyを使って、PyAutoGUIで日本語文字列をキーボード入力してみましょう。
以下のプログラムを作成し、「pyautogui-keyboard-copy.py」というファイル名で保存してください。
import subprocess
import time
import pyperclip
import pyautogui
# メモ帳を開く
subprocess.Popen([r'c:\windows\system32\notepad.exe'], shell=True)
time.sleep(5)
# copyで日本語文字列をクリップボードにコピー
pyperclip.copy("駆け出し物語")
# hotkeyで「ショートカットキーのペースト」を入力
pyautogui.hotkey("ctrl", "v")
print('pyperclipのcopy関数とPyAutoGUIのhotkey関数で日本語文字列を入力しました。')
続いて、コマンドプロンプトを起動し、作成したプログラムを以下のコマンドで実行してみましょう。
python pyautogui-keyboard-copy.py
コマンド実行後、下の動画のようにメモ帳に「駆け出し物語」がキーボード入力された場合、「正常に作成したプログラムを実行できた」と判断できます。
以上が、「pyperclipのcopyで日本語を入力」となります。
上記6つのパターンが、PyAutoGUIでキーボード入力を自動化をする際によく使われます。
ちなみに、「PyAutoGUIでExcelやWordの操作を自動化する方法は?」や「Pythonを基礎から体系的に学ぶ方法は?」などを知りたい方には、以下の記事で紹介している本や教材がオススメです。
>> PyAutoGUIの入門に役に立つオススメ本や教材6選
【まとめ】PyAutoGUIによるキーボード入力自動化のパターン6選【最短5分】
いかがでしたでしょうか?
PyAutoGUIで「1文字」「文字列」「日本語文字列」「f5などの特殊キーやショートカットキー」のキーボード入力のプログラムと実行例を紹介し、以下の悩みを解決しました。
★悩み★
・PyAutoGUIでどのようなキーボード入力操作を自動化できる?
・ショートカットや特殊キー(f5など)といった複数キーの同時押しは可能?
・PyAutoGUIを使ってメモ帳に日本語を連続入力ってできる?
キーボード入力操作の自動化をしたい場合、PyAutoGUIを検討してみてください。
コメント