Set up safe RetroArch hotkeys on Android
First prove the controller's normal RetroPad mapping, then assign one button as Enable Hotkeys and bind only the actions you actually need. Use a two-button chord for destructive or session-changing actions such as Quit, Reset, Load State, and Close Content. Restart RetroArch and test the menu, gameplay, save/load direction, and exit path with authorized content before copying the setup.
Do this in order
- 01
Disconnect extra controllers, confirm the target pad works in Android and the RetroArch menu, and back up the active configuration before changing hotkeys.
- 02
Open Settings → Input → Hotkeys, clear any accidental bindings, and assign one reachable button to Enable Hotkeys.
- 03
Bind Menu Toggle first, then add only the required actions; reserve a deliberate chord for Quit, Close Content, Reset, Load State, and Save State.
- 04
Load authorized test content and verify ordinary game buttons do nothing special when Enable Hotkeys is not held.
- 05
Hold Enable Hotkeys and test Menu Toggle, then confirm Save State and Load State are not reversed and that Quit requires the intended chord.
- 06
Quit normally, restart RetroArch, repeat the test, and record the frontend version, input driver, controller transport, and final chord.
Decision and diagnostic table
| Symptom | Likely hotkey boundary | Safe correction |
|---|---|---|
| A face button quits or resets | Action is bound without a practical enable chord | Assign Enable Hotkeys or unbind the action |
| Core never receives a keyboard key | Frontend hotkey intercepts direct keyboard input | Use Game Focus or remove the conflicting bind |
| Save seems to erase progress | Save/Load State direction is confused | Test with a disposable state and label both binds |
| Chord works until restart | Configuration was not saved or another config loads | Save, restart, and inspect the active config path |
Hotkeys sit above the core
RetroArch maps physical input to its RetroPad and separately watches frontend hotkeys. A core can therefore receive the correct game button while the frontend also interprets an unsafe global action if the hotkey layer is too broad.
Keep the controller profile stable. Repair frontend actions under Hotkeys, and use a game or core remap only for the emulated controls.
Enable Hotkeys creates an intentional namespace
Libretro documents that assigning Enable Hotkeys makes other hotkeys require that button. This turns common game buttons into frontend commands only while the modifier is held.
Do not place the modifier where it is held constantly during normal play. Test simultaneous diagonals and action buttons so a comfortable chord does not introduce a gameplay conflict.
Treat state and exit actions as destructive
Load State can replace the running session with an older snapshot, and Reset, Close Content, or Quit can discard unsaved progress. Bind them sparingly and verify each with a disposable authorized test case.
A visible menu path remains an important recovery route. If the controller chord fails after an update, use the menu to inspect or unbind it rather than repeatedly guessing button combinations.
Hotkey configuration does not grant rights to ROM, BIOS, CHD, artwork, or music. Test with ArcadeShelf-original, public-domain, open-source, personally dumped, or explicitly authorized content, and do not share configuration bundles that include copyrighted game data.