The joystick wizard works out the shape of your pedals

You are never asked what you own. Two controls cannot simply be watched,
so they are asked for differently.

Yaw is asked for twice, right then left, and which axis answers is the
measurement. The same axis both times is one control covering both
directions - a twist grip, a rudder bar, pedals the driver has already
mixed - and binds to the signed Pedals axis. Two different axes are two
real pedals, one per foot, which is what the pod had, so they bind to the
pod's own LeftPedal/RightPedal pair and the game does the mixing: both at
once then does what both at once did in the pod.

The throttle is zeroed first. A lever sits wherever it was last left,
possibly hard against the stop that reads +1, so watching it move says
nothing about which end means power. Close it, press SPACE, then open it,
and the direction it travels from a known idle is the direction that
means throttle.

CONTROLS.md, the handbook and the packaged README say all of this, and
joyconfig.bat's own header no longer promises "rudder-pedal setup" when
racing pedals work too.
This commit is contained in:
Cyd
2026-08-07 16:31:40 -05:00
parent 6e829f815e
commit d35af59136
7 changed files with 590 additions and 89 deletions
+48 -2
View File
@@ -1183,6 +1183,10 @@
<dt>It watches</dt>
<dd>Which way<small>the direction you moved sets the sign</small></dd>
</div>
<div>
<dt>And which</dt>
<dd>Yaw twice<small>right then left: one axis or two?</small></dd>
</div>
<div>
<dt>Then</dt>
<dd>Straight in<small>the game carries on to the setup screen</small></dd>
@@ -1199,6 +1203,23 @@
answer off the movement. Skip a prompt with <code>SPACE</code> if you
have no such control, <code>ESC</code> to abort without writing.
</p>
<p>
It goes further than the sign: it works out the <b>shape</b> of your
rig the same way. <b>Yaw is asked for twice</b>, right and then left,
and which axis answers is the measurement — the same axis both times
is one control covering both ways (a twist grip, a rudder bar, pedals
their driver has already mixed), two different axes are two real
pedals, one per foot. You just move the thing twice.
</p>
<p>
The <b>throttle</b> is the one prompt that works backwards, because a
lever sits wherever it was left: halfway, or hard against the stop
that happens to read <span class="mono">+1</span>. Watching it move
cannot tell you which end means power. So close it, press
<code>SPACE</code> to say <i>it is at zero now</i>, and then open it —
the travel from a known idle is the direction that means throttle.
<code>S</code> there if you have no lever at all.
</p>
</div>
<p class="sub">
@@ -1223,7 +1244,7 @@
<pre><i># grammar</i>
<b>joydev</b> &lt;slot&gt; [product-name substring]
<b>joyaxis</b> &lt;src&gt; <b>axis</b> &lt;axis&gt; [invert]
<b>joyaxis</b> &lt;src&gt; <b>axis</b> &lt;axis&gt; [invert] [lever]
[deadzone &lt;d&gt;] [rate &lt;n&gt;]
<b>joybutton</b> &lt;n&gt; <b>button</b> &lt;addr&gt; [toggle]
<b>joyhat</b> &lt;n&gt; &lt;up|down|left|right&gt;
@@ -1235,7 +1256,7 @@
<div class="tbl-scroll" style="margin-top:22px">
<table>
<caption>Two rules the pod's shape asks for</caption>
<caption>Three rules the pod's shape asks for</caption>
<tbody>
<tr>
<th class="mono">Pedals</th>
@@ -1246,6 +1267,31 @@
that presses one or the other and never both, which is exactly
what this says. It is a channel name like any other, so a gamepad
stick can drive the turn with it too.
<br><br>
Two real pedals — racing pedals, or rudder pedals with an axis
per foot — bind to
<span class="mono">LeftPedal</span> and
<span class="mono">RightPedal</span> one axis each instead, and
the wizard picks that up on its own from the two yaw prompts
answering on two different axes. That is the pod's own
arrangement: the game mixes your two feet into the turn rather
than taking a turn already mixed for it, and both pedals at once
does what both pedals at once did in the pod.
</td>
</tr>
<tr>
<th class="mono">lever</th>
<td>
A pedal rests at one <b>end</b> of its travel, not in the middle,
and Windows reports it as a full
<span class="mono">1..+1</span> axis regardless — so half the
travel reads below zero and the first half of the press would do
nothing at all. <span class="mono">lever</span> says the control
is one-way: the travel maps onto the channel's
<span class="mono">0..1</span>, and the deadzone then measures
from the released end, where the slack in a tired return spring
actually lives. The wizard writes it for you; add or remove
<span class="mono">invert</span> if a pedal reads backwards.
</td>
</tr>
<tr>