Controllers Support Matrix - drizztdourden08/relic-of-the-past GitHub Wiki

Controller support

Which controllers work on each platform, over which connection, and where features are limited. Input parsing, controller presets, calibration, and haptics are the same everywhere; only how the device is reached differs per platform.

Legend: โœ… supported ยท โš ๏ธ needs one-time setup ยท โŒ not available.

Connections per platform

Connection Windows macOS Linux Android
Raw HID (full feature access) โœ… โœ… โš ๏ธ udev rules โœ… USB-OTG only
Standard gamepad (buttons/axes/rumble) โœ… โœ… โœ… โœ…

On Android, raw HID is available over a wired USB-OTG connection only. Bluetooth controllers come through the standard gamepad layer (buttons, axes, basic rumble).

Features per platform

Feature Windows macOS Linux Android (USB-OTG) Android (Bluetooth)
Standard input (buttons/axes) โœ… โœ… โœ… โœ… โœ…
Precise raw-HID input โœ… โœ… โš ๏ธ udev โœ… โŒ
Output writes (LEDs/config) โœ… โœ… โš ๏ธ udev โœ… โŒ
Basic rumble โœ… โœ… โœ… โœ… โœ… (device-dependent)
Advanced HID haptics โœ… โœ… โš ๏ธ udev โœ… โŒ
Switch / NSO controller init โœ… โœ… โš ๏ธ udev โœ… โŒ
Stick / trigger calibration โœ… โœ… โœ… โœ… โœ…

On Linux, the โš ๏ธ features need the controller udev rules from linux-setup.md. The .deb installs them automatically.

By controller

Controller Windows / macOS Linux Android (USB-OTG) Android (Bluetooth)
Xbox โœ… โœ… โœ… โœ…
PlayStation (DS4 / DualSense) โœ… โœ… โœ… โœ… standard
8BitDo / generic pads โœ… โœ… โœ… โœ… standard
Switch Pro Controller โœ… โœ… โœ… โœ… standard
Switch Pro Controller 2 โœ… โœ… โœ… โŒ
NSO GameCube โœ… โœ… โœ… โŒ
Keyboard โœ… โœ… โœ… โœ…

Limitations

  • Linux needs the controller udev rules for raw-HID controllers (Nintendo, Sony) and for the Switch/NSO init. Without them, only standard gamepad input works. The .deb installs the rules; AppImage users install them manually (linux-setup.md).
  • Android Bluetooth delivers only standard gamepad input (buttons, axes, basic rumble). Raw HID, advanced haptics, output writes, and the Switch/NSO init are not available over Bluetooth, because Android gives apps no raw Bluetooth-HID access.
  • Switch Pro Controller 2 and NSO GameCube need a vendor init sequence over a raw connection before they send input. On desktop this works over USB and Bluetooth; on Android it works over USB-OTG only. Over Bluetooth they don't work, so use the on-screen touch controls instead.
  • iOS is not a supported target yet.