RetroArch makes use of two input systems in order to support the full range of input devices available across RetroArch's supported platforms.
Input Drivers provide access to keyboards, mice, and mouse-like devices such as lightguns, spinners, steering wheels, etc.
Controller Drivers provide access to gamepads and joysticks.
Note
Controller drivers were previously referred to as joypad drivers. Some documentation may still use the older "joypad" terminology.
Absolute mouse devices in the tables below refers to input drivers which support mouse-like devices such as light guns, air mice, and Wiimotes that use 'absolute' coordinate systems. Certain input drivers only support mouse devices with 'relative' coordinate systems.
udev is the newest input driver and uses the evdev joypad interface at /dev/input. It supports hotplugging and force feedback (if supported by device). udev reads evdev events directly and supports keyboard callback, mice, and touchpads. libudev is used to discover devices and support hotplugging.
Most Linux distributions prevent users from capturing keyboard/mouse information by default. Only root and users in the group "input" are able to access raw input. This is a security feature in case the system is used by multiple users.
The easiest way to gain access to this input is to:
Step 1: Add your user to the group "input" with the command: sudo usermod -a -G input `whoami`
Step 2: Log out, and then log back in
If adding your user to the input group does not succeed, you may also set up a udev rule which makes this input accessible to non-root users:
Step 1: Add to /etc/udev/rules.d/99-evdev.rules the following text: KERNEL=="event*", NAME="input/%k", MODE="666"
Step 2: Reload the rules with sudo udevadm control --reload-rules.
The older linuxraw driver is available which uses the legacy joystick API at /dev/input/js*. The linuxraw driver requires an active TTY in order to read keyboard events.
MFi controllers are primarily supported on Apple devices, which means that the operating systems supporting this configuration would include:
- iOS: Used on iPhones and iPads.
- macOS: Used on Mac computers.
- tvOS: Used on Apple TV devices. ↩