File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11#include " dinput_backend.h"
22#include " sony_layout.h"
33#include " usb_names.h"
4+ #include " xbox_wireless_hid.h"
45#include < algorithm>
56#include < ranges>
67#include < utility>
@@ -99,8 +100,26 @@ void DInputBackend::Poll()
99100 gs.leftStickY = -NormStick (js.lY );
100101 gs.rightStickX = NormStick (js.lRx );
101102 gs.rightStickY = -NormStick (js.lRy );
102- gs.leftTrigger = NormTrigger (js.lZ );
103- gs.rightTrigger = NormTrigger (js.lRz );
103+ if (XboxWireless_IsDevice (dev.vendorId , dev.productId ))
104+ {
105+ // Xbox Wireless exposes a single combined axis on lZ: center=rest, upper half=LT, lower half=RT.
106+ const float lZ = static_cast <float >(js.lZ );
107+ if (lZ >= 32768 .0f )
108+ {
109+ gs.leftTrigger = std::clamp ((lZ - 32768 .0f ) / 32767 .0f , 0 .0f , 1 .0f );
110+ gs.rightTrigger = 0 .0f ;
111+ }
112+ else
113+ {
114+ gs.leftTrigger = 0 .0f ;
115+ gs.rightTrigger = std::clamp ((32768 .0f - lZ) / 32768 .0f , 0 .0f , 1 .0f );
116+ }
117+ }
118+ else
119+ {
120+ gs.leftTrigger = NormTrigger (js.lZ );
121+ gs.rightTrigger = NormTrigger (js.lRz );
122+ }
104123 }
105124
106125 uint16_t btns = 0 ;
You can’t perform that action at this time.
0 commit comments