続・パッド操作自動化アプリ

作りかけのほったらかしが気持ち悪かったのと、Nintendo Switchに対応したので公開します。

これは何?

C#スクリプトでゲームパッドの操作ができるWindows用アプリです。

何ができるの?

C#スクリプトで以下の操作ができます。

  • PCの操作
    • PCに接続した仮想ゲームパッドの操作
    • アクティブウィンドウのキャプチャと関連操作
  • Nintendo Switchの操作
    • Nintendo Switchに接続した仮想ゲームパッドの操作(Bluetooth接続)
    • PCに接続したキャプボ映像のキャプチャと関連操作
    • PCに接続したゲームパッドでの仮想ゲームパッドの操作

使い方

なんとなくで判りずらい部分のみ記載します。細かいことは質問など来たら追記します。

アプリの起動

KSMH.exeを実行してください。

スクリプト実行

エディタ部分にC#スクリプトを書いて開始ボタンを押すだけです。

上のテキストエリアがスクリプトエディタ、下のテキストエリアがログ表示エリアです。

組み込み処理の使い方

グローバル変数ksmhに実装しています。コード補完で各メソッドの説明を参照してください。

仮想パッドの接続

スクリプトで操作する仮想ゲームパッドの接続方法です。

PC用パッドの場合
  1. 使用するためのセットアップを済ませる
  2. ツールバーの「コントローラ」で「Xbox360」を選択する
  3. 接続ボタンを押す

セットアップについては後述の「動作要件」を参照してください。

Nintendo Switch用パッドの場合
  1. 使用するためのセットアップを済ませる
  2. Nintendo Switchの「持ち方/順番を変える」画面を開く
  3. ツールバーの「コントローラ」で「Nintendo Switch」を選択する
  4. 接続ボタンを押す
  5. NintendoSwitchで仮想パッドが認識されるまで待つ

セットアップについては後述の「動作要件」を参照してください。

キャプチャ

スクリプトで操作するキャプチャデバイスの設定方法です。

PC画面(アクティブウィンドウ)のキャプチャ
  1. ツールバーの「キャプチャ」で「ウィンドウ」を選択する
キャプボ(Nintendo Switch)のキャプチャ
  1. PCにキャプボを接続する
  2. 設定画面で使用するキャプボを選択する
  3. ツールバーの「キャプチャ」で「映像デバイス」を選択する

この状態で「プレビュー」ボタンを押せばキャプボのキャプチャを確認できます。

設定

スクリプト実行時にディスプレイの電源オフを抑止する

PCを長時間放置したときにディスプレイの電源が自動でオフになるのを抑止します。

コントローラの接続時に再接続を試す

Nintendo Switchの「持ち方/順番を変える」画面を開かずに仮想ゲームパッドの接続ができるかチャレンジします。 2回目以降のパッド接続で有効になります。 失敗時は「持ち方/順番を変える」画面での接続が必要です。

接続の状況はステータスバーの「コントローラ」で確認できます。

状況 意味
未接続 接続ボタンを押す前の状態
接続開始 Nintendo SwitchとのBT接続を開始
接続中 再接続にチャレンジ中
ペアリング待機中 「持ち方/順番を変える」画面での接続待ち状態
接続完了 Nintendo Switchとのペアリング完了

現状は成功率が十分に高くありません。 失敗した場合は繰り返しても接続できる見込みは薄く、かつ何度も失敗を繰り返すとNintendo Switchの再起動まで接続不可になる点に注意してください。

パッド設定

PCに接続したゲームパッドでNintendo Switchの仮想ゲームパッドを操作するためのマッピング設定です。

ボタン設定は対応するボタンを押してください。L/Rスティックの軸設定はX軸は右方向、Y軸は上方向を入力してください。

ダウンロード

Dropboxの共有フォルダからダウンロードしてください。

www.dropbox.com

動作要件

PC用パッドを使用する場合

ViGEm Bus Driverが必要です。 以下のリンクから「ViGEmBus_1.22.0_x64_x86_arm64.exe」をダウンロードし、インストールしてください。

github.com

Nintendo Switch用パッドを使用する場合

BTStackがサポートするチップセットを搭載したBluetoothドングルと、WinUSBドライバのインストールが必要です。 言い換えればNX Macro ControllerでNintendo SwitchとのBT接続ができる状態にしてください。*1

私はこれを使用しています。

www.elecom.co.jp

Nintendo Switchで画像キャプチャする場合

NintendoSwitchをキャプチャできるキャプチャデバイスが必要です。

その他

スクリプトの書き方は?

言語にC#スクリプトを採用しているので基本的なことはC#(ver7.3)の文法を調べてください。 質問などが来たら説明記事を書きます。

当面は以下のサンプルスクリプトを参照してください。*2

hiroaki362.hatenablog.com

nxcon.dllについて

Nintendo Switchとの接続はみずようかん氏のbtkeyLib.dllを元にしています。

github.com

使用上の注意・免責事項等

  • 本ツールおよびその使用結果の正確性、有用性、確実性等について、作者は一切保証するものではありません。
  • 作者は、本ツールまたはその使用結果の利用により利用者または第三者に生じた損害や不利益について一切その責任を負いません。
  • 作りかけなので組み込み処理の互換性は保証できません。

*1:詳細は質問があれば追記します。

*2:古いサンプルなので一部動かないものがあります