You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Activate and Improve controller support across UI menus, bindings, and loading flows
This series of changes improves the controller experience in Q3Rally by making menu navigation, key rebinding, and save/readback behavior work reliably with modern gamepad keys (K_PAD0_*).
It also removes legacy key-range assumptions and introduces optional joystick auto-enable on device detection for better out-of-the-box behavior.
1) Better controller navigation in menus and scroll lists
Added/expanded gamepad navigation support in UI menu handling:
A/Start as confirm/select
B as back/cancel
DPAD up/down for menu cursor movement
Extended scroll-list input to support controller directional controls directly (including map lists), with support for:
K_PAD0_DPAD_*
K_PAD0_LEFTSTICK_*
This allows selecting list entries using the left stick, not only keyboard arrows.
2) Controller-friendly back/cancel semantics in controls UI
Added K_PAD0_B handling in Rally Controls for:
exit-confirm cancel action
backing out from controls menu
canceling active “waiting for key” bind mode
so controller users can consistently back out without keyboard/mouse.
3) Graphics loading/update dialog can be controlled with gamepad
Updated loading/update acknowledgement key handling to accept controller confirm/cancel:
confirm: PAD0_A, JOY1, Enter
cancel/skip: PAD0_B, Escape, mouse2
Added fallback behavior to default to “Skip” when confirming with no hovered button, so flow is always operable via controller only.
4) Controller binds now persist/read back correctly
Replaced fixed 0..255 key scans with 0..MAX_KEYS in controls key-assignment lookup paths.
This fixes cases where controller binds looked unsaved because K_PAD0_* key indices were outside the old range.
5) Extended bind-start handling for controller keys
Added Controls_IsMenuSelectKey in shared UI binding flow to accept gamepad buttons as valid bind-start keys, improving controller-first rebinding experience.
6) Optional joystick auto-enable when device is detected
Added in_joystickAutoEnable cvar (default 1) and logic to auto-enable joystick input if a device is detected and joystick input is currently off.
Documented the new cvar in engine docs.
7) Cleanup and warning fixes
Fixed Controls_SearchFieldHasFocus check to avoid a meaningless array-null comparison and use proper bounds checking.
Fixed misleading indentation in Controls_MenuKey to remove compiler warning and keep control flow clear.
0 commit comments