Protokolアプリを使って Gamepad の入力をモニタリングしてみる【完走賞ゲット-9】

:::note info
※ [Qiita の完走賞をゲットするための条件は「単一／複数のカレンダーに投稿した記事が合計25」です](https://twitter.com/Qiita/status/1593441648796524545)
:::

この記事は、「[完走賞ゲットのため小ネタ 25記事を投稿しようとチャレンジ v2 Advent Calendar 2023](https://qiita.com/advent-calendar/2023/youtoy)」の 9日目の記事です。

## 今回の内容
この記事は、過去に以下の記事の中でも用いたアプリ「Protokol」に関する内容です。

- [mocopi のセンサーデータを「VRChat（OSC）」の送信フォーマットで PC に送ってサクッとモニタリング（Protokol アプリを利用） - Qiita](https://qiita.com/youtoy/items/c2cd8c3464fa4edda810)
- [Protokolアプリを使って MIDIデバイス（3種類）の入力をモニタリングしてみる - Qiita](https://qiita.com/youtoy/items/6a0b3a03ae8ba7e02514)

この「Protokol」というアプリはモニタリングができるアプリです。
以前は、その入力で扱える内容のうち「OSC」・「MIDI」を順に試していました。

今回は、まだ試せていなかった「Gamepad」を使ってみたという内容です。

### 公式での「Gamepad Tab」に関する説明ページ
Protokol の公式ページで、Gamepad Tab に関するページがあったので掲載します。

●Interface · Gamepad Tab · Protokol | hexler.net
　https://hexler.net/protokol/manual/interface-gamepad-tab

モニタできるイベントの一覧などが掲載されていました。
![Gamepad Tab1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/447a14cf-0b59-f05c-6574-18403e19935a.png)
![Gamepad Tab2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/be1bfbb4-43a5-ac6c-ab6d-42e9b917d6c9.png)

## 実際に試してみる
### 今回使うコントローラー
それでは、実際に以下のコントローラーを使って試してみます。

https://twitter.com/youtoy/status/1733594064963117255

#### 動作確認
念のため、Protokolアプリと別の手段で、軽く動作確認をしておきます。
ブラウザでアクセスして簡単に確認ができる「[Gamepad Tester（Check Controllers and Joysticks Online）](https://hardwaretester.com/gamepad)」というサイトで確認をしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/e71a980d-3baf-82a9-b502-60565b66097b.png)

軽く試した感じでは、特に問題はありませんでした。

### Protokolアプリの「Gamepad」タブを使う
Protokolアプリを使い、「Gamepad」タブを開き、ゲームパッドからの入力を確認してみます。

![「Gamepad」タブ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/ea4711fd-9c84-f6e4-72be-dccdca08d9b5.png)

モニタリングを開始するためには、以下の Enabled にチェックを入れます。

![Gamepad Tester](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/c32d9ea6-2087-e9ca-ad6f-648d1aa527d5.png)


#### コントローラー1
では、こちらのコントローラーから試していきます。

![コントローラー1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/fc1a9a4e-ed97-bae5-1be5-d77a60b22da8.png)

以下は、既に接続済みであったコントローラーを外して再接続した時の Protokolアプリでの出力です。
既に接続されたものを外した時は DISCONNECT、再接続した時 CONNECT が出力されていたのが確認できました。

![コントローラー1の接続](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/464cd08d-42d4-5534-f6ef-86ac2e05ddd6.png)

また、このコントローラーを試した際、自分がアナログスティックを操作してなくても、アナログスティック関連の値が出力され続けていました。

![コントローラー1で出てくる内容](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/b09e5968-ffe2-e3f6-1075-58ded20a94dd.png)

なお、上で試した [Gamepad Tester（Check Controllers and Joysticks Online）](https://hardwaretester.com/gamepad)」というサイトを使った際も、同じような挙動でした。

出力された内容を密路、TYPE・VALUE にアナログスティックの種別や、その値が出力されるのが確認できました。

#### コントローラー2
次に、残りのコントローラーを試していきます。

![コントローラー2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/7390b723-bef0-c712-d23d-57d507752bc7.png)

1つ目のものとは異なり、アナログスティックを操作してなくても、その値が出力され続けるという挙動は見られませんでした。

以下は、複数のボタンを単独で押していったり、アナログスティックを動かしてみたりした時の出力です。

![コントローラー2のモニタリング](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/8c0810e1-c353-d040-710f-6e0cd2f4633d.png)

TYPE・VALUE にボタン・アナログスティックの種別や、その値が出力されるのが確認できました。

## おわりに
Protokolアプリを使って Gamepad 2種の入力をモニタリングを試しました。

モニタリング機能を使うことで、簡単に Gamepad の入力を確認することができ、コントローラーを使った開発をする際に便利に使えそうです。