Skip to content

Getting started: Input and controls

Game controllers

RetroArch is intended to be easily controlled with a controller. RetroArch uses the overall term controller which encompasses all input hardware that could be described by the terms joypad, gamepad, joystick, and others.

Map controls by controller, core, or game

RetroArch allows users to configure a controller once for many cores instead of having to configure each core individually. RetroArch also provides the freedom to configure specific cores and even individual games differently if the user wants.

What is a RetroPad?

RetroArch maps real-world controller inputs to a virtual controller called a RetroPad . A RetroPad resembles the common modern controller layout, and has:

  • a D-pad
  • 4 face buttons with an ABXY layout like a SNES gamepad (that is: A-right, B-bottom, X-top, Y-left)
  • Select / Start buttons
  • two shoulder buttons (L1, R1)
  • two trigger buttons (L2, R2)
  • dual analog sticks like a Sony DualShock, which can also be used as a button (L3, R3).

RetroPad Conceptual Diagram

You don't have to map all of the RetroPad buttons to a real world button. If your real controller has less buttons than a DualShock, then the virtual RetroPad will have some unmapped buttons, that's perfectly fine. If your real controller has more buttons, the extra buttons may be used as freely configurable hotkeys.

Conceptually, all RetroPad buttons can behave as analog (pressure sensitive), but the hardware typically only supports this for the trigger buttons. Gyroscope, acceleration, and illumination sensors may be supported, very much depending on the driver and the core.

Controller autoconfiguration

Most well-known controllers should work out of the box via the RetroArch autoconfiguration profile database. If the controller can be autoconfigured, the OSD will inform you of the autoconfiguration event. The menu hotkey is often pre-defined in the autoconfiguration profile.

Manual RetroPad binding

Not all controllers have autoconfigs. If that is the case for your controller, please refer to the Manual RetroPad Binding.

Keyboard controls

RetroArch provides a remappable set of bindings between a keyboard and the RetroPad abstraction as well as between a keyboard and RetroArch's hotkeys, details are below.

Cores with direct keyboard input

Please be aware that some cores, for example arcade emulator cores and vintage computer emulator cores, can also be configured to directly read the keyboard or controls that use a keyboard interface. If you are using a core configured for direct keyboard access, it is recommended to use the Game Focus mode (default: Scroll Lock) to disable those bindings while using the keyboard device, or unbind the conflicting RetroArch keyboard-to-RetroPad and hotkey bindings if only a few keys are needed. Otherwise, keyboard input will be captured by the RetroArch hotkeys and the core will not get the input.

Tip

Controls with keyboard interfaces can also benefit from defining a Hotkey Enable button. If this hotkey is defined, other hotkeys will not be activated unless it is pressed.

Manual RetroPad binding

If your gamepad is not recognized by autoconfiguration or if you would like to change its RetroPad binding, use the Input settings menu.

Screenshot of input binding

  • Navigate to Settings
  • Navigate to Input
  • Navigate to RetroPad Binds
  • Navigate to Port 1 Controls
  • Select Set All Controls
  • Press the buttons as required.

Tip

If you have several different controllers, do Save Controller Profile after each binding so that controllers will be recognized next time automatically.

Controls for multi-player

If you want to set-up local multi-player with games that support it:

  • Navigate to Settings
  • Navigate to Input
  • Navigate to RetroPad Binds

Here you will find the option to set binds for multiple users. Let's set-up User 1's controller:

  • Navigate to Port 1 Controls
  • Select Device Index

Select which currently plugged-in controller will be assigned to this player. After you finish, go back, select Port 2 Controls and repeat for user 2.

In case of multiple controllers, RetroArch will assign them by default in the order they are presented by the operating system. For more customization, use the device reservation options to explicitly assign a controller to a player.

Hotkeys

Hotkeys are combinations of buttons you can press in order to access options such as saving, loading, and exiting games. Hotkey binds can be configured at SettingsInputHotkeys . If you map Enable Hotkeys to a button, it will require that button to be held in order to trigger any hotkeys.

Tip

To unbind (effectively, disable) a hotkey, press Del on your keyboard or the Y button (the left one of the 4 buttons) on the RetroPad. To reset a hotkey to its default, press Space on your keyboard or the Start button on the RetroPad.

Remapping controls for individual cores or content

Core Controls Remapping alters how the core receives input rather than how the gamepad is coded, for example you can tell an individual core to switch button A and B on the RetroPad for gameplay, but you can still use "A" to select in the RetroArch menu and "B" to go back. This is opposed to changing the gamepad bindings in RetroArch itself which would swap "A" and "B" in the core but would also make "B" select and "A" back in the RetroArch menu.

How to remap the controls for a single core or game:

  • Start content with the core for which you want to remap controls
  • Go to Quick Menu and then Controls
  • Configure the buttons the way you want
  • Select Save Core Remap File
  • OR, if you want to save this remapping for the current game only, select Save Game Remap File

Default RetroArch keyboard bindings

General controller mapping

These controls are valid both in-game and in the menu:

User 1 Keyboard Default RetroPad Mapping Menu Action
Up Arrow RetroPad Up Move cursor up
Down Arrow RetroPad Down Move cursor down
Left Arrow RetroPad Left Move cursor left
Right Arrow RetroPad Right Move cursor right
Q RetroPad L1 Scroll one page up
W RetroPad R1 Scroll one page down
Z RetroPad B Return to the previous screen
X RetroPad A Select Item
A RetroPad Y Scan content / Remove highlighted input bind
S RetroPad X Search
Shift RetroPad Select Help
Enter RetroPad Start (see next section)

While in the menu, there are additional navigation keys defined for convenience.

Keyboard Input Retropad Input Menu Action
Backspace RetroPad B Return to the previous screen
Enter RetroPad A Select Item (note: Enter key is mapped to Select button in-game)
Del RetroPad Y Scan content / Remove highlighted input bind
/ RetroPad X Search
Space RetroPad Start Reset to default
RetroPad L3 Scroll to previous letter
RetroPad R3 Scroll to next letter
Home RetroPad L3 Scroll to top
End RetroPad R3 Scroll to bottom

Analog sticks are also able to control the menu. If needed, additional hotkeys can be disabled in SettingsInputMenu Controls, along with several other customization options.

Hotkey controls

Hotkey binds can be configured at SettingsInputHotkeys . If you map Enable Hotkeys to a key, it will require that key to be held in order to trigger any hotkeys. This can be useful in avoiding keyboard mapping conflicts between RetroArch and cores cores that use the keyboard for input.

Tip

Hotkeys can also be mapped to controller buttons.

Keyboard Input In-Game Action
Esc Exit RetroArch
Spacebar Fast forward toggle
L Fast forward hold
P Pause
P Frame advance
E Slow motion
R Rewind
H Reset
F1 Menu toggle
F2 Save state
F3 Show FPS
F4 Load state
F5 Desktop menu
F6 Decrease current state slot
F7 Increase current state slot
F8 Take screenshot
F9 Mute
F11 Grab mouse
+ Volume Up
- Volume Down
F Fullscreen toggle
M Next shader
N Previous shader
I Netplay toggle play/spectate
U Cheat toggle
Y Next cheat
T Previous cheat

Platform-specific controls

Nintendo Switch

USB keyboards and mice: All keyboards seem to work. Not all mice seem to work. Mouse compatibility sheet.

Touch mouse emulation: The Switch touchscreen can be used for mouse control like a laptop touchpad. The following gestures are supported.

Touch Input Effect
single finger drag move the mouse pointer (indirectly like on a touchpad)
single short tap left mouse click
dual finger short tap* right mouse click
dual finger drag drag'n'drop (left mouse button is held down)
three finger drag drag'n'drop (right mouse button is held down)

*: hold one finger, short tap with another