Files
riojoy/profiles/descent-d1x.json
T
CydandClaude Fable 5 2f2438717a core: per-profile ViGEm axis routing with unipolar output mode
RioProfile gains a nullable AxisRouting section mapping each calibrated
axis (X/Y/Z/Rx/Ry/Rz) to a pad target (thumbs, triggers, or None) with a
Centered or UnipolarPositive conversion; the default reproduces the old
hardcoded routing exactly, so existing profiles are untouched. Routing
resolution lives in a pure, ViGEm-free AxisRouter for testability; the
sink neutralizes the pad on routing change so stale trigger state cannot
leak across profile switches.

Motivation: Descent reads the pad via SDL GameController, where the
triggers are its stock fire axis-buttons - the old fixed routing put
throttle on LeftTrigger (fires) and detent would have read as full
reverse. descent-d1x.json now routes Z->RightThumbY (UnipolarPositive,
detent = center) and Rz->RightThumbX, triggers untargeted; guarded by
tests that parse the shipped JSON through the real deserializer and
byte-compare the dxx-rebirth reference copy.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 09:00:09 -05:00

101 lines
1.6 KiB
JSON

{
"Name": "Descent",
"MatchExecutables": [
"d1x-rebirth"
],
"PlasmaGreeting": "DESCENT",
"WallpaperPath": null,
"OverlayLabels": {},
"Calibration": {
"InvertX": false,
"InvertY": false,
"InvertZ": false,
"InvertXR": false,
"InvertYR": false,
"InvertZR": false,
"EnableZR": true
},
"AxisRouting": {
"X": {
"Target": "LeftThumbX",
"Mode": "Centered"
},
"Y": {
"Target": "LeftThumbY",
"Mode": "Centered"
},
"Z": {
"Target": "RightThumbY",
"Mode": "UnipolarPositive"
},
"Rx": {
"Target": "None",
"Mode": "Centered"
},
"Ry": {
"Target": "None",
"Mode": "Centered"
},
"Rz": {
"Target": "RightThumbX",
"Mode": "Centered"
}
},
"Buttons": {
"16": 32822,
"17": 32823,
"18": 32824,
"19": 32825,
"20": 32816,
"21": 32777,
"24": 32781,
"28": 34991,
"29": 34990,
"32": 32817,
"33": 32818,
"34": 32819,
"35": 32820,
"36": 32821,
"37": 32850,
"56": 67,
"57": 68,
"58": 88,
"59": 65,
"60": 4101,
"62": 4102,
"63": 83,
"64": 4097,
"65": 8194,
"66": 8192,
"67": 8193,
"68": 8195,
"69": 188,
"70": 190,
"71": 4099,
"80": 48,
"81": 49,
"82": 50,
"83": 51,
"84": 52,
"85": 53,
"86": 54,
"87": 55,
"88": 56,
"89": 57,
"90": 9,
"91": 66,
"92": 82,
"95": 70,
"96": 28672,
"97": 28673,
"98": 28674,
"99": 28675,
"100": 28676,
"101": 28677,
"102": 28678,
"103": 28679,
"104": 28680,
"105": 28681
}
}