Skip to content

Steering

hifihedgehog edited this page Jun 6, 2026 · 4 revisions

Steering

Three steering modes make a thumbstick or controller tilt act like a steering wheel. They live on the Sticks tab, one steering mode per stick, and write to the stick's virtual axis. The math follows JoyShockMapper's steering stick modes (read for the geometry, written as original C#); the at-lock haptic feedback is PadForge's addition.

Every mode is off by default. With the mode set to Off, the stick is a normal stick. Pick a mode to make it act like a steering wheel.

Modes

Winding

Rotating the stick winds a virtual wheel. Turn clockwise and the wheel turns right; full lock lands at Wind Range degrees of accumulated travel (default 900, so 2.5 turns each way). The accumulator tracks total angular travel, not the stick's current position, so you can keep winding past lock and then unwind back through the overshoot.

Below full deflection the wind leaks back toward center at Unwind Rate degrees per second (default 1800), scaled by how far you've released, so a partial release bleeds slowly and a full release snaps back. Wind Power (default 1) curves the output: above 1 makes the approach to lock gentler, below 1 sharper.

Setting Default Range
Wind Range 900° 90–2520
Wind Power 1 0–4
Unwind Rate 1800°/s 0–10000

Angle to Axis

Positional, no accumulator. The stick's angle relative to one axis maps straight to that axis: hold the stick at 45° and you get half output, at 90° it saturates. Magnitude scales with how far the stick is deflected, and releasing the stick drops the output immediately.

It projects onto a half-plane, so up-and-right and down-and-right read the same angle. Pick Angle to Axis (X) to drive the X axis or Angle to Axis (Y) for Y. A common driving layout pairs one stick's X variant with steering and leaves the other axis for throttle.

Setting Default Range
Angle Inner Deadzone 0–89
Angle Outer Deadzone 10° 0–89

The outer deadzone is measured from 90°, so the default reaches full lock at 80° instead of forcing an exact 90°.

Motion Lean

Tilt the controller like a wheel. Gravity, read through the same source the Gyro tab uses, drives the X axis; stick deflection on that channel is ignored while this mode is active. Controller Orientation tells PadForge which way the controller is held (Forward, Left, Right, Backward) so the lean axis is correct.

With the default deadzones, lock lands near 45° of tilt from neutral. The inner deadzone covers small neutral wobble.

Setting Default Range
Lean Inner Deadzone 15° 0–179
Lean Outer Deadzone 135° 0–179
Controller Orientation Forward Forward / Left / Right / Backward

Motion Lean needs a gravity source (a controller with a gyro, or one bridged through HIDMaestro). Without one it produces no output.

At-lock feedback

When a steering source saturates at full lock, PadForge can make the wheel feel like it hit a wall. The channels are per-slot and off by default:

  • Rumble — a pulse on lock entry.
  • Impulse triggers — the same pulse on the trigger motors (Xbox One and later).
  • Lightbar — pulses to a chosen color on entry and fades on exit (DualSense / DualShock 4).
  • Adaptive-trigger resistance — DualSense trigger resistance ramps up as the wheel approaches lock, so you feel it coming. It only engages on triggers you haven't already configured on the Adaptive Triggers tab, so it never overrides your own trigger effects.

A controller-speaker tone on lock entry is planned alongside the speaker output work.

Physical feedback honors the per-slot test target: when you're testing one assigned device, only it reacts.

Notes

  • The steering mode is per stick. Both sticks can run different modes at once, and each keeps its own winding state.
  • Switching a stick back to Off, or switching profiles, clears its winding state.
  • The mode and its tunables save with the profile.

Clone this wiki locally