Davidobot / BetterJoy

Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput
Other
3.91k stars 344 forks source link

Support for Unofficial Controllers #419

Open OkamiTakahashi opened 4 years ago

OkamiTakahashi commented 4 years ago

I have a couple of wired USB Nintendo Switch pro controllers, but no way of using them with Cemu. They can be used by my Steam account, but Cemu doesn't detect them at all, nor does BetterJoy. Well, a previous nightly of BetterJoy did when I tried to add controllers, but nothing happened. Now with the current build I can't even attempt that. The locate feature doesn't even function for these.

I'm sorry if this sounds rude, but is it REALLY too much to ask for PROPER support for these kinds of USB Switch pro controllers? I swear, it says there's USB support ON the page, but judging from my own experience, this is not the case at all; the controllers are very clearly plugged in, but not detected by this program. For the record, my controllers are made by PowerA and PDP- two are typical looking pro controllers with a Zelda motif, and one is a pro controller in the shape of a GCN controller- also with a Zelda motif. I'm attaching images of them at the bottom for reference. As someone continuing their file on BOTW from console and beta-testing a big mod pack in development, I wanted to use a natural-feeling controller rather than the Xbox 360 controller which, while nice and comfortable, didn't sit right with me while using Cemu, and is out of action currently.

6250912_sd

wiredsmashpadpro_20-_203-4_right_link

Bindernews commented 3 years ago

Okay I'll give those a try this evening and see what happens.

Davidobot commented 3 years ago

@Bindernews also check this out https://github.com/bitamind/BetterJoy/tree/horipad-test

Basically, they removed the code that submitted subcommands that did the home light setting (constant or blinking) and set some default calibration stuff.

These two functions:

https://github.com/bitamind/BetterJoy/blob/74d7c52e9752a97a45b41abd770e56aa81ed6bf3/BetterJoyForCemu/Joycon.cs#L442

https://github.com/bitamind/BetterJoy/blob/74d7c52e9752a97a45b41abd770e56aa81ed6bf3/BetterJoyForCemu/Joycon.cs#L449

kenkojuko commented 3 years ago

I tried out the horipad test using the enhanced wireless controller (like Bindernews') and can confirm that motion controls work perfectly (with yuzu at least). There are a few little oddities, like the xbox game bar rapidly being triggered if yuzu is opened after the test, but everything else seems good. Idk if this is useful information but I figured I'd let you know.

Davidobot commented 3 years ago

@kenkojuko that's very useful, thank you! Can you walk me through what you did? Did you add the controller as a third party one or did it just work without other setup?

Davidobot commented 3 years ago

Hey @kenkojuko ,

Could you please test this release? I integrated the changes into the mainline. You'll have to add the controller using the "Add Controllers" menu. Release.zip

@Bindernews try this too

bitamind commented 3 years ago

working fine. only add a controller, and default configuration. my controller HORI NSW-175 https://hori.jp/products/nsw/wireless_horipad_gray_type_c/ thank you.

edit: infomation DO NOT turn off "EnableRumble" checkbox. gone crash when connecting controller. and betterjoy crash immedeately next run time with connected controller, so edit "EnableRumble" in configration file false to true manually.

kenkojuko commented 3 years ago

The new test works fine, with me connecting the controller via the Add Controller menu (same with the previous test). Boths tests also seem to stop the joysticks working, but I think that's an issue unrelated to BetterJoy, as Steam does the same thing to me. EDIT: I'm realizing I think I forgot to install the drivers in the drivers folder, will let you know if that changes anything EDIT 2: Haha yeah that fixes the joysticks...

Davidobot commented 3 years ago

DO NOT turn off "EnableRumble" checkbox. gone crash when connecting controller. and betterjoy crash immedeately next run time with connected controller, so edit "EnableRumble" in configration file false to true manually.

@bitamind thank you! Does rumble work on your fork? If not, I'll disable it for third party controllers here too

Davidobot commented 3 years ago

@kenkojuko do you need to turn off rumble for it to work?

Edit: my bad, the advise was to not turn off rumble.

bitamind commented 3 years ago

@bitamind thank you! Does rumble work on your fork? If not, I'll disable it for third party controllers here too

my controller does not support rumble, but no problem with "EnableRumble" on. I guess good idea to disable it. but im a little worried if other third party controller needs to disable rumble.

ghost commented 3 years ago

I Downloaded the Release.zip you mentioned above and installed all the drivers (after deleting the old ones) and now my controller doesn't appear at all in the "add controllers" window. It is the Power A wired controlled with the zelda design of the picture on the top. It appears in the "Bluetooth and Other Devices settings" as Core (Plus) Wired controller.

Davidobot commented 3 years ago

I Downloaded the Release.zip you mentioned above and installed all the drivers (after deleting the old ones) and now my controller doesn't appear at all in the "add controllers" window. It is the Power A wired controlled with the zelda design of the picture on the top. It appears in the "Bluetooth and Other Devices settings" as Core (Plus) Wired controller.

@Eustakios-Power make sure you enable useHidGuardian as per the wiki and have it actually installed.

ghost commented 3 years ago

I Downloaded the Release.zip you mentioned above and installed all the drivers (after deleting the old ones) and now my controller doesn't appear at all in the "add controllers" window. It is the Power A wired controlled with the zelda design of the picture on the top. It appears in the "Bluetooth and Other Devices settings" as Core (Plus) Wired controller.

@Eustakios-Power make sure you enable useHidGuardian as per the wiki and have it actually installed.

I have HidGuardian Installed and enabled. It doesn't detect it

Davidobot commented 3 years ago

Ughh, I might have changed how it goes through the USB devices to detect things, so I'll double check when I can. Thanks.

Bindernews commented 3 years ago

@Davidobot Tried the Release.zip above and it worked unless I disabled the "rumble" feature in which case I got a crash. No HidGuardian necessary. Device is connected via bluetooth to my PC.

Davidobot commented 3 years ago

Sick! Would be great if someone with a powerA controller would check too. Other than that, looks like it all works)

kenkojuko commented 3 years ago

Can confirm, works as long as rumble is enabled and hidguardian is not needed.

ghost commented 3 years ago

may the problem be related to usb devices? because it only detects my headphones which are USB, but not my PowerA controller, even though my controller is obviously USB too

Davidobot commented 3 years ago

I Downloaded the Release.zip you mentioned above and installed all the drivers (after deleting the old ones) and now my controller doesn't appear at all in the "add controllers" window. It is the Power A wired controlled with the zelda design of the picture on the top. It appears in the "Bluetooth and Other Devices settings" as Core (Plus) Wired controller.

Unless your controller is weird and doesn't have a serial number https://github.com/Davidobot/BetterJoy/blob/master/BetterJoyForCemu/3rdPartyControllers.cs#L117 in its hid description, then the issue is probably that the controller is added in HidGuardian to be hidden. Try removing it as per the FAQ page.

bitamind commented 3 years ago

i can't write from firefox, and it was late. I've test my usb wired controller without HIDG. NSW-001 I can't see controller in 'All Devices' list, because my controller does not return 'enumerate.serial_number' string. so i modified a litte bit, and I can see in the list. but betterjoy going to crash (i don't know why), after add to 'Switch Controllers'. i hope it helps.

ghost commented 3 years ago

has someone solved the problem with the PowerA pro controllers?

KeepGood2016 commented 3 years ago

If it's a wired PowerA Pro controller, they don't have a gyro or rumble. They are a standard hid device and use Direct Input. They work fine in Cemu, there is no benefit to using BetterJoy for those. I can't say for the wireless ones, I don't have one.

Markon1989 commented 3 years ago

Hello @Davidobot I went through all the comments above but I still can't solve my issue and I would appreciate some help if possible.

I have a Unofficial Switch Pro controller (GAMORY) and using last version of Win10. Using the latest 6.4b release or the Release.zip file you provided above BetterJoy sees a HIDI2C device but it get's recognised as 3 separate switch pro controller and they get in a infinite loop of recognised/dropped. The Test version you posted above do not work with my laptop configuration (window disappears).

Thank you :)

andy10242421 commented 3 years ago

i turn around my joy con (Unofficial Controllers) after I turn back it cant Restore original position. how can i solve it?

flyingduck234 commented 3 years ago

NVM my third party controller is working fine after some googling

I have similar issue

Starting server on 127.0.0.1:26760 All systems go Pro controller connected. Starting poll thread. Dropped. Removed dropped controller. Can be reconnected.

The-BigSleep commented 3 years ago

Hello, I have the same PowerA 3rd party controller as the first picture on this thread.

Up until "BetterJoy_3rdP_Test3.zip", the controller would connect, but I couldn't map the buttons. It would not recognize the input.

I tried "release.zip" from above as well as the latest release and it goes into a never-ending disconnecting/reconnecting loop.

The "copy me" text: Name: Core (Plus) Wired Controller Vendor: 8406 Product: 42769

Thanks for your time

bluedevilsteve commented 3 years ago

Name: Afterglow Wireless Deluxe Controller Vendor: 3695 Product: 390

BigBoi6942 commented 3 years ago

The release.zip worked fine, the only problem being sticks can't be read fully, forcing my character to walk

thanghn90 commented 3 years ago

Can anyone point me to the "release.zip" file? I couldn't find it in the above posts. I only found the "BetterJoy_3rdP_Test3.zip". Thanks!

havocentral commented 3 years ago

Will the upcoming wireless n64 switch controller be supported nateivly being an official controller, or will there need to be an update?

DiscountDirtyDan commented 3 years ago

I'm having a similar issue, my third party joycons keep showing up as a pro controller but are anything but

thanghn90 commented 3 years ago

I'm having a similar issue, my third party joycons keep showing up as a pro controller but are anything but

Try this build. Also don't forget to change NonOriginalController config to "DefaultCalibration". You can either edit the config file or directly type DefaultCalibration in the Non Original Controller text field of the user interface. Credit: @maxill1 https://github.com/Davidobot/BetterJoy/issues/646#issuecomment-759646830

Markore91 commented 2 years ago

Third party also here, PDP wireless switch controller aka "afterglow when connected" is read as an xbox controller, it seems like it won't recognize it, what should I do?

Markore91 commented 2 years ago

There is another issue that the driver is dropping when I go wireless it says he controller is low battery and then it just drops. It clearly isn't after 6 hours of charge. There seems to be no way to fix it. The drivers are total garbage and don't even appear as PDP drivers on my system. It's always saying there are issues with the drive. And apparently nobody on the internet has a specific video about it. PDP doesn't answer to mails, and you don't even get a notification or troubleshooting. It's an utter mess of a device and doesn't seem to work with anything like Yuzu.

Seasabor commented 2 years ago

i've tried using the test versions above but when I run the program it remains minimized to my taskbar

matemato commented 2 years ago

Does it work for anyone that have their controller connected via USB? When I connect it via USB, my list of "All devices" when I click "Add controllers" is empty. Meanwhile windows does detect it as "Afterglow Wireless Deluxe Controller".

I have a Faceoff Wireless Deluxe Controller.

thanghn90 commented 2 years ago

@matemato if your USB-connected controller is already recognized as an xbox controller (or xinput, you can check by going to https://gamepad-tester.com), then betterjoyforcemu won't be able to do anything (especially if you're looking for the gyro function).

matemato commented 2 years ago

@thanghn90

It is recognized as:

Brez naslova

So what are alternatives to using betterjoyforcemu? Will I be able to use this controller at all for example yuzu or steam?

thanghn90 commented 2 years ago

@matemato I never had any luck with 3rd party controller being able to get recognized as official switch pro controller when connected to PC via USB (UNLESS you can eat the cost of a Magic NS usb dongle). Last time I know, you need to connect your controller to your PC via bluetooth, and if it is recognized as a "pro controller", then you may have a chance to use it with betterjoyforcemu. Did you try connecting your controller to your PC via bluetooth and then start betterjoyforcemu?

matemato commented 2 years ago

@thanghn90 nope, I don't have bluetooth on my PC, sadly. I guess I could try it on my laptop and check it out.

matemato commented 2 years ago

@thanghn90 I tried it on my laptop with bluetooth and it does get recognized. Maybe I'll invest into a bluetooth adapter for my PC. Thanks for your response.

dcard228 commented 2 years ago

this is all the info i can get and it came from the config file

Afterglow Deluxe+ Audio Wired Controller|392|3695|1

im not getting anything from the program itself

BenjaminHalko commented 2 years ago

I tried using my joy cons but the stick was stuck at the top right!

Output:

Vendor: 1406; Product: 8198;
Left Joy-Con connected.
Vendor: 1406; Product: 8199;
Right Joy-Con connected.
thanghn90 commented 2 years ago

@BenjaminHalko : that's what happened to me when I didn't change BetterJoyForCemu.exe.Config to set "NonOriginalController" to value="DefaultCalibration". Make sure you close betterjoyforcemu first, then change the config file (using any text editor like notepad or note++), and then start betterjoyforcemu again. Also, make sure the two joycon icons are vertical (i.e. they're recognized as a single pair, not as two separate joycons, which will appear with two horizontal joycon icons). See here: https://github.com/Davidobot/BetterJoy/issues/646#issuecomment-759646830

BenjaminHalko commented 2 years ago

@thanghn90 I tried that and it just showed up as 2 pro controllers.

thanghn90 commented 2 years ago

@BenjaminHalko : what I did to set my joycons as one single x-input controller is:

  1. Click on Add controller button: image

  2. Select your joycons' items on the left and click the "->" button to move them to the right, then change the "Type" so that the left joycon is the left joycon, and the right joycon is the right one (I'm not sure, you may want to pair them via bluetooth in the correct order: left one first, followed by right one):

image

  1. After that, close betterjoyforcemu and reopen it. Then, LEFT CLICK on one of the joycon's icon to turn them to vertically oriented: image If they're horizontal, it means they act as two separate controllers. At least that's what it appears in my case.

  2. If you haven't done it yet, make sure to modify the config file to set "NonOriginalController" to value="DefaultCalibration". You may need to close and reopen betterjoyforcemu for it to take effect.

BenjaminHalko commented 2 years ago

@thanghn90 For me my controllers automatically get located by betterjoy when loading and don't appear in the add controller spot.

thanghn90 commented 2 years ago

@BenjaminHalko : are you using betterjoyforcemu version 53a0a2 as mentioned in this post? https://github.com/Davidobot/BetterJoy/issues/646#issuecomment-759646830 And what happen when you left-click on one of the controller's icon? Does it change to a different type (like a joycon), or no change at all? image

balrog687 commented 2 years ago

Hi I have the same issues, 3rd party controller is recognized but does not register any keystroke. image

Hid Guardian is enabled, but no device is hidden, Here the hardware Ids

Nintendo Wireless Gamepad HID{00001124-0000-1000-8000-00805F9B34FB}_VID&0002057E_PID&2009

Unknown Controller (XBOX 360 For Windows) HID\VID_045E&PID_028E&IG_00

On test version I get the following device list

HidGuardian is enabled. Pro controller connected. Using factory stick calibration data. Using factory stick calibration data. Starting poll thread. Starting server on 127.0.0.1:26760 -- COPY ME -- blah bla... other stuff Name: Controller (XBOX 360 For Windows) Vendor: 1118 Product: 654 Name: Wireless Gamepad Vendor: 1406 Product: 8201 -- COPY ME END -- All systems go

Is there anything more I can do? besides sharing these hardware IDs?

matheusluisz commented 2 years ago

Hello!

I bought a controller com Aliexpress model MG26z which has gyro. When connecting with the wireless adaptor or using usb, it works with no flaw, but only as a Xbox 360 Controller. So I paired with bluetooth and then betterjoy recognized it as a 3rd party controller (with chinese words that even google translate didn't help me to understand). However it's not working, it appears to have 2 controllers at the same time, one of them disconnecting everytime and the other one make weird actions when the buttons are pressed (like opening one drive, navegating as it was a random keyboard presses. HidGuardian seems to be working fine, as well HidHide.

image image image

How could I proceed to find a solution for this case? Is there a different bluetooth controller driver to install? Or maybe try a different method? When connected to bluetooth the controller doesn't work on CEMU or in any game/emulator and the closest I got it from working was with betterjoy.

To windows it is recognized as "GamePadPlus V3" under the section "keyboard, mouse or pen" image

Any suggestions would be nice to hear! Thanks!