Use Nintendo Switch JoyCons as a virtual Xbox 360 controller in Windows
XJoy allows you to use a pair of Nintendo Joy-Cons as a virtual Xbox 360 controller on Windows. XJoy is made possible by ViGEm and hidapi.
XJoy is a free product that I work on in my free time, so any contributions are greatly appreciated.
Currently the newer versions containing analog support appear to have some issues. I recommend using the last version before analog support was introduced v0.1.8.
When you launch XJoy.exe, you should get output similar to this:
XJoy v0.1.0
initializing emulated Xbox 360 controller...
=> connected successfully
=> added target Xbox 360 Controller
initializing threads...
=> created report mutex
=> left Joy-Con thread started
=> found left Joy-Con
=> successfully connected to left Joy-Con
=> right Joy-Con thread started
=> found right Joy-Con
=> successfully connected to right Joy-Con
Right now all buttons are hard-coded to their "default" xbox equivalents. If you wish to
customize these mappings, feel free to modify the process_button
method in XJoy.cpp and
recompile yourself. I plan to add support for a configuration file and maybe a GUI in later
versions. The default mappings are shown below:
Joy-Con Button | Xbox Button |
---|---|
A | B |
B | A |
X | Y |
Y | X |
Left Trigger | Left Trigger |
Right Trigger | Right Trigger |
Left Shoulder | Left Shoulder |
Right Shoulder | Right Shoulder |
D-PAD | D-PAD |
Left Analog | Left Analog |
Right Analog | Right Analog |
Left Stick | Left Thumb |
Right Stick | Right Thumb |
Home | Start |
Capture | Back |
Plus | Start |
Minus | Back |
SL on Joy-Con (L) | A |
SR on Joy-Con (L) | X |
SL on Joy-Con (R) | B |
SR on Joy-Con (R) | Y |
If you wish to build XJoy yourself, simply install the ViGEm Bus Driver as outlined in the installation steps, open the XJoy.sln file in Visual Studio 2017, and build. Everything should work out of the box but if it does not feel free to submit an issue. Note that at least on my end it seems to be working in Visual Studio 2019 as well, which is good.