Tester ask: configure non-Xbox controllers. New L4JOY layer (DI8): enumerates every non-XInput game device (up to 4), DIJOYSTATE2 polling with range normalization, reacquire-on-loss, 3s hot-plug re-enum. XInput devices are excluded via the documented RawInput IG_ VID/PID check (live-verified skipping a real XBOX360 pad -- no double-feed). bindings.txt grows joydev/joyaxis/joybutton/joyhat rows (device slots by name substring or ordinal; axes X..RZ/SL0/SL1 with invert/slew/ deadzone; hats as 4-direction buttons with diagonal chords). PadRIO runs them through the existing channel/event machinery -- per-binding edge arrays release automatically on detach (the #24 rule), and a direct throttle axis maps full lever travel onto the 0..1 channel while the gait detent still snaps a lever parked in the walk/run dead band. BT_JOYCONFIG=1 (joyconfig.bat) runs a console capture wizard: move each control when prompted (stick/twist/throttle/fire), invert derived from the move direction, hat look cluster auto-added, output written between markers in bindings.txt with the rest of the file preserved. Legacy L4DINPUT DIJoystick (L4CONTROLS=DIJOYSTICK) untouched. Verified: grammar accept/reject per line, XInput-exclusion live, 30s in-mission no-device polling clean. Awaiting a tester with real stick hardware for axis verification. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
35 lines
1.2 KiB
Batchfile
35 lines
1.2 KiB
Batchfile
@echo off
|
|
rem BT411 -- one-time JOYSTICK / HOTAS / pedals setup.
|
|
rem A console wizard asks you to move each control (stick, twist/rudder,
|
|
rem throttle, fire buttons); it detects what you moved and writes the
|
|
rem joystick section of content\bindings.txt. When it finishes the game
|
|
rem continues into the solo menu so you can try the bindings immediately.
|
|
rem Xbox-class controllers need NO setup -- they work out of the box.
|
|
rem Re-run this any time to redo the bindings.
|
|
cd /d %~dp0
|
|
set BT_PLATFORM=glass
|
|
if not exist "build\Release\btl4.exe" goto badpath
|
|
if not exist "content\OPERATOR.EGG" goto badpath
|
|
set BT_JOYCONFIG=1
|
|
set BT_START_INSIDE=1
|
|
set BT_DEV_GAUGES=1
|
|
set BT_LOG=join.log
|
|
set BT_FE_SOLO=1
|
|
cd content
|
|
..\build\Release\btl4.exe
|
|
exit /b
|
|
:badpath
|
|
echo.
|
|
echo ==================================================
|
|
echo ERROR: this file is not in the right place.
|
|
echo.
|
|
echo It must sit in the EXTRACTED game folder, next to
|
|
echo the 'content' and 'build' folders.
|
|
echo.
|
|
echo Fix: right-click the .zip - Extract All, open the
|
|
echo extracted folder, and run this file from THERE.
|
|
echo (Do NOT run it from inside the zip.)
|
|
echo ==================================================
|
|
echo.
|
|
pause
|