キーボード操作をPythonで自動化する
この記事はProgate Path コミュニティ Advent Calendar 2023 12/10の記事です。
事の顛末
友人と◯ver Watchというゲームで遊んでいた際に、遊んでいたうちの一人が面白いボイス[1]を発見してしまったために、それを連続で流すという遊びが始まりました。
その友人はCapsLockに該当のキーコンフィグを割り当てていたためボイスを流すためには薬指を使う必要があるのですが、例えばQやAなどは多くの場合薬指で押すことになるため、ゲーム内の移動やスキル使用がままならなくなる、という問題が発生します。
この問題は、プログラムによって「CapsLockを押した」という命令を定期的に送信することによって解決できそうです。
そんな感じにできそうなものをggってみると、PyAutoGUIというものが見つかりました。
PyAutoGUI
PyAutoGUIはマウスやキーボードの操作を自動化することを目的としたライブラリです。
ただマウス操作やキー入力をするだけでなく、スクリーンショットの取得やアプリケーションウィンドウの移動、サイズ変更など様々な操作が行えるようです。
実装
import pyautogui
while True:
pyautogui.press("capslock", interval=5.0)
これだけです。簡単ですね。
もはや解説する要素もほとんどないんですが、「capslockというキーを、5秒間隔で実行する」という操作をしています。
注意点
その1: GUI環境でのみ動作可能
PyAutoGUIはあくまでGUI環境でのみ動作します。そのため、WSL環境で開発をするとデバックができないという状態に陥ります。
この程度のコードであればデバッグするまでもないですが、ある程度大きめの自動化スクリプトを書く場合ははじめからGUI環境で開発するなど工夫をしたほうが良いなと感じました。
その2: クロスコンパイルができない
もはやPyAutoGUIの問題ではなくPythonそのものの話になってきますが、Pythonはクロスコンパイルに対応していません。WSL環境やLinuxで開発をしている場合でも、exeバイナリを作成するためにはWindowsでする必要があるので注意が必要です。
終わりに
このプログラムは一日で役目を終えました(悲しい...)
今回作ったプログラムは本当に単純なものですが、例えば「日課のネットサーフィンをマウスやキーボードを触ることなく終える」など、日常で自動化できることはたくさんありそうです。この機会に、日々の操作を目で追いながらコーヒーを啜る優雅な生活をはじめてみてはいかがでしょうか(?)
Discussion