memomem

備忘録・メモ置き場

仮想Joystick入力 vJoy, キーリマッピングを行うUCR

仮想的ににJoystickを作成し、Unity上でJoystickの出力を制御したい。 主な用途としては、

  • デバッグジョイスティックを動かす
  • ゲームを仮想JoystickでUnity側から制御
  • Unityへの通信を元に仮想Joystickの出力を行う

などを想定。

調べたところ、vJoyというのがSDKも公開されていて使いやすそう。(winのみ)

vjoystick.sourceforge.net

vJoySetup.exe を実行でインストール。仮想デバイスとして入力機器が表示される。

vJoyFeeder (Demo) - 仮想ジョイスティックの出力を行うアプリ
Monitor vJoy - vJoyへの入力を見るモニター

vJoyは主にRPGとかのレベルあげだったりマクロみたいな感じでも使われているよう。

仮想パッドvjoy SDKのテスト | 自動マクロプログラミング

github.com

このあたりも参考に。

開発は、

github.com github.com

このあたりを使うのが良さそう。

どちらもほぼ同じだが、vGenの方が汎用化されているようなのでおすすめ。

vJoyの出力はDirectInputになる。
Unityからは問題なく取得できるが、最近のゲームをvJoy経由で動かそうとするとxInputで無いので動かせない。

そこで、DirectInput から xInput への出力変換を行う。 調べると、x360ce Xbox 360 Controller Emulator がよく使われているようだが、対応するゲームが決まっている為、別の手段へ。

UCRを発見 www.autohotkey.com

github.com

medium.com

インストール Releases · evilC/UCR · GitHub 後、UCR.exe を立ち上げて、IO Class > vJoy > Install SCPVBus を選択する。

アプリをリスタートすると、仮想デバイスが認識される。仮想デバイスを使用するときは常に UCR.exe を立ち上げておく必要あり。

その後、InputとOutputのマッピングを行っていく。

疑問

vJoyでvXbox が仮想xInputの出力だと思うが、使い方がイマイチわからなかった。これ使えばUCRは必要なくそのままxInput出力できそうではあるが。

結論 vGenを使うのが良い

vGen/Program.cs at master · shauleiz/vGen · GitHub UCR使わないと、vJoyでxInput使えないかと思っていたけれど、vGen使うとDevType type = DevType.vXbox でUCRと同じくデバイスが認識される。 こっちを使ってxGenで開発する方が使い勝手良さそう。

後日、vJoyを別なマシンにインストールしたが、Setupが99%から全く先に進まなかった。仕方ないので強制終了。気がかりではあるがインストールには問題なさそうで正常に動作はする。

vJoyの設定

Configure vJoy アプリで、vJoyの出力設定(ボタンの個数など)を変更することが出来る。変更後は、再起動を求められるので再起動を行う。再起動後、vJoyに設定が反映される。