콘텐츠로 건너뛰기
SDL Enhanced Input (Universal Controller Support) 제품 등록을 위한 미디어 1개

설명

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 — PS3, 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

  • CommonUI Ready — emits per-device hardware identifiers and triggers CommonUI's input-type autodetect on stick movement, so button icons and menu navigation follow the active controller (setup guide included)

  • Raw Joystick Anti-Drift — configurable center deadzone that filters worn or uncalibrated stick drift at the source, tunable per-player at runtime and separate from the Enhanced Input gameplay deadzone

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.

FAQ

Does this replace UE's built-in input?

No. It registers alongside native input. Standard buttons map to FGamepadKeyNames, so existing actions work unchanged.

Does this modify engine files?

No. SDL3 is loaded as a dynamic library at runtime.

Can I use this with local multiplayer?

Yes. Up to 8 gamepads + 4 joysticks, each on a separate player slot.

Can I test without a physical controller?

Yes. SDL.SimButton and SDL.SimAxis simulate a virtual joystick with 24 buttons and 8 axes.

Does the Wiimote work on macOS/Linux?

Not currently. Wiimote uses Windows Bluetooth APIs. The rest of the plugin could support other platforms once SDL3 builds are provided.

Documentation & bug reports?

Right here -> GitHub

포함된 포맷