From f20547cb25634bf53447b1927f31779914ea6c3a Mon Sep 17 00:00:00 2001
From: Cyd like every other inline literal
here.
No version change: 4.12.7 is republished with the page in it.
Verified by rendering the packed CONTROLS.html headless at 1280 wide and
reading the section back - heading, lede, the four-panel strip, callout,
both code blocks, both tables, and the reference rows all sit in the
page's own idiom, and the tag balance is unchanged.
Co-Authored-By: Claude Opus 5 (1M context)
+ 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.
+
+ 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+
| 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.
+
@@ -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 @@
| Axes | Throttle · LeftPedal · RightPedal · JoystickX · JoystickY |
|---|---|
| Axes | Throttle · LeftPedal · RightPedal · JoystickX · JoystickY · Pedals |
| Buttons | 0x00 – 0x47 |
| Keypads | 0x50 – 0x6F — unbound by default; the game never reads them |
| Key names | A–Z · D0–D9 · F1–F12 · NumPad0–9 · Up Down Left Right · Space · Return · Shift · Ctrl · Alt · OemMinus · Oemplus · Oemcomma · OemPeriod |
| Pad | A B X Y · DPadUp/Down/Left/Right · Start · Back · LeftShoulder · RightShoulder · LeftThumb · RightThumb |
| Pad axes | LeftStickX/Y · RightStickX/Y · LeftTrigger · RightTrigger |
| Joystick axes | X · Y · Z · RX · RY · RZ · SL0 · SL1 — DirectInput's own names |