最近同じような操作しているな、と思ってきました。
ちょっとこの操作を自動化出来ないかな?と思い立ち調べてみたところ、
Pythonでキーボードやマウスを自動で入力する方法を発見!!
流石Python!!
ということで、今回はPythonを利用してキーボードを自動入力する方法を備忘録としてまとめようと思います。
■環境準備
ではまずは環境を構築していきます。
用いるPythonのバージョンですが、
Python 3.7.4
です。
キーボードやマウスを自動で操作するにあたり、
PyAutoGUI
を用います。
【PyAutoGUIとは?】
Pythonスクリプトでマウスとキーボードを制御して、他のアプリケーションとの対話を自動化できます。APIはシンプルになるように設計されています。
PyAutoGUIは、Windows、macOS、およびLinuxで動作し、Python2および3で動作します。
PyAutoGUIにはいくつかの機能があります。
・マウスを動かして、他のアプリケーションのウィンドウをクリックします。
・キーストロークをアプリケーションに送信する(たとえば、フォームに入力するため)。
・スクリーンショットを撮り、画像(ボタンやチェックボックスなど)を与えて、画面上で見つけます。
・アプリケーションのウィンドウを見つけて、移動、サイズ変更、最大化、最小化、または閉じます(現在、Windowsのみ)。
・アラートボックスとメッセージボックスを表示します。
※参考:https://pyautogui.readthedocs.io/en/latest/keyboard.html
ではPyAutoGUIをインストールします。
インストール方法はこちら。
pip install pyautogui
これで環境構築は完了です。
■キーボード入力自動化
では、キーボード入力を自動化していきます。
今回実施する内容ですが、
メモ帳を開き、
Hello World
Hello PyAutoGUI
good by
と入力することを自動化していきます。
コードはこちら。
import pyautogui import time def testKey(): pyautogui.press('win') pyautogui.write('notepad') time.sleep(1) pyautogui.press('enter') time.sleep(1) pyautogui.write('Hello World', interval=0.1) pyautogui.press('enter') pyautogui.write('Hello pyautogui', interval=0.1) pyautogui.press('enter') pyautogui.write('good by', interval=0.1) pyautogui.press('enter') pyautogui.alert('Finish.') testKey()
では解説していきます。
まず、
pyautogui.press関数は引数で与えられたキーボード上のボタンを押下する処理が実行され、
pyautogui.write関数では、write関数に与えられた引数の文字列を入力する処理が実行されます。
このため、
pyautogui.press('win')
だとwindowsボタンが押下され、
pyautogui.write('notepad') time.sleep(1) pyautogui.press('enter')
にてwindowsボタンで表示される検索画面にnotepadが入力され、
enterキー押下によりメモ帳が開きます。
その後、
pyautogui.write('Hello World', interval=0.1) pyautogui.press('enter') pyautogui.write('Hello PyAutoGUI', interval=0.1) pyautogui.press('enter') pyautogui.write('good by', interval=0.1) pyautogui.press('enter')
にて、
Hello World
Hello PyAutoGUI
good by
を入力していきます。
ここで、pyautogui.write関数のintervalですが、入力の速度を意味しています。
今回は0.1秒ごとに一文字ずつ入力するコードにしています。
最後に、
pyautogui.alert('Finish')
にて完了したことをポップアップのメッセージとして表示します。
■その他のキーボード自動入力コマンド
pyautogui.write関数やpyautogui.press関数以外にも、
キーボードを入力した状態にする
pyautogui.keyDown
キーボードを話した状態にする、
pyautogui.keyUp
があります。
例えば、
pyautogui.keyDown('ctrl') pyautogui.press('v')
を実行するとペースト作業が実行できます。
また、ショートカットを実行するのであれば、
pyautogui.hotkey('ctrl', 'v')
が利用できます。
また連続でキーボードを入力する場合には、
pyautogui.press(['left', 'left', 'left'])
といったように配列で記載することも出来ます。
こちらのコードでも連続で入力することが可能です。
pyautogui.press('left', presses=3)
■対応キーボード文字名
公式に対応(使用)出来るキーボードのキー名が掲載されていたので転記しておきます。
['\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']
※参考:https://pyautogui.readthedocs.io/en/latest/keyboard.html
■最後に
今回はPyAutoGUIを用いてキーボードの入力を自動化する方法についてまとめました。
次回はマウスの自動操作についてまとめたいと思います!!
キーボードが自動入力できるのは使いかたによっては便利ですね!!
アプリやツールにAPIが搭載されておらず、どうしてもマウス+キーボードでしか操作出来ない場合でも自動化できますし。
PyAutoGUI公式HPのFAQに書いてあったのですが、キーボードやマウスロガーはないようです。
こちらは自前で用意するしかなさそうですね。
ロガーについても方法調べたり、検討してみようかな?