
Opis
SDL Enhanced Input
Bridges SDL3 gamepad and joystick input into Unreal Engine's Enhanced Input system, unlocking full support for controllers that UE doesn't handle natively — including DualSense adaptive triggers, motion sensors, touchpad, racing wheels, flight sticks, arcade controllers, and Nintendo Wiimotes.
The Problem
Unreal Engine's built-in input system only recognizes a limited set of standard gamepads. DualSense adaptive triggers? Ignored. Gyroscope and accelerometer? Not exposed. Touchpad? Invisible. Racing wheels, flight sticks, and arcade controllers? Partially supported at best. Wiimotes? Not even on the radar.
The Solution
SDL Enhanced Input uses SDL3 — the industry-standard input library trusted by thousands of games — as a bridge into UE's Enhanced Input system. It registers as a standard IInputDevice, so all inputs flow through the same Input Actions and Mapping Contexts you already use. No engine modifications, no hacks.
Supported Devices
PlayStation — PS4, PS5 with adaptive triggers, touchpad, motion, LED
Xbox — 360, One, Series with trigger rumble
Nintendo — Switch Pro, Joy-Cons, GameCube adapters
Racing Wheels — Logitech G29/G920+ with force feedback and RPM LEDs
Flight Sticks & HOTAS — Full axes, buttons, hats, force feedback
Arcade Sticks — Full button and stick support via raw joystick
Wiimote — BT scanning, buttons, accel/gyro, Nunchuck, IR tracking (Windows)
Generic HID — Up to 24 buttons, 8 axes, 4 hats on any SDL device
Key Features
DualSense Adaptive Triggers — Feedback, Weapon, Vibration effects with full parameter control from Blueprint
Motion Sensors — Gyro + accel as Enhanced Input axes with auto-calibration and deadzones
Touchpad Input — Two-finger position tracking, touch state, click on DualSense/DS4
Advanced Haptics — 11 force feedback types (Constant, Sine, Spring, Damper, Ramp...) with handle-based lifecycle and capability queries
Racing Wheel LEDs — Logitech RPM LED bitmask patterns or tachometer percentage
LED Control — Lightbar color on DualSense, DS4, Switch Pro, and others
80+ Custom FKeys — Joystick axes/buttons/hats, motion, gamepad extras (Guide, Misc1-6, Paddles), touchpad, Wiimote IR
Battery & Device Info — Query type, name, VID/PID, battery %, connection state
Virtual Joystick — Simulate buttons/axes via console for testing without hardware
Connection Events — Blueprint delegates for connect/disconnect with device info
Multi-Controller — Up to 8 gamepads + 4 joysticks, optional "force all to Player 0"
Configurable SDL Drivers — HIDAPI, DirectInput, RawInput, WGI tuning from Project Settings
Console Commands
SDL.WiimoteScan [sec] — Start BT scan for Wiimotes
SDL.SetLED R G B [slot] — Set lightbar color
SDL.SetTrigger type [params] — DualSense adaptive trigger effect
SDL.Haptic type [str] [dur] [slot] — Play haptic effect
SDL.SetWheelLED pattern [slot] — Logitech RPM LEDs
SDL.SimButton / SDL.SimAxis / SDL.SimDestroy — Virtual joystick
Example Content (160+ Assets)
5 Input Mapping Contexts — Gamepad, Motion, Touchpad, Wiimote, Joystick
40+ Input Actions — Every button, axis, sensor, touchpad input
Debug UI Widgets — Real-time axes, buttons, hats visualization
3D Controller Models — DualSense, G29, Wiimote, Flight Stick with per-button highlighting
Example Level — Playable demo showcasing all features
How It Works
The plugin loads SDL3 dynamically at startup and registers as an IInputDevice. Each tick, it polls SDL for events and translates them into FKey messages through UE's input pipeline. Gamepads map to standard FGamepadKeyNames (existing actions work out of the box) plus custom FKeys for features UE doesn't expose. Raw joysticks give direct access to every axis, button, and hat.
Slot ranges distinguish device types: 0-7 for gamepads, 100+ for Wiimotes, 200+ for raw joysticks. Wiimotes use a separate direct HID connection with background BT scanning.
This plugin requires the built-in plugin EnhancedInput to be enabled (EnabledByDefault since UE 5.0)
Documentation & bug reports? -> GitHub






