- Remove right stick directions (rightstick_* and rs*) from STICK_DEFAULT_BINDINGS so RS is neutral out of the box
- Pre-compile effectiveStickBindings table in Input:applyBindings to maintain an O(1) polling path in gamepadpressed:
- Suppress competing LS directional defaults when RS is explicitly mapped to movement
- Suppress LS directional defaults when LS is rebound to arbitrary actions (normalizing both long and short aliases)
- Preserve LS analog movement when cardinal directions are mapped to D-Pad or face buttons
- Symmetrically evict active virtual stick sources and reset stick directions in applyBindings to avoid stuck-high inputs during rebinds
- Update sdl_controller_support_test.lua for default RS neutrality
- Add stick_rebind_isolation_test.lua covering default neutrality, rebind isolation, alias normalization, and eviction
- Add normalizePad() and aliases in GamepadMap for triggers and sticks
- Automatically load custom mappings from SDL_GAMECONTROLLERCONFIG and gamecontrollerdb.txt
- Add support for left and right analog sticks, triggers (L2/R2), stick clicks (LS/RS), and extra SDL buttons (Guide, Touchpad, Paddles)
- Route analog stick axis thresholds into discrete directional press/release events for seamless in-game and menu navigation
- Support rebinding buttons, thumbstick directions, triggers, and stick clicks in the CONTROLS menu (BindingsMenu) with clear abbreviated labels (LS-UP, RS-DN, L2, R2, etc.)
- Integrate stick axis event dispatch across Gen1, Gen2, and Gen3 game loops
- Add comprehensive test suite in tests/engine/sdl_controller_support_test.lua covering all axes, buttons, holds, rebinding, and multi-generation routing