[Feature Request] <hotkey for input overlays / conditional overlay switching>
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 14.1k
- Forks
- 2.2k
- Avg merge
- 7h 35m
- Merged PRs (30d)
- 51
Description
Feature Request: Conditional Overlay Profiles (controller-aware overlay switching)
Summary
RetroArch currently supports Hide Overlay When Controller Is Connected, which removes the touchscreen overlay entirely if a gamepad is present. This is great for full-controller play, but it prevents hybrid setups.
Ask: Allow users to define two overlay presets and switch between them automatically based on input state:
- Touch Only: full virtual gamepad overlay
- Controller Connected: minimal overlay (e.g., Menu, Coin, Rewind, FF) that stays available even with a physical controller
This enables controller-first play while retaining a few touch actions that aren’t on the pad (e.g., an on-screen coin button for arcade cores).
Motivation / Problem
- With Hide Overlay When Controller Is Connected = ON, the overlay disappears entirely; players lose quick access to menu/utility actions that aren’t mapped on their controller.
- With it OFF, the full touch overlay clutters the screen while using a controller.
- There’s no built-in way to auto-select a minimal overlay when a controller is connected and auto-select a full overlay when it isn’t.
Example Use Cases
- Arcade (MAME/FBA): Use a physical controller for gameplay, keep a tiny overlay for Coin, Menu, Pause, FF.
- Shaders/Quick Menu access: Minimal overlay gives a tap target to open Quick Menu without needing controller combos.
- Handheld on the go: No controller detected → full touch overlay auto-appears.
Proposed Behavior
Introduce conditional overlay profiles that respond to hotplug state:
- Touch Only state (no controller detected):
- Load a Full Touch Overlay preset (user-selectable).
- Controller Connected state (any recognized gamepad):
- Load a Minimal Overlay preset (user-selectable) instead of hiding the overlay entirely.
Optional:
- Hysteresis / delay to prevent rapid toggling during connect/disconnect flaps (e.g.,
500–1500ms). - Manual override hotkeys to force a profile for the current session.
- Per-core/game overrides (use existing Overrides flow).
UI / UX Proposal
Settings → On-Screen Display → On-Screen Overlay
- Overlay Behavior (new)
Static (use selected preset)(current behavior)Hide when controller is connected(current behavior)Conditional profiles (recommended)- Touch-only preset: (file picker → .cfg)
- Controller-connected preset: (file picker → .cfg)
- Transition delay (ms): (numeric; default 800ms)
Quick Menu → Controls / Overlay
- Show the currently active profile (Touch vs Controller).
- Provide “Switch profile” action (temporary override until next hotplug event).
Alternatives Considered
- Manually bind hotkeys to Overlay Next/Previous and cycle to a minimal overlay when a controller is connected.
Limitations: Requires manual switching per session and doesn’t track hotplug state; error-prone UX.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the existing “Hide Overlay When Controller Is Connected” behavior, overlay preset selection, and controller hotplug handling. Review how the proposed settings and Quick Menu changes would fit those paths; done means reliably selecting the touch-only or controller-connected preset, with the requested delay and overrides if included.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- design, frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100