Closed George3011 closed 5 years ago
Confirmed. I am experiencing this when I load my Soul Reaver profile. This happens on both DS4Windows stable and WPF dev versions.
Can't duplicate this in the stable build again. I could have sworn it happened there too. The change to the WPF version was a quick fix to an oversight in intermediate properties.
I have the same issue.
But I also have a question about this setting. When this option is set to DualShock 4: Does this create a virtual PS4 controller? So that all the options/settings like Dead Zone, Output Curves etc still work? //edit Manually editing the profile and changing OutputContDevice to DS4 seems to work. //edit2 But Steam can't find any controllers. Quitting DS4Windows makes Steam find the DS4 Controller.
Please take a look at the following tip if/when you enable dualshock4 output controller mode in DS4Windows. Steam has a nasty feature to activitely ignore DS4 gamepad if Steam client detects DS4Windows and few other apps running in the background. https://github.com/Ryochan7/DS4Windows/wiki/Troubleshooting#steam-doesnt-see-the-virtual-output-controller-if-a-profile-uses-the-dualshock4-output-type-steam-sees-the-ds4-controller-only-if-ds4windows-uses-xbox360-output-controller-type
And once the Controller output mode settings bug in V1.7.19 version is fixed (you cannot change the Controller option in a profile via GUI. You have to do it by using Notepad) then if you set the Controller option to dualshock4 value then games should see the virtual output controller as DS4 gamepad instead of as xinput Xbox360 gamepad. You can use all profile options with both controller types (curve outputs, re-mapped buttons and axis, macros, etc).
Okay. I see the problem now. This seems like an issue started from reusing a field for a different purpose. Changing how the action binding window knows which controller image to display caused this problem. As it stands now, there is no way to edit the output controller type in the Profile editor. I will try to fix this ASAP.
May I also suggest to rework the UI a bit? Like, why not just rename Xbox 360 to xinput and DS4 to dinput? That would make sense since there are only these 2 modes from what I see, and if the game does support DS4 natively it has to be through dinput, from what I understand. I've changed the mode to DualShock4, and BloodRayne 2 started recognizing my controller (see issue #870). But it only supports DirectInput, there were no DS4 to support in 2004.
Right now there are no tips for that option, and it's located in "Other" tab, while it should be indicated as one of most important ones I think.
People also seem confused about it, see:
When this option is set to DualShock 4: Does this create a virtual PS4 controller?
It seems there is just no such device as PS4/DS4 controller on Windows, real or virtual. Either it's HID/dinput or Xbox/xinput.
Also, if there are cases where disabling the "Hide DS4" is helpful, maybe tie it to profile settings too?
May I also suggest to rework the UI a bit? Like, why not just rename Xbox 360 to xinput and >DS4 to dinput?
Quote: Professor Osmo A. Wiio in University of Helsinki, The Laws of Communication (known also as Wiio's Laws):
So, no matter how it is called some people are still confused. There could be more tooltip texts in the GUI or at least the GUI could highlight a link to the following Wiki page to read more about those options: https://github.com/Ryochan7/DS4Windows/wiki/Settings
When this option is set to DualShock 4: Does this create a virtual PS4 controller?
Actual, the virtual controller does have the same hardware ID (device VID/PID) as physical revision1 DS4 controller device object. So, the virtual controller object is DS4 controller and not some 3rd party PS4 compatible gamepad (those may have different VID/PID).
Also, if there are cases where disabling the "Hide DS4" is helpful, maybe tie it to profile settings too?
Some games work just fine even without "Hide DS4 Controller" option, but those are in minority. Usually games do require that the physical controller is somehow hidden (HideDS4Controller or HidGuardian driver) to avoid "double input" problems.
Or if you would use "Use DInput Only" option in a profile then HideDS4Controller option should not be used unless you want to hide both physical and virtual controller (UseDInputOnly option doesn't create virtual output controller).
Sometimes HideDS4Controller option doesn't work in all PCs or people find it too difficult to track down which app is reserving a connection to the physical gamepad and this way preventing the exclusive access from DS4Windows app (=HideDS4Controller functionality). The alternative solution to hide the physical controller interface from games is to use HidGuardian device driver tool and if you use HidGuardian then there is no need to enable HideDS4Controller option.
The Wiki page explains this and warns that HidGuardian and HideDS4Controller options should not be used at the same time (it is this or that). https://github.com/Ryochan7/DS4Windows/wiki/Exclusive-Mode-(Hide-DS4-Controller-config-option)-tips-and-issues
HideDS4Controller option would be a problematic as a profile level option because there would be then too many problem reports that once changing to a profile NOT using exclusive access and then back to a profile using it, the exclusive access would fail. This is because some other app (WindowsStore, NVidiaOverlay,Netflix etc etc) may have opened a connection to the controller while exclusive access was disabled.
If you use HidGuardian then you can sort of play around with enable/disable hiding of the physical controller by tweaking the AffectedDevices sysreg entry of HidGuardian on the fly. However, it does require that the controller is disconnected and re-connected in order to make it effective.
So, no matter how it is called some people are still confused. There could be more tooltip texts in the GUI or at least the GUI could highlight a link to the following Wiki page to read more about those options: https://github.com/Ryochan7/DS4Windows/wiki/Settings
I disagree. It could be very useful to know and understand that by default it works like a DirectInput device. https://www.pcgamingwiki.com/wiki/Controller:DualShock_4 Wording is important - mentioning in most cases the DS4 as just "DS4" in DS4Windows makes people think there is some kind of unique DS4 framework that works differently from dinput or xinput. When an application communicates with the user about gamepad support in various games, it's totally important to mention dinput and xinput. Make the user understand that if he wants to play a recent game that only supports xinput he should use the default X360 mode, while for older dinput-only games it will not work and should be changed. As I see it, the "Controller: Xbox 360 <> Dualshock 4" option can be changed to something like "Mode: Xbox 360 emulation / Xinput <> Native / Dinput".
I've checked again and found only 1 place where DS4 is mentioned as being a native dinput controller in DS4W - in a tooltip for the "Use DInput Only" option. Same with the article you mentioned.
"Use Dinput only" - Does disable all virtual game pads? Actually the same as not having DS4Windows running? So no controller customizations/settings are applied?
While having "Use Dinput only" disabled + Controller Mode set to Dualshock 4, does create a virtual DS4 controller and controller customizations/settings are applied?
If yes, I think it would be better to change the layout of the UI a bit, as reyaz006 suggested. But a little bit different: Remove the Dinput checkbox. Change the DropDown Menu to:
And maybe change the Position of the dropdown menu to somewhere else, so it isn't on the last page at the bottom. I mean, it would make more sense to have this to be one of the first options, When you create a profile, what is the first you gonna think about? For which controller type you are about to create a profile and not the color of the lightbar, or?
Also in which modes are the "mouse sensitivity setting" from the "other tab" applied? I guess, it is used when the touchpad is used as a mouse, so why not move "mouse speed and acceleration" settings over to the touchpad settings?
"Use Dinput only" - Does disable all virtual game pads? Actually the same as not having DS4Windows running? So no controller customizations/settings are applied?
If "Use DInput Only" is enabled then it is not exactly the same as not having DS4Windows running. It is true that UseDInputOnly enabled does not create any virtual output controllers, so apps would see the native DS4 gamepad as it is (ie. no re-mapped gamepad keys, no user defined output curves etc). However, DS4Win app is still able to map gamepad keys/axis/touchpad as a mouse or as a keyboard keys and to run special action macros to generate keyboard and mouse events (ie. the target device of re-map rules are either mouse or kbd, but not a virtual gamepad controller).
The idea of "Use DInput Only" profile option is to allow games to use the native physical DS4 gamepad as it is and at the same time to spice up things with user customized mouse and kbd events.
While having "Use Dinput only" disabled + Controller Mode set to Dualshock 4, does create a virtual DS4 controller and controller customizations/settings are applied?
Yes. And of course the same is true for xbox360 output mode also when "Use DInput Only" option is not set. The virtual output gamepad controller allows DS4Windows app to do gamepad key re-maps, custom output curves in analog axis, custom deadzone, re-map gyro as RS stick in 360-steering wheel emulation mode etc etc.....
If yes, I think it would be better to change the layout of the UI a bit, as reyaz006 suggested. Remove the Dinput checkbox. Change the Controller DropDown Menu to: Xbox 360 | DualShock 4 | Native / Dinput only And maybe change the Position of the dropdown menu to somewhere else, so it isn't on the last page at the bottom
Yes. Good points. All those remarks make sense,
The root of the GUI in DS4Windows app comes from the ancient JayKings DS4Windows app and when JayKings left to do some other things then the app has been been tweaked bit by bit and new features introduced by people who didn't create the GUI in the first place. During last few years Ryochan7 has done massive job to keep the app alive. Without him the app would have been lost in hyper space long time ago (originally he was just supposed to fix problems in exclusive mode in Win7/Win10 but I guess things escalated).
I have contributed the 360-steering wheel emulation mode. It was my only intention because it makes EuroTruckSimulator2 so much better with DS4 gamepad, but then things escalated and I have tweaked other things also (improvements in macro engine, added support to number of other DS4 compatible gamepads, auto-profile wnd title and wildchar support, small tweaks here and there). But, the GUI is a pain in .NET WinForms source code of DS4Windows, so no one wants to touch it unless they have to :-)
Ryochan7 is working on a complete re-write of the DS4Windows GUI and many parts of the core engine (V2.x). Major GUI tweaks are probably introduced in that version and not in this v1.7.x DS4Windows "WinForms" version.
For which controller type you are about to create a profile and not the color of the lightbar, or?
Yes. I have always wanted to see either Axis or Other tabs (with different name) as the first page, but never got around to do anything about it. But, maybe these non-logical GUI things will be tweaked in the V2.x version.
Change the DropDown Menu to:
- Xbox 360
- DualShock 4
- Native / Dinput only
All of these still would need clarification somewhere in tooltips at the very least. "DualShock 4" should not be called just like that because it may suggest not what it should. I still recommend mentioning xinput and dinput whenever possible and applicable.
Some of the issues are due to old cruft from the Jays2Kings days and older profiles. Part of it is from not wanting to make too many edits to the code base in one session. Almost any new addition to this project has been a gamble as to whether the .NET Runtime will cooperate or if it will cause unwarranted application slowdown. There have been many times when potential features had to be reworked many times or outright scrapped thanks to application slowdown. The current Run as Task behavior has stayed the way it is despite requests to change it due to this type of problem. This type of situation, and many others, have been an incentive to learn about WPF and port DS4Windows to that framework.
The original idea was to try to consolidate the two settings so that the output Controller Type dropdown would control both profile settings. I ended up not bothering and kept two controls to edit each setting. The Controller type combobox actually had a tooltip (looking at v.1.7.15) but it looks like it was lost when the Profile editor was updated to use a tabbed interface to free up room for additional controls; Visual Studio lost a lot of hooks during that conversion process and I apparently missed adding some back in manually.
At this point, the main reason for not choosing to use labels like XInput and DInput for the Controller type would be future updates to ViGEm. ViGEmBus also currently supports emulating an Xbox One controller. I have not found a use case for choosing to emulate an Xbox One controller rather than an Xbox 360 controller so the option has not been added to DS4Windows. ViGEmBus might support additional controller types in the future.
It looks like the tooltip change stems from placing those controls in a panel. Absolute positioning used to be used to lay out most controls rather than utilizing layouts. That adds one additional layer of child controls that the old routine does not account for so the MouseHover event is never used. At this point, I am just going to leave that as is until the WPF version is more finalized.
Thanks for explanation. I hope this gets looked into after the switch.
At this point, the main reason for not choosing to use labels like XInput and DInput for the Controller type would be future updates to ViGEm. ViGEmBus also currently supports emulating an Xbox One controller.
I'm not sure how these are related. Xbox One controller would still be xinput-based device albeit using a different version of xinput, no? Also what kind of updates to ViGEm may affect the basic nature of choice between dinput and xinput? Last commit to ViGEm happened 5 months ago.
Maybe you think DS4Windows is mostly used with new games where people don't remember about dinput/xinput and just say whether or not it supports "usual" gamepads and Xbox gamepads? I think proper explanation of "DS4" mode can help more people to recognize the capabilities of DS4Windows. Like me - only recently (with your help) I discovered that it can support old dinput-only games very well. It seems like the DS4W's fame of emulating X360 in recent games has overpowered its fame of supporting all other games at some point.
Also please see my other UI-related suggestion https://github.com/Ryochan7/DS4Windows/issues/870#issuecomment-546592785
Thanks for the update works, fine now. Also thanks mika-n for the hint to rename the ds4window.exe to get it working with steam. Hide DS4 Controller must also be checked otherwise Steam sees two DS4 Controllers. But why I don't have to rename ds4window.exe in Xbox360 controller mode? Also sometimes the dswindow4 emulated Xbox360 controller shows up as Xbox One Controller.
Also thanks mika-n for the hint to rename the ds4window.exe to get it working with steam. Hide DS4 Controller must also be checked otherwise Steam sees two DS4 Controllers. But why I don't have to rename ds4window.exe in Xbox360 controller mode?
This is stupidity of Steam client. It does this "ignore gamepads" thing only for DS4 type of gamepads (being physical or virtual). I don't understand why they didn't make this "ignore" logic optional in Steam settings but as a forced default behaviour. Well, I do understand that they don't want to see issue posts complaining that "Hey! Steam sees two DS4 gamepads when I run DS4Windows/InputMapper/XYZ app. How to solve this issue in Steam client?". Instead Valve just brutally kicks other apps in their kneecap and don't try to solve it in a civilized manner.
Also sometimes the dswindow4 emulated Xbox360 controller shows up as Xbox One Controller.
Hmmm... Don't know about that but if it works then don't try to fix it.
To be more accurate, sometimes it shows up as: Xbox One Controller: Xbox 360 Controller Weird.
Hi,
Love your application, used it to beat quite a few games and its great (except for the occassional >10ms latency issue). I noticed with a recent update that you can set the 'Controller:' option to Dualshock 4 in the 'Other' tab, so that I can keep DS4Windows running while playing a game that actually supports the Dualshock 4.
However, it seems that as of the latest update the option gets reverted back to 'Xbox 360' after I save my profile and load it up again. This happens whether I edit the default profile or create a new one.
Any help would be appreciated, thanks!