For anyone who may be curious on how to fix this, I noticed in RawInputWindows::ParseInputData there is a DeviceButtonData.bPreviousButtonState = DeviceButtonData.bButtonState;
It looks redundant and it seems like it’s intended to be only set within SendControllerEvents whenever a button state change is processed. Button inputs were tracked accordingly when the offending line was removed.