あかり描像のブログ

思ったことや学習記録を適当に書いていきます。お気軽にコメントください

Switch の JoyCon を Windows 10 で使う上で考えたこと

結論: 2022年9月時点での個人的な最善案は DS4Windows

やりたいこと

PC でゲームをする時に、Nintendo Switch の JoyCon (ジョイコン) を左右縦持ちで使ってみたいなぁと思い、そのやり方を調べました。
具体的に以下を実現したいと考えています。

  • Windows 10 で JoyCon を左右縦持ちで使いたい
  • スティックによるアナログ入力を認識できるようにしたい
  • できればジャイロセンサーも使いたい

Joy-ConBluetooth に対応しているため、PC に繋ぐだけであれば割とすぐできます。
しかし、Windows にデフォルトで入っているコントローラーのドライバー((PowerShell

control.exe /name Microsoft.GameControllers

と打つと出てくるもの。))はアナログ入力に対応しておらず、

  • 8 方向の認識しかできない
  • スティックをちょっと倒しても完全に倒したことになってしまう

といった難点があり、特に 3D ゲームを JoyCon で遊びたい時に操作が不自由になってしまいます。そこで、アナログ入力に対応したドライバーやツールを何かしら導入するなり自作するなりする必要性が出てきます。
この記事はそれをやるために考えたこと、奮闘したことの備忘録になります。


なんで JoyCon 使うねん!それ用のコントローラー買えや!と思われるかもしれませんが、

  • 純正コンにはそれなりの安心感がある
  • Switch Pro は (2022年では) 1万円するし、何やら白い粉が出るという噂がある
  • Xbox コントローラー (箱コン) は Microsoft 製で Windows との相性の観点で素晴らしいが、如何せんジャイロセンサーが搭載されていない
  • そもそも JoyCon でできるなら別のコントローラーを買いたくない, お金を掛けたくない

といった理由によるものです。
まぁ、早い話が貧乏性ですね*1

これから本記事にていくつかの非公式ドライバーを紹介しますが、この他にも数多くのソフトが開発されているはずです。
今回は自分が実際に使ってみたソフトとその感想を述べていきたいと思います。

考えたこと

vJoy + JoyCon-Driver

Vjoy setting
JoyCon-Driver - screenshot

ネット上の多くの場所で紹介されている方法です。

vJoy は仮想ゲームパッドとか呼ばれる類のソフトです。

オリジナルは Shauleiz さんによるもの ですが、サポート終了後から jshafer817 さんnjz3 さん と、様々な開発者によって fork されています。
導入は GitHub のリリースから好きなバージョンを選んでくるか、SourceForge から直接ダウンロードすればできると思います (詳しくは README 及び SourceForge をお読みください。)。

sourceforge.net

しかしながら、何度試してもインストールに失敗したというメッセージしか出ず結局断念。どこでエラったのかもよく分からない。

【2022/09/15 追記】
インストーラーが途中で止まってしまったものの、何とか導入できたみたいなので色々試してみました。

ただ、筆者の環境では、接続直後は特に問題ないものの、時間が経つにつれて遅延が目立つようになり、ゲーム性がなくなってしまうため実用には向かないかなぁいう気がしました。
他のドライバーとの依存関係もめちゃくちゃになってしまう印象を受けます。

BetterJoy

BetterJoy
screenshot

vJoy の次にこれを勧めている人が多い印象です。
導入や使用法は上記の README を参照してください。

ただ、これはインストール自体はできたものの

  • 「特殊なキー」以外のキーの割り振りを自由にできない
  • スティックのボタンを 2 回押すとコントローラーの持ち方が自動で変わる
  • 左右の JoyCon の間に無視できない遅延がある*2

等々、個人的にありがた迷惑な機能がそれなりにある上、解除するのも困難 (もしかしたら不可能) だったので、自分には合わないかなということで断念。

JoyToKey

使ってみて最も実用性を感じたのはこれ。
各アプリケーションにコントローラーをコントローラーとして認識させるのではなく、コントローラー側の各ボタンに対して key config を割り当てるタイプのソフト*3

左右の JoyCon を同一のものと認識させる手間も必要もないため、左右の間に遅延は (おそらく) ありません。


ただし、PC 側にコントーラーを認識させている訳ではないため、アナログ入力やジャイロセンサーを利用することは (多分) できません。

アナログ操作が欲しくなる 3D ゲームやジャイロセンサーが欲しくなる体験型ゲームなどには向かなそうですが、昔ながらのボタンキーのみで操作できるゲームをしたい時や、Windows などのショートカットキーを JoyCon のボタンで機能させたい時には便利かもしれません。
巷では、お絵描きの左手デバイスに JoyCon + JoyToKey の組み合わせが重宝しているという話も聞きます。

DS4Windows

github.com

DirectInput 形式を XInput に変換するためのツールです。

> これを説明する (TODO)

youtu.be

↑ DS4Windows がやっていることや導入方法については、こちらの動画が分かりやすいです。*4


もともと PS4 のコントローラーである DualShock 4 を Windows PC で使用するために開発された非公式ドライバーですが、最近は DualSense や Switch Pro, JoyCon にも対応できるようになっています。
驚くべきことに、2023年8月現在でも開発中らしく、DualShock3 や DualSence Edge にも対応したみたいです。凄いですね。

Jays2Kings さんによるもの がオリジナルですが、2016年10月に開発が終了しており、2022年現在では Ryochan7 さんによる fork を使うよう README に書かれています (DualSense や Switch のコントローラーに対応しているのもこっちです。)。


This version of DS4Windows is no longer maintained and will recieve no future updates. For a newer version and more updates, download Ryochan7's DS4Windows

【2024年2月25日追記】 Ryochan7 さんの fork も 2024 年 1 月で開発終了し、Version 3.3.3 の Release を最後に Public Archive となっていました。僭越ながら、本当にお疲れ様でした。


EOL release. Oh, I'm die. Thank you forever.

死なないで~


他のドライバーに比べて設定の自由度が段違いに高く、大体のことは実現できそうです。
アナログ入力、ジャイロ、両方いけます。「UDP Server」を利用すると、一瞬でキーコンフィグを済ませたりもできます。

一方で処理はやや重めです*5
Switch の JoyCon ではやはり左右に若干の遅延がありますが、それでもかなり使えると思います*6

XOutput

github.com

DirectInput を XInput へと変換するソフトにはこういうのもあるらしい。
私は試したことはありませんが、FYI、ということで。

比較のまとめ

【2023年8月16日追記】

感想を文章で綴っただけでは分かりにくいと思ったため、それぞれのソフトの使い勝手を独断と偏見で表にまとめてみました。

vJoy BetterJoy JoyToKey DS4Windows
導入しやすさ
左右の遅延 × ×
設定の豊富さ ×
アナログ入力 ×
ジャイロセンサー ×

多少の DS4Windows 贔屓が入っていますが、おおむねこのような印象です。

  • 導入自体はどのソフトも該当のページから該当のファイルをダウンロードしてくるだけなのでそこまでの差はないと思います。vJoy だけは環境に依存するかもしれないです (原因はよく分からないですが、エラーメッセージがほとんどないに等しいので解決も難しい)
  • 試していないので何とも言えないですが、左右の遅延は PC のスペックを上げれば多少解消される可能性があります。
  • BetterJoy は拡張性がほとんどないので個人的にはかなりマイナスです。ジャイロセンサーも使えないことはないですが、あんまり正確ではないです。DS4Windows であれば、ジャイロリセットの key config も割り当てることが可能な為、この点でも個人的に DS4Windows の株は上がっています。
  • もともとアナログ入力やジャイロを必要としないゲームに使う場合や、お絵描きや作業の際にショートカットキーを割り当てる外部デバイスとして JoyCon を使用する場合は JoyToKey が最強だと思います。左右を同時に接続しても遅延は感じませんでした。
  • 総合的に、DS4Windows の使い心地はかなりいいです。DirectInput を XInput へと変換する都合上、PC に若干の負荷が掛かってしまいますが、たいていのゲーミング PC を以てすればそれほど問題にはならないレベルだと思われます (ギリギリ動いているレベルのゲームでは目に見えて遅くなってしまいますが...)。JoyCon では左右の遅延がどうしても気になってしまいますが、最初から左右に分かれていない Switch Pro や DualShock4、 DualSense を Windows で使う場合はほとんど DS4Windows 一択と言ってもいいくらいだと思います。

番外

yuzu / steam

Ryujinx と並び最も性能の良いと言われる Nintendo Switchエミュレーター、yuzu。
Input Configuration がかっこよく、特に自分で設定することもなくちゃんと Joy-Con の入力を認識してくれている模様。
ただ、エミュ内では問題なく Joy-Con を使用できるものの、Windows 全体 (yuzu 外) での認識を手伝ってくれるものではないっぽい。頑張ればできるのかもしれないけど。

steam の方も、steam の中では申し分のないドライバーが搭載されているものの、その外の環境では全く使うことが出来ません。

余計なお世話

英語でググると大体同じようなことで悩んでいる方がいらっしゃいます。
日本語の資料は少ないですが、5 ちゃんねるのスレを覗いてみれば本質が書かれていることも多い気がします。

また、言うまでもないかもしれませんが、周りの強い人に訊くのが最も早いです。積極的に人に頼るのが吉だと思います*7

最近だと GPT4 に訊くのもいい手段かもしれませんね。

結論

じゃあ自分で作れよ

*1:結局、後に PS5 の DualSense を購入しましたが、かなり使い勝手が良いですね。バッテリーの持ちがあんまりよくないのが玉に瑕ですが...

*2:筆者の 8 世代 Core i5 , RAM 8GB 環境では体感 200 msec 程の遅延があります。それなりにスペックの高い PC を使えば解消されるのかもしれませんが、試していないため分かりません。

*3:言い方が分かりにくくてすみません。上記公式サイトの言葉を借りると、このソフトはコントローラーの入力をキーボードやマウスの入力に変換するものです。

*4:筆者が 2024 年 2 月 25 日に Version 3.3.3 の導入を試してみたところ、GitHub の Release にリンクされている「.NET 8 Desktop Runtime 」さえ導入しておけば、インストーラー (DS4Windows_installer_x64_v3.3.3.exe) を実行するだけで必要なソフトをすべて勝手に導入してくれました。.7z や .zip の方だともしかしたら ViGEmBus や HidHide 等の導入を自力でやらないといけないかもしれません (動画もその方法です)。インストール後に、実際にコントローラーを操作できるようにするには、コントローラーを WindowsBluetooth でペアリングした後、「HidHide Configuration Client」での設定をする必要がありますが、その手順もここで紹介した動画で説明なされています。

*5:筆者の 8 世代 Core i5, RAM 8GB 環境では、JoyToKey + Dolphin ではほぼ安定して 100% の動作速度を保てていた一方で、DS4Windows + Dolphin を動かすと動作速度が 60~70 % 程度になってしまいます。

*6:BetterJoy 同様、これも PC のスペック次第なのかもしれません。

*7:その点、何となく大学院での研究に似たところがあるように感じます。