davidobot / betterjoy Goto Github PK
View Code? Open in Web Editor NEWAllows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput
License: Other
Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput
License: Other
Hi,
First of all, good job on making this app, it's very helpful!
I wanted to ask if there's a way to use the joycons as two separate controllers in cemu.
Nintendo Switch Controller ZL & ZR Buttons incorrectly Registered as Z axis buttons.
The Z Axis represents movement up and down in terms of a Wii remote controller.
ZL and ZR on the Switch Pro controller do not relate to directions as they are just buttons as opposed to joysticks/directional pads.
Due to this, I have been unable to use them in programs such as Citra as they will exhibit weird qualities. (Constantly remained pressed) It'd be nice to be able to use ZL and ZR instead of L and R for games as they are a much larger button and are easier to hit.
Side note: Thanks for the hard work creating this and give me a holler if you want some help testing things. I'm a Software Engineer myself.
Hey thanks a lot for create this app... Look the rumble doesn't working in this version.
Has this been tested to actually work in the latest build? Although the config file is set to true, the joycon button labeled "A" is still recognized as a "B" X360 button.
Let me know if there's anything I can provide to help debug this...
No matter what i do I seem to be unable to uninstall the software, the installer just keeps on telling me that I'm not running it as an admin. I've tried basically everything i can find thus far but it doesn't seem to be working.
Thanks for any help anyone might provide.
nope I'm a big dumdum
Seriously though I must I've done something hilariously wrong cause I've managed to fix it by re downloading the software, you now, computer solution No2 right after "turn it off and on again"...
I'm an actual moron...
So I wanted to know if it's posible to make BetterJoyForCemu to only emulate the gyro, disabling the xinput emulation, just sending the motion data to the server
( first I wanted to appologie if I make mistakes, i'm not very good in English)
My issue is : when I start cemu and "better joy for cemu" I can't bind any key in my input settings,
I thought that my pro controller was not recognized by my computer but I've checked and it seems that everything is fine.
I've even deleted and downloaded cemu again, but nothting has changed.
I hope you will be able to help me.
Everything seems to be working just fine however, I can't map the L, LZ, or - buttons or the d-pad in the input settings. Weirdly enough, the left joystick has no problem and I'm able to map it with no issue.
In version 1.51b, the controller turns on once the program is opened and stays on until closed, but in 2.0 the controller stays on for only a second.
Gyro is only working "fine" vertically if I move it horizontlly, it moves just a little bit, its working fine on the switch, Already tried calibrating the gyro too, no luck
So thanks for this new version, rumble work perfectly but the buttons, i don't understand...
Home and share buttons still doesn't work and are assignated to "number?" i can assign them to keyboard, but i want assign them to the show screen and blow mic.
Is this a bug, or me i not correctly understood what to do?
(PS: The home button by default activate the XBOX DVR i don't know why?)
I want to use left joycon + mouse so left joycon should be fine but I want to map the extra buttons on my mouse to keyboard and use this program to translate that keyboard input to controller/xinput. Is this possible?
While playing BOTW my Joy Cons were glitching - the control sticks stayed at the same place for more than a second after releasing them and were unusable.
Helllo there,
great work on this one. This is definitely my favorite Pro Controller and Joycon drivers, worked flawlessly right after download. However, there is a feature I would like to request. I'm using the controller on Dolphin 5.0, however the rumble motors are not working with it. Could it be possible for you to implement a system wide "standard" rumble feature?
Thank you so much anyway for this piece of software
I don't know if this applies to the right stick too, but using Smash for Wii U's control configuration screen, I was able to record a demonstration.
Let me explain what I'm doing here: First I unpause and take my hands away from the controller, and mario starts moving slowly left. I then slowly push the left stick up and to the right a bit to make him stop. I then pause and enable A+B side smash attacks, so I don't have to press the stick at all. A side smash attack can be angled up, straight, or down, depending on the angle the stick is at, and in this case, it is going down, without even touching the sticks.
I should note that I've only tested this on USB input mode, since I have no way of testing bluetooth.
I hope this is enough information, since I actually cannot tell how offset the stick is.
I've been trying to map the buttons for cemu but they wont show up and my joycon act like a mouse and keyboard.
Hello, I really wanted to thank you for this feature as it makes cemu that much better.
Sorry if this not the place for this question I'm quite new to github.
I was wondering if it's possible to use multiple switch pro controllers with this tool, even if only one get the motion controls, as I have the switch pro controller and two Xbox one controllers and I want to get the forth controller for cemu retroarch etc... If another switch pro controller would work as good with this tool, so that way I could use both controllers with the switch and the pc, if not I will possibly buy either another Xbox one controllers or and 8bitdo sfc30 pro which should work with everything as well.
I'm using an Asus 4.2 BT dongle through virtual usb here and it is working flawlessly.
Thank you so much for this.
I have just set up The Legend of Zelda: Breath of the Wild for Cemu use (as I own the game on my Nintendo Wii U, but not my Nintendo Switch, and don't have my Wii U at home right now), and so I want to try using a pair of Nintendo Switch Joy-Cons when playing it (for the sake of gyroscope stuff), so I downloaded and ran version 2b of this tool/program. (Edit: And I'm using Cemu 1.11.5d and CemuHook 0.5.6.3.)
But just a few minutes into the game (when going to change the camera sensitivity to Very Fast), I noticed that when I press the left D-Pad button on the left Joy-Con, the camera speed option goes to the right instead of the left, and vice versa for the right D-Pad button. After getting some inventory items, I can confirm that the inventory cursor/selector also moves right instead of left, and vice versa, when using the D-Pad.
At first glance, all other buttons (including the up and down D-Pad buttons) seem to be mapped correctly. I have not done anything to the control bindings within Cemu (the controls are set to use a keyboard, not either of the Joy-Cons, and the control bindings are all left blank).
~
TL;DR: On the left Joy-Con, the left and right D-Pad buttons seem to have been mapped to each other's corresponding D-Pad direction of the Cemu Gamepad.
Is it possible to use BetterJoy with ViGEm installed from NuGet, and if so, could instructions be added? Thanks.
I installed the drivers and connected the controller. Also restarted but i keep getting this message.
Pro controller connected.
Unhandled Exception: System.FormatException: Input string was not in a correct f
ormat.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffe
r& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo in
fo)
at System.Byte.Parse(String s, NumberStyles style, NumberFormatInfo info)
at BetterJoyForCemu.JoyconManager.Awake() in C:\Users\Grigor\source\repos\Bet
terJoyForCemu\BetterJoyForCemu\Program.cs:line 88
at BetterJoyForCemu.Program.Main(String[] args) in C:\Users\Grigor\source\rep
os\BetterJoyForCemu\BetterJoyForCemu\Program.cs:line 222
Every time I have launched the application, it has always recognized my Joycons and synced them as one controller. However, They do not register as controllers on Cemu and I am pretty sure it pertains to the fact that the application is not able to "start the server", for whatever reason. If you guys have any possible solutions please contact me, it'll be much appreciated.
I have had an issue in which when I uninstall the program the Pro Controller can't register input anymore.
It does not come up when I look at gamepads. The only way to use it again is if I run the program. I am running windows 10.
Trying to get this setup but under GamePad Motion Source, it always says DSU: DISCONNECTED
Running 1.11.3, Betterjoy v4 and cemuhook 0.5.6.4
I ran pad test and it was able to see the motion controller working.
Cemu Input Settings are set to a profile, and I can configure the buttons and rumble there with input/feedback from controller.
In BetterJoy the server is set at 127.0.0.1:26760
And cemuhook.ini is
[Input]
motionSourceIsBtnSource = true
serverIP = 127.0.0.1
serverPort = 26760
What am I missing?
Steps to reproduce:
Connect Pro Controller to PC
Open Dolphin
Enable "extended" dual-screen setup
-application will now look as though it's functioning but not receive any inputs
Attempt to exit application
Application hangs
Any attempt to start it back up will crash it with an unhandled exception
Hello.
for a long time, I really wished to play cemu with gyro. thus, I bought Pro Controller at online shop. but, sadly, it is not original but similar. (I found it later. product link is below)
however, people says it is very compatible it's original one so I hoped that it works fine.
and finally, I received the item today and I tried to connect Pro controller to my labtop via bluetooth. Pairing and connecting was okay but, some errors are shown on betterjoyforcemu_v4 described below.
Left Joy-Con connected.
Only one joycon found. Please connect both and then restart the program.
Using factory stick calibration data.
Starting poll thread.
Could not start server. Make sure that only one instance of the program is running at a time and no other CemuHook applications are running.
All systems go
issue 1.
My one is Pro-controller but betterjoyforcemu_v4 says only Left Joy-Con is connected.
issue 2.
at the first time, It was able to start server. but after several times installing and un-installing many versions of betterjoyforcemu, It was not able to start server.
can I have any solution for this?
thanks for listening to my problem.
My gyroscope are slipping, botw, on botw, that were the same on botw Switch but only hip and 1sec max and it stop After that (but that slower than on the Switch).
Moreover the gyroscope sensitivity is way too low too being usable.
Siret if my words are rude but learn french is way easer than english <( -°- < )_
First of all, thanks for adding steam controller(xinput) support. So I've been using this program for a xinput controller for a while now. However, I encountered an issue on a specific game(Valkyria Chronicles) wherein it detects both the wireless gamepad(direct input) and xbox controller(xinput) at the same time resulting in erroneous inputs. Is it possible to add a feature that hides the pro controller or mask/hide the direct input? Thank you very much!
Upgraded tonight. When it starts it throws this error and ends.
Unhandled Exception: Nefarius.ViGEm.Client.Exceptions.VigemBusNotFoundException: Exception of type 'Nefarius.ViGEm.Client.Exceptions.VigemBusNotFoundException' was thrown.
at Nefarius.ViGEm.Client.ViGEmClient..ctor() in C:\Users\Grigor\Downloads\ViGEm-master\ViGEm-master\NET\ViGEmClient\ViGEmClient.cs:line 25
at BetterJoyForCemu.Program.Main(String[] args) in C:\Users\Grigor\source\repos\BetterJoyForCemu\BetterJoyForCemu\Program.cs:line 209
Cheers
Hi I would like to report an error I get when I try to open v4 of the software.
I did a clean install of the driver on a new computer, it worked the first time. But after I closed and re-opened I get the following error:
https://i.imgur.com/bRsVhrs.png
I am using the latest version of Windows 10, I am guessing that this has something to do with the April update. Note that the previous version (v3b) works just fine without reinstalling the driver.
These are the details:
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.InvalidOperationException: Service HidCerberus Service was not found on computer '.'. ---> System.ComponentModel.Win32Exception: The specified service does not exist as an installed service
--- End of inner exception stack trace ---
at System.ServiceProcess.ServiceController.GenerateNames()
at System.ServiceProcess.ServiceController.get_ServiceName()
at System.ServiceProcess.ServiceController.GenerateStatus()
at System.ServiceProcess.ServiceController.get_Status()
at BetterJoyForCemu.Program.Start()
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3056.0 built by: NET472REL1
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
----------------------------------------
BetterJoyForCemu
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/savio/Downloads/BetterJoyForCemu_v4_x64/BetterJoyForCemu.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3056.0 built by: NET472REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3056.0 built by: NET472REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3056.0 built by: NET472REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Net.Http
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3056.0 built by: NET472REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Net.Http/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Net.Http.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3056.0 built by: NET472REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3056.0 built by: NET472REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3056.0 built by: NET472REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.ServiceProcess
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3056.0 built by: NET472REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.ServiceProcess/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.ServiceProcess.dll
----------------------------------------
Nefarius.ViGEmClient
Assembly Version: 1.14.3.0
Win32 Version: 1.14.3.0
CodeBase: file:///C:/Users/savio/Downloads/BetterJoyForCemu_v4_x64/Nefarius.ViGEmClient.DLL
----------------------------------------
System.Numerics
Assembly Version: 4.0.0.0
Win32 Version: 4.7.3056.0 built by: NET472REL1
CodeBase: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
Hi,
This issue happens while using Pro Controller via USB connection.
It is exactly same as MTCKC/ProconXInput#2 (it also occurred on my computer), then the developer of ProconXInput fixed it in a newer version. (However ProconXInput itself lacks some key features and has other problems, so I want to use BetterJoyForCemu.)
https://www.reddit.com/r/cemu/comments/84pmt8/switch_pro_controller_and_joycons_now_support/dvrjh07/
This user from Reddit had this problem, too.
BTW, when using BetterJoyForCemu, there are 2 controllers in my "Game Controller" settings.
The one called "Controller (XBOX 360 For Windows)" works as expected, but another one, "Wireless Gamepad" shows totally random behaviors. This makes Steam's Big Picture Mode and some games can't work.
Hopefully this can be fixed. Thank you!
I know I am supposed to install drivers, but I am not sure where I am supposed to look into.
Also, I don't see "BetterJoyForCemu.exe" in the file folder anywhere.
Thanks
I disconnect the controller by pressing the sync button once. When trying to reconnect by pressing other buttons, BetterJoyForCemu does not recognize the already paired controller.
Help I've tried everything.
Hello,
Thanks a lot for this application!
But before i used my pro controller and i could use the home button and the share button (the share button: mic and home button: showscreen), but yet with this application i can't asign them, the controller work only if i activate "also use for button/axis", so it is possible to asign them to those buttons because here they are useless.
Hi and thanks for this great piece of software. Using a Switch Pro controller for Breath of The wild and having gyros at the same time completes my emulation experience as I am not great with aiming with a joystick.
I have a few requests for future updates. Some are probably already on the list, I haven't really checked much.
My pro controllers seem to have a very slight drift to the right, I've tested it with two different controllers, this doesn't seem to affect my joy cons. Here's a picture showing the issue, the first controller is a pro, the second two are joy cons. I didn't touch any of the controllers once it started, the pro drifted to that position by itself. Also, excellent work on the program, I had been waiting for something like this but didn't think anyone would actually make it!
Hi I'm just curious if you thought about adding support for the steam/PS4 controllers?
One improvement I wish to see in a possible future version is better management of multiple controllers, when I try to connect two pro controllers or the pro controller with a pair of joycon for multiplayer games, I often get a noticeable lag from the controllers, which makes games unplayable.
I think this might be a problem with the multithreading management, but I'm not familiar enough with the code and the project to look more closely into it.
My sistem is Win 10 with latest update, I have no problems at all with a single controller. Thoughts on this issue?
So I usually use a pro controller with steam, so I disabled XInput and HIDG, but then I got an error when connecting two joycons, that automatically changed to try to be only one gamepad, so i thought maybe the issue can be fixed if pro controllers and joycons have different configurations for XI and HIDG, and when the XI is disabled for the joycons make it impossible to try to join them, I'm sorry to be a bother, I love your app and your dedication even if you're busy, thanks a lot for developing this, btw I love the new led effect when they get connected
edit:
I was having some issues with HIDG it always stayed on for some reason, I had to enter http://localhost:26762/ and manually remove the devices from the list, it was very weird even if I uninstalled the drivers and services, the controllers were still "protected", I think I uninstalled the drivers and services when BJFC was still running
hi, I'm having some trouble with the app, my pro controller isn't properly calibrated, so or doesn't recognise well the left stick, it doesn't go full forward, so, for example I can't run in splatoon, I have been able to calibrate it via Windows, so in other programs it works just fine, but this app is overwriting that calibration. Please tell me how could I fix it. Thanks for the hard work!
Hi, thank you for your great work, I'm a Chinese user, forgive my poor English. There is a little problem on my Cemu.
Yesterday I download Cemu1.11.5 and cemuhook 0.5.6.3, and at first time it worked well, but today the gyro
doesn't seem work. All settings are correct,the "Also use for buttons/axes" has been checked.
I deleted the bluetooth device and reconnected, only gyro still doesn't work, other bottons work well.
I hope I made it clear.
I can't use motion controls. They just don't seem to be turned on. I am on a laptop by the way. Your help will be greatly appreciated 👍
I wanted to play some games with my cousin, who also has a switch, when I booted up the program, it showed that 4 joycons were connected and even had 2 virtual xbox controllers set up, but when I tried to map buttons on programs like pcsx2 and cemu it wouldn't allow me to map any buttons.
When I start Cemu I see that there is a lot of lag using the JoyCons,
Before I discovered this tool, I was using vJoy and the JoyCon driver and there was no lag.
That method dosn't support gyro input and I decided to use instead of the vJoy method.
What can I do? I followed al the instructions ins the Problems section and nothing happended. Please help.
There is an extra slash in the change directory command. This should be removed.
cd /d "%~dp0\Drivers"
Need to remove the \
. "%~dp0" includes the backslash automatically. You can test with echo %~dp0\Drivers & pause
and echo %~dp0Drivers & pause
and you will see the difference.
Next, as I mentioned before, you can have your bat ask for administrator permissions, even if a user does not run as administrator. Here is the code for this.
@echo off
setLocal EnableExtensions EnableDelayedExpansion
set "ScriptPath=%~dp0"
set "ScriptPath=%ScriptPath:~0,-1%"
set "ScriptName=%~n0.bat"
pushd "%ScriptPath%"
:: CHECK ADMIN RIGHTS
fltmc >nul 2>&1
if "%errorlevel%" NEQ "0" (goto:UACPrompt) else (goto:GotAdmin)
:UACPrompt
echo:
echo Requesting Administrative Privileges...
echo Press YES in UAC Prompt to Continue
echo:
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\GetAdmin.vbs"
echo args = "ELEV " >> "%temp%\GetAdmin.vbs"
echo For Each strArg in WScript.Arguments >> "%temp%\GetAdmin.vbs"
echo args = args ^& strArg ^& " " >> "%temp%\GetAdmin.vbs"
echo Next >> "%temp%\GetAdmin.vbs"
echo UAC.ShellExecute "%ScriptName%", args, "%ScriptPath%", "runas", 1 >> "%temp%\GetAdmin.vbs"
cmd /u /c type "%temp%\GetAdmin.vbs">"%temp%\GetAdminUnicode.vbs"
cscript //nologo "%temp%\GetAdminUnicode.vbs"
del /f /q "%temp%\GetAdmin.vbs" >nul 2>&1
del /f /q "%temp%\GetAdminUnicode.vbs" >nul 2>&1
exit /B
:GotAdmin
if '%1'=='ELEV' shift /1
if exist "%temp%\GetAdmin.vbs" del /f /q "%temp%\GetAdmin.vbs"
if exist "%temp%\GetAdminUnicode.vbs" del /f /q "%temp%\GetAdminUnicode.vbs"
Add this code to the top of your bat file, under the @echo off
and you will be good to go.
Hello,
as mentioned already in the title, unfortunatly the program isn't working for me.
The Pro Controller works fine when I connect it to my PC via bluetooth, but after opening BetterJoyForCemu, the controller doesn't respond anymore.
I've already set up an input profile in cemu.
After opening BetterJoyForCemu, the following text says:
Pro controller connected.
Using factory stick calibration data.
Using factory stick calibration data.
Starting poll thread.
Starting server.
Press enter to quit.
Now the first LED lights up.
At this point, the Pro Controller doesn't respond in the Windows USB game controller setting and in cemu.
I've followed every step in the "How to use" section exactly, but the setup always fails at this point.
What can I do? Please help me, I don't want to use my phone again to use motion controls :D
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.