Pythonでキーボードを操作するPyAutoGUIによる自動操作マニュアル

## Pythonでキーボードを操作するPyAutoGUIによる自動操作マニュアル

PyAutoGUIは、Pythonからマウスやキーボードを自動操作できるライブラリです。

キー入力やマウスを使ったコンピューターの操作手法をGUIといいます。
いま行っている画面操作がそうですね。

PyAutoGUIでは、このGUI操作をコンピュータに自動的に実行させることができます:computer:

## PyAutoGUIを使うにはインストールが必要
〇前提条件
　Pythonの開発環境があること

まだPythonの開発環境がない方は以下の記事で、簡単に導入できます↓

https://qiita.com/umashikate/items/a612378f8eeb50d8dcfe

PyAutoGUIを使うには、プログラム実行前にライブラリのインストールが必要になります。

```:terminal
pip install pyautogui
```
Windowsの場合、上記のインストールを済ませてからプログラムを実行します。

```:terminal
pip install pyobjc-core
pip install pyobjc
```

Macの場合、さらに2つのライブラリも追加でインストールしておきます。

## キーボードを操作する関数
キーボードを操作するために使用する関数です。

| メソッド                   | 説明                             |
| -------------------------- | -------------------------------- |
| `pyautogui.press()`       | キーボードの`()`を押す             |
| `pyautogui.typewrite()`   | キーボードの`()`を順番にタイピング    |
| `pyautogui.hotkey()`      | キーボードの`()`を同時に押す       |
| `pyautogui.keyDown()`     | キーボードの`()`を押したままにする  |
| `pyautogui.keyUp()`       | キーボードの`()`を離す             |

### キーボードを操作する関数のイメージ
- pyautogui.press(‘キー’)は、キーボード上の指定したキーを1つ押す関数です。
- pyautogui.hotkey(‘キー1′,’キー2’)は、キーボードの複数のキーを同時押しできます。
- pyautogui.typewrite(‘文字列’)は、1文字以上の文字列を入力できます。

以下は、PyAutoGUIを使用して各キーを操作する際に使用できる表現です。


| キー            | 表現                                       |
| --------------- | ---------------------------------------- |
| 英字             | `'a'`, `'b'`, `'c'`, `'d'`, ...           |
| 英数字           | `'1'`, `'2'`, `'3'`, `'4'`, ...           |
| Ctrlキー         | `'ctrlleft'`, `'ctrlright'`               |
| Shiftキー        | `'shiftleft'`, `'shiftright'`             |
| Enterキー        | `'enter'`, `'return'`, `'\n'`             |
| Spaceキー        | `'space'`                                 |
| Backspaceキー    | `'backspace'`                             |
| Deleteキー       | `'delete'`                                |
| Altキー          | `'altleft'`, `'altright'`                 |
| Tabキー          | `'tab'`, `'\t'`                           |
| Escキー          | `'esc'`                                   |
| Homeキー         | `'home'`                                  |
| Endキー          | `'end'`                                   |
| Pauseキー        | `'pause'`                                 |
| CapsLockキー     | `'capslock'`                              |
| NumLockキー      | `'numlock'`                               |
| Insertキー       | `'insert'`                                |
| PrintScreenキー  | `'printscreen'`                           |
| Windowsキー      | `'winleft'`, `'winright'`                 |
| PageUpキー       | `'pageup'`                                |
| PageDownキー     | `'pagedown'`                              |
| 矢印キー(↑↓←→)   | `'up'`, `'down'`, `'left'`, `'right'`     |
| Functionキー     | `'f1'`, `'f2'`, `'f3'`, ... `'f12'`       |
| Volumeキー       | `'volumeup'`, `'volumedown'`, `'volumemute'` |

## 簡単なプログラム例
わかりやすく書いてみたプログラムの例です。

上から順番に実行されていきます。

```Python:search.py
import pyautogui  # PyAutoGUIライブラリをインポート
import pyperclip  # pyperclipライブラリをインポート（クリップボード操作用）
import time  # timeモジュールをインポート（時間待機用）

# ユーザーに検索クエリを入力するように要求
input_string = input("explorer search:")

# 入力されたクエリをクリップボードにコピー
pyperclip.copy(input_string)

# ウィンドウズキー（Winキー）と「s」を組み合わせて、Windowsの検索ボックスを開く
pyautogui.hotkey('winleft', 's')

# "explorer" というテキストを検索ボックスに入力
pyautogui.typewrite('explorer')

# Enterキーを押して、検索を実行
pyautogui.hotkey('enter')

# 5秒間待機（検索結果が表示されるのを待つため）
time.sleep(5)

# Ctrl+Vを使ってクリップボードの内容（ユーザーが入力した検索クエリ）を貼り付け
pyautogui.hotkey('ctrl', 'v')

# Enterキーを押して、クエリを実行
pyautogui.hotkey('enter')

# 2秒間待機
time.sleep(2)

# Tabキーを2回押して、最初の検索結果にフォーカスを当て、Enterキーを押して選択
pyautogui.hotkey('tab', 'tab')
pyautogui.hotkey('enter')

```

### プログラム実行方法
- コマンドプロンプトから実行
- マウスでファイルを選択して実行

今回はマウスでファイルを選択して実行します。

---

プログラムが実行されると以下のウィンドウが表示されます。

**input_string = input("explorer search:")** //ユーザーに検索クエリを入力するように要求

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958142/8d98dc8a-bf10-6a64-deb5-1809913cc87d.png)

「weather」と入力してみます。

**pyperclip.copy(input_string)** //入力されたクエリがクリップボードにコピーされます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958142/eb1bb946-9838-fc73-2bcf-7f16e5b0184e.png)

**pyautogui.hotkey('winleft', 's')** //ウィンドウズキー（Winキー）と「s」を組み合わせて、Windowsの検索ボックスが開きます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958142/2284799b-7de5-41c3-ded1-3d86461c49c4.png)

**pyautogui.typewrite('explorer')** //"explorer" というテキストを検索ボックスに入力

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958142/a4a9d611-8966-208d-b84e-30e8d72bc695.png)

**pyautogui.hotkey('enter')** //Enterキーを押して、検索を実行
**time.sleep(5)** //5秒間待機（検索結果が表示されるのを待つため）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958142/710fe10d-02f9-293c-9406-893f1418ca53.png)

**pyautogui.hotkey('ctrl', 'v')** //Ctrl+Vを使ってクリップボードの内容（weather）を貼り付け
**pyautogui.hotkey('enter')** //Enterキーを押して、クエリを実行
**time.sleep(2)** //2秒間待機

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958142/13c38fb0-ae03-c083-7362-e71707e5e94c.png)

**pyautogui.hotkey('tab', 'tab')** //Tabキーを2回押して、最初の検索結果にフォーカスを当てる
**pyautogui.hotkey('enter')** //Enterキーを押して選択されます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958142/64d5e77c-4883-8d04-b907-bccac0e6e814.png)

一番上に検索結果がきたウェザーニュースが表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2958142/de6596b8-0218-d7ab-f4a2-529f93c713dc.png)

少しキャプチャではわかりにくい部分もあると思いますが、誰かの参考になればと思います:smile: