Skip to content
This repository has been archived by the owner on Jan 1, 2024. It is now read-only.

L2/R2 are duplicated as buttons; option to disable this? #2950

Closed
Kerouha opened this issue May 22, 2023 · 12 comments
Closed

L2/R2 are duplicated as buttons; option to disable this? #2950

Kerouha opened this issue May 22, 2023 · 12 comments

Comments

@Kerouha
Copy link

Kerouha commented May 22, 2023

image

For example, when you try to bind any function to these (to be able to have gradual input), games pick up button output first. This renders analog triggers completely useless.

Some games may have certain functions hardcoded to these "buttons", like going into pause menu.

Only way to walk around this issue that I found, is to bind L2/R2 to X/Y axes on one of the sticks, which is not an adequate solution.

It would be great to have an option for L2/R2 to output only analog signal, disregarding buttons 7 and 8 (at least that is how they're marked in the system).

@Ryochan7
Copy link
Owner

Having those two buttons activate when the triggers are pulled is the standard behavior with the real DS4 hardware. That is duplicated in the mapper. One big problem with trying to change the behavior is that it also applies to buttons or the sticks being mapped to L2 or R2. A custom profile wide option would be needed to tell the mapper to ignore populating those virtual DS4 buttons.

Out of curiosity, which games are giving you trouble with the current behavior?

@Kerouha
Copy link
Author

Kerouha commented May 26, 2023

which games

Any game that works with DS4 as a DirectInput device.
If you really need a specific example:

  • NFS 3 Hot Pursuit
  • NFS 4 High Stakes
  • NFS 5 Porsche
  • NFS Underground 2
  • there is more

It's practically impossible to bind throttle/brake to L2/R2 in any of these titles, unless, by some miracle, game registers axis first.

A profile-wide option to disregard L2/R2 "buttons" would be great.

@Ryochan7
Copy link
Owner

Ryochan7 commented Aug 9, 2023

Finally got around to doing this; too busy AFK this year. Likely way too late to be relevant. Not sure when I will get around to making another DS4Windows release with the change.

fd0aa30

@Kerouha
Copy link
Author

Kerouha commented Aug 14, 2023

It's very much relevant; interest in those old games (and DS4s) ain't gonna disappear aytime soon

@Ryochan7
Copy link
Owner

Ryochan7 commented Aug 31, 2023

I tried to make a change to offer more options (only output digital buttons) but .NET was not liking it. Got the routine working as I wanted but it resulted in unwanted slowdown. I was thinking there might be a use case for only outputting the digital buttons with no analog output for some older games.

Going to keep the diff file but it looks like that idea is getting scrapped. Looks like the upcoming routine will still just allow for disabling the digital output buttons for the triggers.

@Kerouha
Copy link
Author

Kerouha commented Aug 31, 2023

If one does not want to use analog (for some reason), they can just not un-bind axes, set them to 100% dead zone or sth

Using triggers the intended way though? Gotta buy Xbox controller... or use the "disable digital buttons" feature, which just can't come soon enough

@Ryochan7
Copy link
Owner

Pushed through and got it figured out. .NET literally not liking that I provided an explicit default value for a property in the ProfileDTO class. It was not needed as the enum default value was being used for the value anyway. .NET can be extremely screwy.

e5e35ff

@Ryochan7
Copy link
Owner

I will hold off on closing this for now. I need to try this on some games in my GOG library.

@Ryochan7
Copy link
Owner

Still have not found a completely needed use case yet. Got a couple of cases that almost justify it for me. Neither one involves disabling the virtual button output though.

Star Wars: Shadows of the Empire can only read the virtual digital buttons for the triggers. It ignores the analog value so disabling analog output is not absolutely necessary.

Star Wars Episode 1: Racer can work with either the analog or digital button values for the triggers. The game offers specific analog and digital options for the brake and throttle. However, the game does not work correctly with the triggers so attempting to map the triggers to analog functions will cause problems.

@Ryochan7
Copy link
Owner

Finally found a use case for disabling the digital trigger buttons in my game library. Testing out FlatOut 2 and the game reads the button input first so brake and throttle would always get mapped to digital buttons normally. Disabling the digital button output for L2 and R2 allows the game to read and map the analog output values for those actions. I might have run into this scenario sooner if I had more racing games in my library.

The feature now officially has a reason to exist for me.

@Kerouha
Copy link
Author

Kerouha commented Sep 14, 2023

There is a whole library of old NFS games that share this behavior, I pointed them out in a comment above.

One issue I had in NFS High Stakes after the update, is that the game does not recognize inputs either in controls settings, or during gameplay. Had to re-toggle trigger button setting and re-save profile for the game to properly recognize the controller.

@Kerouha
Copy link
Author

Kerouha commented Sep 14, 2023

More recent example: Wreckfest tries to bind triggers as buttons too, unless you start reassigning while pressing the trigger

@Ryochan7 Ryochan7 closed this as completed Oct 1, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants