diff --git a/docs/rp412-controls.html b/docs/rp412-controls.html index 35f67c3..864f52a 100644 --- a/docs/rp412-controls.html +++ b/docs/rp412-controls.html @@ -1149,6 +1149,119 @@

+
+

Bring your own stick

+

+ A gamepad speaks XInput, and the game reads it without being asked. + Everything else — a flight stick, a HOTAS throttle, a twist grip, + rudder pedals, a wheel — speaks DirectInput, which names its axes + X Y Z RX RY RZ SL0 SL1 and says nothing about + what they are for. Somebody has to decide that your twist grip is + the rudder and that pushing it right means right. That is what + joyconfig.bat is. +

+ +
+
+
+
Run it once
+
joyconfig.batbeside the exe; re-run any time
+
+
+
It asks
+
Move that onesteer · pitch · pedals · throttle · buttons
+
+
+
It watches
+
Which waythe direction you moved sets the sign
+
+
+
Then
+
Straight inthe game carries on to the setup screen
+
+
+
+ +
+

+ The direction is the whole point. A stick that reads + positive pushed right and one that reads negative are equally common, + and nothing printed on the box tells you which you own. So the wizard + does not ask you to know — it asks you to move, and reads the + answer off the movement. Skip a prompt with SPACE if you + have no such control, ESC to abort without writing. +

+
+ +

+ It writes only its own section of bindings.txt, between two + marker lines, so anything you have written yourself is kept — including a + deadzone you tuned by hand after trying it. Before it starts it prints + every axis at rest: a stick whose driver reports an odd range + shows up there as X +1.00 on an untouched + stick, rather than as a mystery later. Xbox-class pads are excluded from + all of this, so nothing ever counts twice. +

+ +
+
# what it writes
+joydev 0 Logitech Extreme 3D
+joyaxis X   axis JoystickX invert deadzone 0.08
+joyaxis Y   axis JoystickY deadzone 0.08
+joyaxis RZ  axis Pedals deadzone 0.08
+joyaxis SL0 axis Throttle invert deadzone 0
+joybutton 0 button 0x40
+joyhat 0 up button 0x42
+ +
# grammar
+joydev <slot>    [product-name substring]
+joyaxis <src>   axis <axis> [invert]
+                    [deadzone <d>] [rate <n>]
+joybutton <n>   button <addr> [toggle]
+joyhat <n> <up|down|left|right>
+                    button <addr>
+
+# a named slot binds that product; a bare
+# one binds the Nth stick Windows lists
+
+ +
+ + + + + + + + + + + + +
Two rules the pod's shape asks for
Pedals + A signed axis that works the pedal pair — positive + for the right pedal, negative for the left. The pod has one + under each foot; a twist grip or rudder bar is a single control + 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. +
Throttle + A joyaxis on the throttle with no + rate is treated as a real lever + and owns the channel: its full travel is the throttle + range. Spring-centred sticks have to nudge a position instead, + which is what rate does — a lever that + stays where you put it needs none of that. +
+
+ +

+ A twist grip is usually RZ; a HOTAS throttle is + usually Z or SL0. Set + RP412JOYLOG=1 to log devices as they attach and drop away. +

+
+

Rebinding

@@ -1166,6 +1279,8 @@ pad <button> button <addr> [toggle] padaxis <src> axis <axis> [invert] [deadzone <d>] [rate <n>] +joydev joyaxis joybutton joyhat + see above # deflect springs back, rate sticks where # you leave it (that is the throttle) @@ -1185,12 +1300,13 @@ - + +
Reference — axes, address space, key names
AxesThrottle · LeftPedal · RightPedal · JoystickX · JoystickY
AxesThrottle · LeftPedal · RightPedal · JoystickX · JoystickY · Pedals
Buttons0x00 – 0x47
Keypads0x50 – 0x6F — unbound by default; the game never reads them
Key namesA–Z · D0–D9 · F1–F12 · NumPad0–9 · Up Down Left Right · Space · Return · Shift · Ctrl · Alt · OemMinus · Oemplus · Oemcomma · OemPeriod
PadA B X Y · DPadUp/Down/Left/Right · Start · Back · LeftShoulder · RightShoulder · LeftThumb · RightThumb
Pad axesLeftStickX/Y · RightStickX/Y · LeftTrigger · RightTrigger
Joystick axesX · Y · Z · RX · RY · RZ · SL0 · SL1 — DirectInput's own names