Skip to content

Commit cb903d2

Browse files
authored
Merge pull request #988 from zoltanvb/device_reservation
Slight rework of "Input and Controls"
2 parents 884f03f + 055dec6 commit cb903d2

File tree

1 file changed

+63
-55
lines changed

1 file changed

+63
-55
lines changed

docs/guides/input-and-controls.md

Lines changed: 63 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -7,62 +7,71 @@ RetroArch is intended to be easily controlled with a controller. RetroArch uses
77
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.
88

99
### What is a RetroPad?
10-
RetroArch controls map real-world controller inputs to a virtual controller called a "RetroPad". A RetroPad does not exist in real life, it's a concept only within RetroArch. A RetroPad has an ABXY layout like a SNES gamepad plus four shoulder buttons and dual analog sticks like a Sony DualShock.
10+
RetroArch maps real-world controller inputs to a virtual controller called a `RetroPad` . A RetroPad resembles the common modern controller layout, and has:
1111

12-
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 also has less buttons, that's perfectly fine.
12+
- a D-pad
13+
- 4 face buttons with an ABXY layout like a SNES gamepad (that is: A-right, B-bottom, X-top, Y-left)
14+
- Select / Start buttons
15+
- two shoulder buttons (L1, R1)
16+
- two trigger buttons (L2, R2)
17+
- dual analog sticks like a Sony DualShock, which can also be used as a button (L3, R3).
1318

1419
![RetroPad Conceptual Diagram](../image/guides/retropad-conceptual-diagram.png)
1520

21+
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.
22+
23+
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.
24+
1625
### Controller autoconfiguration
17-
Many 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.
26+
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.
1827

1928
!!! info "Manual RetroPad binding"
20-
Not all controllers have autoconfigs. If that is the case for your controller, please refer to the **Manual RetroPad binding** section below.
29+
Not all controllers have autoconfigs. If that is the case for your controller, please refer to the [Manual RetroPad Binding](#manual-retropad-binding).
2130

2231
## Keyboard controls
23-
RetroArch provides a remappable set of bindings between a keyboard and the RetroPad abstraction as well as between a keyboard and RetroArch's hotkeys. Please refer to **Default RetroArch keyboard bindings** in this doc as a reference.
32+
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](#default-retroarch-keyboard-bindings).
2433

2534
### Cores with direct keyboard input
26-
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 that users unbind the RetroArch keyboard-to-RetroPad and hotkey bindings or use the `Game Focus` mode to disable those bindings while using the keyboard device.** Otherwise, keyboard input may result in multiple conflicting simultaneous actions by the core.
35+
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.
2736

2837
!!! tip
29-
Controls with keyboard interfaces can also benefit from defining a **Hotkey Enable** button in RetroArch which is required to be held down in order to activate the other hotkeys.
38+
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.
3039

3140
## Manual RetroPad binding
3241

33-
If your gamepad does not have an autoconfiguration or if you would like to change its default RetroPad binding, use the **Input** settings menu.
42+
If your gamepad is not recognized by autoconfiguration or if you would like to change its RetroPad binding, use the **Input** settings menu.
3443

3544
![Screenshot of input binding](../image/retroarch/xmb/autoconf.gif)
3645

3746
- Navigate to **Settings**
3847
- Navigate to **Input**
39-
- Navigate to **Input User 1 Binds**
40-
- Select **User 1 Bind All**
41-
- Press the buttons as required
48+
- Navigate to **RetroPad Binds**
49+
- Navigate to **Port 1 Controls**
50+
- Select **Set All Controls**
51+
- Press the buttons as required.
4252

4353
!!! tip
44-
If you have several different controller types you may want to use the **User 1 Save Autoconfig** followed by **User 1 Bind Default All** options after binding in order to achieve hotplug functionality
54+
If you have several different controllers, do **Save Controller Profile** after each binding so that controllers will be recognized next time automatically.
4555

4656
## Controls for multi-player
4757

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

5060
- Navigate to **Settings**
5161
- Navigate to **Input**
62+
- Navigate to **RetroPad Binds**
5263

53-
Here you will find the option to set binds for multiple users, "Input User 1 Binds", "Input User 2 Binds" and so on.
54-
55-
So lets set-up User 1's controller:
64+
Here you will find the option to set binds for multiple users. Let's set-up User 1's controller:
5665

57-
- Navigate to **Input User 1 Binds**
58-
- Select **User 1 Device Index**
66+
- Navigate to **Port 1 Controls**
67+
- Select **Device Index**
5968

60-
From here using the left/right buttons, select which currently plugged-in controller will be assigned to what player. While here you should also bind the controls to this player by pressing them on the assigned controller, Select **User 1 Bind All** to do this.
69+
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.
6170

62-
After you finish, go back, select **Input User 2 Binds** and repeat for user 2.
71+
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.
6372

6473
## Hotkeys
65-
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 `Settings``Input``Input Hotkey Binds`. If you map `Enable Hotkeys` to a button, it will require that button to be held in order to trigger any hotkeys.
74+
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 `Settings``Input``Hotkeys` . If you map `Enable Hotkeys` to a button, it will require that button to be held in order to trigger any hotkeys.
6675

6776
!!! tip
6877
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.
@@ -80,53 +89,52 @@ Core Controls Remapping alters how the core receives input rather than how the g
8089

8190
## Default RetroArch keyboard bindings
8291

83-
### Keyboard gameplay controls
84-
85-
| User 1 Keyboard | Default RetroPad Mapping |
86-
|---------------------------------------------------------------------------------------|--------------------------------------------------------------|
87-
| ![Up Arrow](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Arrow_Up.png) | ![RetroPad Up](../image/retropad/retro_dpad_up.png) |
88-
| ![Down Arrow](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Arrow_Down.png) | ![RetroPad Down](../image/retropad/retro_dpad_down.png) |
89-
| ![Left Arrow](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Arrow_Left.png) | ![RetroPad Left](../image/retropad/retro_dpad_left.png) |
90-
| ![Right Arrow](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Arrow_Right.png) | ![RetroPad Right](../image/retropad/retro_dpad_right.png) |
91-
| ![Q](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Q.png) | ![RetroPad L1](../image/retropad/retro_l1.png) |
92-
| ![W](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_W.png) | ![RetroPad R1](../image/retropad/retro_r1.png) |
93-
| ![Z](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Z.png) | ![RetroPad B](../image/retropad/retro_b.png) |
94-
| ![X](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_X.png) | ![RetroPad A](../image/retropad/retro_a.png) |
95-
| ![A](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_A.png) | ![RetroPad Y](../image/retropad/retro_y.png) |
96-
| ![S](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_S.png) | ![RetroPad X](../image/retropad/retro_x.png) |
97-
| ![Shift](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Shift.png) | ![RetroPad Select](../image/retropad/retro_select.png) |
98-
| ![Enter](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Enter.png) | ![RetroPad Start](../image/retropad/retro_start.png) |
92+
### General controller mapping
93+
94+
These controls are valid both in-game and in the menu:
95+
96+
| User 1 Keyboard | Default RetroPad Mapping | Menu Action |
97+
|-----------------------------------------------------------------------------------------|--------------------------------------------------------------| ----------------------------- |
98+
| ![Up Arrow](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Arrow_Up.png) | ![RetroPad Up](../image/retropad/retro_dpad_up.png) | Move cursor up |
99+
| ![Down Arrow](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Arrow_Down.png) | ![RetroPad Down](../image/retropad/retro_dpad_down.png) | Move cursor down |
100+
| ![Left Arrow](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Arrow_Left.png) | ![RetroPad Left](../image/retropad/retro_dpad_left.png) | Move cursor left |
101+
| ![Right Arrow](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Arrow_Right.png) | ![RetroPad Right](../image/retropad/retro_dpad_right.png) | Move cursor right |
102+
| ![Q](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Q.png) | ![RetroPad L1](../image/retropad/retro_l1.png) | Scroll one page up |
103+
| ![W](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_W.png) | ![RetroPad R1](../image/retropad/retro_r1.png) | Scroll one page down |
104+
| ![Z](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Z.png) | ![RetroPad B](../image/retropad/retro_b.png) | Return to the previous screen |
105+
| ![X](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_X.png) | ![RetroPad A](../image/retropad/retro_a.png) | Select Item |
106+
| ![A](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_A.png) | ![RetroPad Y](../image/retropad/retro_y.png) | Scan content / Remove highlighted input bind |
107+
| ![S](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_S.png) | ![RetroPad X](../image/retropad/retro_x.png) | Search |
108+
| ![Shift](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Shift.png) | ![RetroPad Select](../image/retropad/retro_select.png) | Help |
109+
| ![Enter](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Enter.png) | ![RetroPad Start](../image/retropad/retro_start.png) | (see next section) |
99110

100111
### Menu controls
101112

102-
The keyboard inputs shown here are active only when `Settings``Input``Unified Menu Controls` is disabled (default). Otherwise, only Retropad inputs are used.
113+
While in the menu, there are additional navigation keys defined for convenience.
103114

104115
| Keyboard Input | Retropad Input | Menu Action |
105116
| ------------------------------------------------------------------------------------- | --------------------------------------------------------- | ----------------------------- |
106-
| ![Up Arrow](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Arrow_Up.png) | ![RetroPad Up](../image/retropad/retro_dpad_up.png) | Move cursor up |
107-
| ![Down Arrow](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Arrow_Down.png) | ![RetroPad Down](../image/retropad/retro_dpad_down.png) | Move cursor down |
108-
| ![Left Arrow](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Arrow_Left.png) | ![RetroPad Left](../image/retropad/retro_dpad_left.png) | Move cursor left |
109-
| ![Right Arrow](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Arrow_Right.png) | ![RetroPad Right](../image/retropad/retro_dpad_right.png) | Move cursor right |
110-
| ![Page Up](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Page_Up.png) | ![RetroPad L1](../image/retropad/retro_l1.png) | Scroll one page up |
111-
| ![Page Down](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Page_Down.png) | ![RetroPad R1](../image/retropad/retro_r1.png) | Scroll one page down |
112-
| ![Backspace](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Backspace.png) | ![RetroPad B](../image/retropad/retro_b.png) | Return to the previous screen |
113-
| ![Enter](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Enter.png) | ![RetroPad A](../image/retropad/retro_a.png) | Select Item |
114-
| ![Del](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Del.png) | ![RetroPad Y](../image/retropad/retro_y.png) | Scan content / Remove highlighted input bind |
115-
| ![/](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Slash.png) | ![RetroPad X](../image/retropad/retro_x.png) | Search |
116-
| ![Shift](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Shift.png) | ![RetroPad Select](../image/retropad/retro_select.png) | Help |
117-
| ![Space](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Space.png) | ![RetroPad Start](../image/retropad/retro_start.png) | Reset to default |
118-
| ![Home](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Home.png) | ![RetroPad L3](../image/retropad/retro_l3.png) | Scroll to top |
119-
| ![End](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_End.png) | ![RetroPad R3](../image/retropad/retro_r3.png) | Scroll to bottom |
117+
| ![Backspace](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Backspace.png) | ![RetroPad B](../image/retropad/retro_b.png) | Return to the previous screen |
118+
| ![Enter](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Enter.png) | ![RetroPad A](../image/retropad/retro_a.png) | Select Item (note: Enter key is mapped to Select button in-game) |
119+
| ![Del](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Del.png) | ![RetroPad Y](../image/retropad/retro_y.png) | Scan content / Remove highlighted input bind |
120+
| ![/](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Slash.png) | ![RetroPad X](../image/retropad/retro_x.png) | Search |
121+
| ![Space](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Space.png) | ![RetroPad Start](../image/retropad/retro_start.png) | Reset to default |
122+
| | ![RetroPad L3](../image/retropad/retro_l2.png) | Scroll to previous letter |
123+
| | ![RetroPad R3](../image/retropad/retro_r2.png) | Scroll to next letter |
124+
| ![Home](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Home.png) | ![RetroPad L3](../image/retropad/retro_l3.png) | Scroll to top |
125+
| ![End](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_End.png) | ![RetroPad R3](../image/retropad/retro_r3.png) | Scroll to bottom |
126+
127+
Analog sticks are also able to control the menu. If needed, additional hotkeys can be disabled in `Settings``Input``Menu Controls`, along with several other customization options.
120128

121129
### Hotkey controls
122130

123-
Hotkey binds can be configured at `Settings``Input`'Input Hotkey Binds'. 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.
131+
Hotkey binds can be configured at `Settings``Input``Hotkeys` . 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.
124132

125133
!!! Tip
126-
Hotkeys can also be mapped to RetroPad buttons.
134+
Hotkeys can also be mapped to controller buttons.
127135

128-
| Keyboard Input | In-Game Action |
129-
| ---------------------------------------------------------------------------- | ---------------------------- |
136+
| Keyboard Input | In-Game Action |
137+
| ------------------------------------------------------------------------------ | ---------------------------- |
130138
| ![Esc](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Esc.png) | Exit RetroArch |
131139
| ![Spacebar](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_Space.png) | Fast forward toggle |
132140
| ![L](../image/Button_Pack/Keyboard_Mouse/Dark/Keyboard_Black_L.png) | Fast forward hold |

0 commit comments

Comments
 (0)