Came from a UDN: [Link Removed]
Proposed fix is to change `FRawInputWindows::ParseInputData` to use this logic instead:
```
...
USHORT BitSize = ValueCapsBuffer[iValue].BitSize;
LONG SizeMask = (1 << BitSize) - 1;
int32 SignedValue = EachValue & SizeMask;
ULONG UMin = ValueCapsBuffer[iValue].LogicalMin & SizeMask;
ULONG UMax = ValueCapsBuffer[iValue].LogicalMax & SizeMask;
if (UMin > UMax)
DeviceEntry->AnalogData[iValue].Value = (float)SignedValue;
...
```
Some devices use both positive and negative values for the device, but the raw input code will clamp some values to be only positive.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-193608 in the post.
1 |
Component | UE - Gameplay - Input |
---|---|
Affects Versions | 4.26, 5.3 |
Created | Aug 22, 2023 |
---|---|
Updated | Aug 23, 2023 |