BetterJoyMotion is no longer being updated. I am working on a hugely improved and expanded motion control application that will have a different name and different page. I'll link to it once I have a public release.
Your Joy-Con pair will work as an Xbox 360 controller, with the addition of being able to press buttons by moving the Joy-Cons.
Features:
- Use left and right joy-con motions to activate buttons
- Want to map horizontal swipes to light attacks, vertical swipes to heavy attacks and forward thrusts to special attacks? You can!
- Use SL or SR to modify the motion control behavior, or map them to buttons directly
Warning: This adaption of BetterJoy is entirely focused on motion controls with Joy-Con pairs. Other features that are not related to using Joy-Con pairs as an Xbox 360 controller may have been broken and other controllers are not supported/tested.
If anyone would like to donate to the original creator of BetterJoy, you can do so here.
- Install drivers
- Read the READMEs
- Run Drivers/ViGEmBus_Setup_1.16.116.exe
- Restart your computer
- Configure the .config file (preferably with an advanced text editor like Notepad++) or replace its content with one of the presets from the preset folder. Otherwise no motion controls will be mapped
- Run BetterJoyForCemu.exe If it crashes, there is likely an issue with your .config file and you should start over with one of the presets
- Connect your Joy-Cons Always ensure that the right Joy-Con is connected first and the left Joy-Con is second, or there will be button issues
- Test whether your motion controls work in-game or in your browser.

This is the only correct order of joy-cons in BetterJoyMotion
Heaven.Studio.GithubHD.mp4
God.of.War.github.mp4
FF7R.dance.github.mp4
hi-fi.guitar.for.github.mp4
Yakuza.6.SD480.+.mp4
Ryse.Github.mp4
Go to the Releases tab!
Download all-in-one configurations for specific games from my Nexus Mods page
Instructions on how to configure the motion controls are within the .config file.
You can check out the out the wiki for more information about how to use the general version of BetterJoy, which may or may not be useful for using BetterJoyMotion.
BetterJoyMotion succeeds my previous motion control application, which lacked the thumstick and rumble support that BetterJoy provided.
This is a passion project of someone who can't code. I only managed to get it working by using ChatGPT and dozens of hours of trial and error. Any help from actual coders would be greatly appreciated. Freelancers are welcome to apply for modest compensation.
Version 0.8 takes care of all the basic functions and some extras. There are still two major functions I want to add, but they have thus far proved too difficult. I also have various other cool features in mind, but it could take years to accomplish. I'm honestly hoping Steam, reWASD or other remapping tools end up implementing their own motion control support so I can retire.
The future of the project also greatly depends on the compatibility of new superior motion controllers (like of the Switch 2), as they might make the regular Joy-Cons obsolete.
WARNING: the bluetooth signal of joy-cons is quite weak and tends to require a strong signal from your computer to compensate for it. Tiny bluetooth adapters and certain internal bluetooth connectors may not be sufficient. It's better to get a bluetooth adapter that has an antenna sticking out of it. BT 4.0 adapters also tend to be more compatible with joy-cons than BT 5.0 adapters.
- Hold down the small button (sync) on the top of the controller for 5 seconds - this puts the controller into broadcasting mode.
- Search for it in your bluetooth settings and pair normally. I advise you to pair the right joy-con first for an easier experience with BetterJoyMotion
- To disconnect the controller - hold the home button (or capture button) down for 2 seconds (or press the sync button). To reconnect - press any button on your controller.
- Plug the controller into your computer. (controllers other than joy-cons are not supported/tested in BetterJoyMotion
- Go into "Bluetooth and other devices settings"
- Under the first category "Mouse, keyboard, & pen", there should be the pro controller.
- Click on it and a "Remove" button will be revealed.
- Press the "Remove" button
Note: My version is identical to the latest official BetterJoy, except for changes to joycon.cs and App.config
- If you didn't already, install Visual Studio Community 2019 via the official guide. When asked about the workloads, select .NET Desktop Development.
- Get the code project via Git or by using the Download ZIP button.
- Open Visual Studio Community and open the solution file (BetterJoy.sln).
- Open the NuGet manager via Tools > NuGet Package Manager > Package Manager Settings.
- You should have a warning mentioning restoring your packages. Click on the Restore button.
- You can now run and build BetterJoyMotion.
- Download Visual Studio Build Tools via the official link.
- Install NuGet by following
the official guide.
You should follow the section for nuget.exe.
Verify that you can run
nuget
from your favourite terminal. - Get the code project via Git or by using the Download ZIP button.
- Open a terminal (cmd, PowerShell, ...) and enter the folder with the source code.
- Restore the NuGet dependencies by running:
nuget restore
- Now build the app with MSBuild:
The available values for CONFIGURATION are Release and Debug. The available values for PLATFORM are x86 and x64 (you want the latter 99.99% of the time).
msbuild .\BetterJoy.sln -p:Configuration=CONFIGURATION -p:Platform=PLATFORM -t:Rebuild
- You have now built the app. See the next section for locating the binaries.
The built binaries are located under
BetterJoyForCemu\bin\PLATFORM\CONFIGURATION
where PLATFORM
and CONFIGURATION
are the one provided at build time.
All credit goes to:
Davidobot for creating the fantastic BetterJoy and answering my long-winded questions, as well as everyone who helped create and improve it
tomayac for creating chrome-dino-webhid and helping me understand motion programming a bit better.
SuperLouis64 for representing the fun of motion controls on YouTube.
Harmonix for creating Super Beat Sports, which planted the seed in my mind to use motion controls in this way.
This code also would not have been possible without ChatGPT.