diff --git a/clients/apple/Sources/PunktfunkKit/Gamepad/GamepadCapture.swift b/clients/apple/Sources/PunktfunkKit/Gamepad/GamepadCapture.swift index fa251b71..b5224180 100644 --- a/clients/apple/Sources/PunktfunkKit/Gamepad/GamepadCapture.swift +++ b/clients/apple/Sources/PunktfunkKit/Gamepad/GamepadCapture.swift @@ -271,12 +271,12 @@ public final class GamepadCapture { slot.buttons = newButtons } let newAxes: [Int32] = [ - Int32((g.leftThumbstick.xAxis.value * 32767).rounded()), - Int32((g.leftThumbstick.yAxis.value * 32767).rounded()), - Int32((g.rightThumbstick.xAxis.value * 32767).rounded()), - Int32((g.rightThumbstick.yAxis.value * 32767).rounded()), - Int32((g.leftTrigger.value * 255).rounded()), - Int32((g.rightTrigger.value * 255).rounded()), + Int32(g.leftThumbstick.xAxis.value * 32767), + Int32(g.leftThumbstick.yAxis.value * 32767), + Int32(g.rightThumbstick.xAxis.value * 32767), + Int32(g.rightThumbstick.yAxis.value * 32767), + Int32(g.leftTrigger.value * 255), + Int32(g.rightTrigger.value * 255), ] for (i, v) in newAxes.enumerated() where v != slot.axes[i] { connection.send(.gamepadAxis(UInt32(i), value: v, pad: slot.pad)) diff --git a/crates/pf-client-core/src/gamepad.rs b/crates/pf-client-core/src/gamepad.rs index 9ed548dd..3922c7a3 100644 --- a/crates/pf-client-core/src/gamepad.rs +++ b/crates/pf-client-core/src/gamepad.rs @@ -558,9 +558,9 @@ fn button_bit(b: sdl3::gamepad::Button) -> Option { fn axis_value(axis: sdl3::gamepad::Axis, v: i16) -> (u32, i32) { use sdl3::gamepad::Axis; match axis { - Axis::LeftX => (wire::AXIS_LS_X, v as i32), + Axis::LeftX => (wire::AXIS_LS_X, (v as i32).max(-32767)), Axis::LeftY => (wire::AXIS_LS_Y, -(v as i32).max(-32767)), - Axis::RightX => (wire::AXIS_RS_X, v as i32), + Axis::RightX => (wire::AXIS_RS_X, (v as i32).max(-32767)), Axis::RightY => (wire::AXIS_RS_Y, -(v as i32).max(-32767)), Axis::TriggerLeft => (wire::AXIS_LT, (v as i32).clamp(0, 32767) >> 7), Axis::TriggerRight => (wire::AXIS_RT, (v as i32).clamp(0, 32767) >> 7),