This repository has been archived by the owner on Jan 1, 2024. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
7ff7fb1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There seems to be a bug how V1.7.6 DS4OutDevice.cs constructs dpad report value to be sent to ViGem driver. DPadUp+DPadLeft key combination doesn't work. There is an issue ticket created by Niosat about this bug.
The bug is in DS4OutDevice.cs:ConvertAndSendReport method and how it does if-then-else logic to dpad values. Now "dpad up" state is handled "too early", so dpadup+left is never reached.
Here is one way to solve the issue. x360 uses a bitmask with dpad but it seems that DS4 interface uses integer enums without clear bitmask opportunity.
7ff7fb1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ViGEm represents the enum like how it is handled in the DS4 input report. DPad values are represented using a clock model with the value incrementing by one in a clockwise rotation. Centered is equal to 0.
That changed version introduced slowdown for some reason. I have made an update to the routine to handle the DPadUp+Left case earlier.