Streamlined Xbox controller emulator for Windows. Maps inputs from multiple gaming devices (steering wheels, joysticks, gamepads) to a single emulated Xbox 360 controller.
- Multi-input to single output - Map multiple physical buttons to the same Xbox button using OR logic (e.g., wheel B button + handbrake = Xbox B)
- DirectInput & RawInput support - Works with virtually any gaming controller
- Force Feedback - Route rumble/vibration from games to physical devices (steering wheels, gamepads with FFB)
- Device Hiding - HidHide integration to hide physical controllers from games, preventing double-input issues
- Game Auto-Profile - Automatically start profiles when specific games launch, stop when they exit
- Profile management - Create, duplicate, and switch profiles easily
- Interactive mapping - "Press button to map" configuration interface
- System tray integration - Minimize to tray, double-click to restore, run in background
- Quick Add Game hotkey - Press Ctrl+Shift+G while a game is focused to add it to the running profile
- CLI support - Command-line interface for scripting and automation
- Toast notifications - Windows notifications when profiles start/stop or games are detected
- Backup/restore - Export and import all settings via
.xorbackupfiles - Crash reporting - One-click GitHub issue creation with diagnostic info
- Axis response curves - Per-axis sensitivity tuning with visual curve preview (less sensitive near center for high-rotation wheels, or more sensitive for low-rotation)
- Inner/outer deadzones - Per-axis deadzone configuration to eliminate drift or snap to full deflection
- Digital-to-axis mapping - Map HAT switches or D-pad buttons to analog stick axes (e.g., HAT left/right → RightStickX)
- Visual preview mode - Test mappings in the profile editor without creating a virtual controller
- Plugin system - Optional plugins for device-specific features (e.g., Moza wheel settings)
- Windows 10/11
- .NET 10.0 Runtime
- ViGEmBus driver (required for Xbox controller emulation)
- HidHide driver (optional, for device hiding)
Download the latest release from the Releases page:
- Setup installer (
XOutputRedux-x.x.x-Setup.exe) - Recommended, includes options for PATH and startup - Portable mode - Drop a
portable.txtfile next toXOutputRedux.exeto store all config in adata\subfolder (useful for USB drives or no-install setups)
- Install the ViGEmBus driver (required)
- Optionally install HidHide for device hiding (XOutputRedux will prompt to install if missing)
Simply run XOutputRedux.exe to open the graphical interface.
- Devices tab - View all detected input devices with "Listen for Input" highlighting
- Profiles tab - Create and manage mapping profiles
- Games tab - Configure game-to-profile associations for auto-start
- Status tab - Check driver status and active emulation
- Options tab - Configure startup behavior and settings
- Test tab - Visual Xbox controller showing real-time output state
- About tab - Version info and links to GitHub
- Click "New Profile" and enter a name
- Double-click the profile to edit (or right-click → Edit)
- In the profile editor:
- Double-click an Xbox output to start capturing, or select and click "Capture Input"
- Press the button or move the axis you want to map
- Add multiple inputs to the same output for OR logic
- Configure Force Feedback routing in the "Force Feedback" tab
- Set up device hiding in the "Device Hiding" tab
- Click "Save" to save your mappings
Tip: If a profile is running, you can still view its mappings (read-only mode).
- Select a profile from the list
- Click "Start" to begin emulation
- The app will minimize to system tray and continue running
- Click "Stop" or right-click the tray icon to stop
# Start the default profile (launches GUI if not running)
XOutputRedux start
# Start a specific profile
XOutputRedux start "My Profile"
# Stop the running profile
XOutputRedux stop
# Check status of running instance
XOutputRedux status [--json]
# Enable/disable game monitoring
XOutputRedux monitor on
XOutputRedux monitor off
# List detected input devices
XOutputRedux list-devices [--json]
# List available profiles
XOutputRedux list-profiles [--json]
# Show help
XOutputRedux helpXOutputRedux includes a native Stream Deck plugin for controlling profiles directly from your Stream Deck.
Installation:
- Download
com.xoutputredux.streamDeckPluginfrom the Releases page - Double-click to install
Available Actions:
- Start/Stop Profile - Toggle a specific profile on/off (select from dropdown)
- Game Monitor - Toggle game auto-profile monitoring on/off
- Launch App - Open the XOutputRedux GUI
The plugin communicates directly with the running GUI via IPC. If the GUI isn't running when you press an action, it will start automatically (minimized to tray).
XOutputRedux supports optional plugins that add device-specific features to the profile editor.
Adds a Moza Wheel tab to the profile editor with hardware settings that are sent directly to your Moza wheel base when a profile starts. This lets you store per-game wheel settings inside your XOutputRedux profiles.
Requirements:
- Moza racing wheel (R5, R9, R12, R16, R21, etc.)
- Moza Pit House running (the plugin communicates via Pit House's SDK)
Available Settings:
| Setting | Range | Description |
|---|---|---|
| Wheel Rotation | 90-2700° | Total steering angle lock-to-lock |
| FFB Strength | 0-100% | Overall force feedback intensity |
| Max Torque | 50-100% | Caps peak force to prevent jarring jolts |
| FFB Reverse | On/Off | Flip FFB direction |
| Damping | 0-100% | Resistance that slows wheel movement |
| Center Spring | 0-100% | Force pulling wheel back to center |
| Natural Inertia | 100-500% | Simulated weight of the steering wheel |
| Speed Damping | 0-100% | Resistance increasing with turning speed |
| Natural Friction | 0-100% | Constant grip resistance, wheel feels "connected" even without game FFB |
| Speed Damping Start Point | 0-100% | Threshold speed where Speed Damping engages |
| Hands Off Protection | 0-100% | Safety feature, caps torque when hands leave wheel |
Installation:
- Download
XOutputRedux-x.x.x-MozaPlugin.zipfrom the Releases page - Create a
plugins\Mozafolder next toXOutputRedux.exe - Extract the ZIP contents into that folder
Your directory should look like:
XOutputRedux.exe
plugins\
Moza\
XOutputRedux.Moza.Plugin.dll
MOZA_API_CSharp.dll
MOZA_API_C.dll
MOZA_SDK.dll
- Restart XOutputRedux — the "Moza Wheel" tab will appear in the profile editor
Advanced FFB Features:
- ETSine Rumble Translation - Converts Xbox rumble motor data to Moza SDK's native ETSine periodic effect for actual wheel vibration (instead of a dull constant force push)
- Ambient Effects - Always-on Spring, Friction, and Damper effects that layer on top of game FFB, giving the wheel a baseline "driving feel" in arcade games with no native wheel support
Note: The plugin is completely optional. XOutputRedux works exactly the same without it. Profiles with Moza settings will still load if the plugin is removed (the data is preserved in the profile JSON but the tab won't appear).
# Start with a specific profile
XOutputRedux --start-profile "MyProfile"
# Start minimized to system tray
XOutputRedux --minimized
# Combine options
XOutputRedux --start-profile "MyProfile" --minimized# Clone the repository
git clone https://github.com/d-b-c-e/xoutputredux.git
cd xoutputredux
# Build
dotnet build -c Release
# Run
dotnet run --project src/XOutputRedux.App
# Run tests
dotnet test
# Create release (requires Inno Setup 6)
.\scripts\release.ps1XOutputRedux/
├── src/
│ ├── XOutputRedux.Core/ # Core abstractions, config, interfaces
│ ├── XOutputRedux.Input/ # DirectInput, RawInput device handling
│ ├── XOutputRedux.Emulation/ # ViGEm Xbox controller emulation
│ ├── XOutputRedux.HidHide/ # HidHide integration
│ ├── XOutputRedux.App/ # WPF GUI + CLI application
│ │ └── Assets/ # Icons, banners, branding assets
│ ├── XOutputRedux.StreamDeck/ # Stream Deck plugin
│ ├── XOutputRedux.Moza.Plugin/ # Moza wheel plugin (optional, built separately)
│ ├── XOutputRedux.Moza.Helper/ # Out-of-process Moza SDK helper (keeps SDK alive)
│ └── XOutputRedux.HidSharper/ # Forked/slimmed HidSharp library (Windows-only HID)
└── tests/
└── XOutputRedux.Tests/
v0.9.7-alpha - Moza FFB enhancements (ETSine rumble, ambient effects, 3 new SDK settings); portable mode with release ZIP; code signing evaluation complete.
- Device detection (DirectInput and RawInput/HID devices)
- Stable device IDs - Devices maintain same ID across USB port changes (VID/PID-based)
- Profile creation and editing with interactive "press to map" capture
- Double-click to capture - Double-click any output to start input capture
- Real-time input monitoring with output highlighting in profile editor
- Multi-input OR logic (multiple buttons can trigger same Xbox output)
- ViGEm integration for Xbox 360 controller emulation
- Force feedback routing from games to physical devices
- HidHide integration (auto-hide devices, auto-install prompt)
- Application whitelist management - Add apps like Moza Pit House to see hidden devices
- System tray with minimize/restore
- Device renaming and info display
- Verbose logging for debugging device issues
- Dark mode UI theme with dark tooltips and dialogs
- Synthwave branding - New logo and gradient color scheme
- Visual Xbox controller test display (reusable in both main window and profile editor)
- Options for startup profile and "Start with Windows"
- Profile editor with tabbed interface (Mapping, Test, Force Feedback, Device Hiding) and collapsible Advanced Settings
- Test tab in Profile Editor - Start/Stop profile and see live Xbox controller output without leaving the editor
- Per-axis sensitivity/response curves with visual curve preview
- Live profile testing in editor - Start/stop profiles directly from the editor's Test tab with real-time controller visualization
- Toast notifications - Windows notifications when profiles start/stop
- CLI/IPC - Control running instance from command line (
start,stop,status,monitor on/off) - Default profile - Set a profile as default for quick CLI start
- Add to System PATH - Option to add XOutputRedux to PATH for CLI access from anywhere
- Game auto-profile - Automatically start/stop profiles when games launch/exit
- Steam game browser - Browse installed Steam games with smart executable detection
- Stream Deck plugin - Native plugin with profile toggle, monitoring toggle, and launch actions
- ViGEmBus auto-install - Prompt to download and install if missing
- Auto-update - Check for updates on startup with in-app download and install
- Crash reporting - Detailed crash dialog with one-click GitHub issue creation
- Backup/restore settings - Export all settings and profiles to
.xorbackupfile for easy migration - About tab - Version info, GitHub links, and acknowledgments
- Quick Add Game hotkey - Ctrl+Shift+G adds focused game to running profile (configurable in Options)
- Plugin system - Optional device-specific plugins loaded from
plugins/folder - Moza Wheel plugin - Per-profile wheel settings (rotation, FFB, damping, etc.) sent via Moza Pit House SDK
- MOZA R12 steering wheel base (DirectInput)
- Turtle Beach VelocityOne Multi-Shift gear shifter (RawInput)
- X-Arcade dual joystick (RawInput)
- Chocolatey package - Easy install/update via
choco install xoutputredux
XOutputRedux is a modernized reimplementation inspired by the archived XOutput project.
| Feature | XOutputRedux | XOutput |
|---|---|---|
| Framework | .NET 8.0 (current LTS) | .NET 5.0 (end of life) |
| Mapping Logic | OR logic (multiple inputs → one output) | One-to-one mapping |
| Emulation | ViGEmBus only | ViGEmBus + SCPToolkit |
| Device Hiding | HidHide (actively maintained) | HidGuardian (deprecated) |
| Architecture | Simple WPF app + CLI | WPF + REST API + WebSockets |
| Controller Types | Xbox 360 only (universal support) | Xbox 360 + DualShock 4 |
| Game Integration | Auto-profile with Steam browser | Manual profile selection |
| Automation | CLI + Stream Deck plugin + IPC | Web API only |
| Settings Backup | One-click export/import | Manual file copy |
| Crash Reporting | One-click GitHub issue creation | None |
- Simpler: No web server, no REST API, no WebSockets - just a clean WPF app
- Focused: Xbox 360 emulation covers 99% of games; DS4 adds complexity without benefit
- Modern: Built on current .NET with maintained dependencies
- Powerful: OR mapping lets you combine inputs (wheel button + handbrake = same Xbox button)
- Scriptable: Full CLI control for gaming frontends, launchers, and Stream Deck
MIT License
- XOutput - Original inspiration
- ViGEmBus - Virtual gamepad driver
- HidHide - Device hiding driver
- Vortice.Windows - DirectInput access
- HidSharp - HID device access