Anonymous edits have been disabled on the wiki. If you want to contribute please login or create an account.


From PCGamingWiki, the wiki about fixing PC games
(Redirected from Controller)

General information

DirectInput (and XInput) on Wikipedia
Xbox 360 Controller (XInput) on Wikipedia

Key points

Controllers are an alternative to keyboard and mouse input. Almost all recently released PC games support controllers, although many only support the newer XInput controllers by default.


Controller to Keyboard Input

These utilities allow keyboard keys to be bound to any controller buttons for games with poor or no controller support. These keys must match with the in-game settings.

Steam Input (Windows, macOS and Linux)

Works with non-Steam games if they're added and launched through Steam.
Lets users share and customize game-specific controller profiles.
Adds or extends the functionality of input devices in various ways (e.g. keyboard/mouse input mapped to a controller, XInput support for DirectInput-only devices, etc).
Overrules games own possible controller specific configurations e.g. automatic button prompt change.
UI for changing bindings is very much made with controllers in mind.
Requires Steam and the Steam Overlay to function.
When game is blocking 3rd party game overlays you can use GlosSI.

reWASD (Windows)

Supported controllers: Xbox Elite 1/2, DualSense, Xbox One/S/X, DualShock 4, DualShock 3, PS3 Navigation, Xbox 360, Stadia, Logitech, Switch Pro, GameCube, Joy-Con, Azeron, Steam, Nvidia SHIELD.
Adds or extends the functionality of input devices in various ways (e.g. allows you to remap controller to keyboard & mouse, reassign with Xbox Elite paddles and turn your ordinary joystick to Turbo & Macro controller).
You can chose which driver (Virtual X360, XOne or DS4) has to be used by connected device. This allows to run PS4 Remote Play or PS Now on Xbox controllers or even on keyboard & mouse.
Allows remapping and Keyboard and Mouse keys to keyboard, mouse or controller buttons.
Allows use of Xbox Elite paddles in any game.
Allows use of Steam Controller without Steam.
Allows Nintendo Joy-Con to work as a pair or separately.
Supports remapping hardware buttons of Xbox, DualShock and Nintendo on PC.
Lets users share and customize game-specific controller profiles.
Runs on Windows 10, 8.1, 8 and 7.
14-days trial. Full license can cost up to 33 € (Application + Combo + Advanced mapping + 4 Slots + Rapid Fire).

JoyShockMapper (Windows10)

Open source and easy to use application.
Converts DualShock 4, JoyCon, and Switch Pro Controller input into keyboard and mouse events.
Innovative "Flick Stick" support - you can adjust rotation of a stick to the same rotation in game[1].
Allows using gyro controls. Community Configs you can find on GyroWiki.

Controller Companion (Windows)

Mouse, media and keyboard control.
Supports Xbox 360 and Xbox One controllers. Application comes with an installer for Xbox 360 Controller Emulator (x360ce) which will allow use Playstation controllers.
Using Steam Workshop as community configs database.
Very user friendly User Interface, bindings are easy to configure.
Virtual Keyboard support. After pressing the left stick, pops up the arcade style virtual keyboard inspired by Beyond Good & Evil input interface.
Auto-disable whenever another program, game or Steam Big Picture is running.
Not Freeware.

AntiMicroX (Windows and Linux)

Open source and easy to use application.
Allows any mouse and keyboard input to be bound to any controller buttons across different profiles.
Supports scripts, executables andmacros consisting of elements mentioned above.
Allows assigning multiple switchable sets of mappings to gamepad.
Auto profiles support - assign profile to active application window (not in Wayland).

JoyXoff (Windows)

Mouse, media and keyboard control.
Supports Xbox 360 and Xbox One controllers.
Virtual Keyboard support. After pressing the left stick, pops up the arcade style virtual keyboard inspired by Beyond Good & Evil input interface or Xbox One themed plain virtual keyboard.
For Playstation controllers Xbox 360 Controller Emulator (x360ce) is needed.

Keysticks (Windows)

Mouse, media and keyboard control.

Xpadder (Windows)

Mouse and keyboard control.
Not Freeware.

Universal Control Remapper (Windows)

Open Source.

JoyToKey (Windows)

Mouse and keyboard control.


XInput wrappers

Generic game controllers are classified as DirectInput by Windows, these can be used in any games with XInput support by using a wrapper.
See Controller to Keyboard Input for games with no controller support.

Steam Input

Very easy to set up if you have Steam installed.
Allows haptic feedback passthrough for controllers like the DualShock 4 and Switch Pro Controller.


Supports all main controllers, including Xbox Elite, Xbox Elite 2, Xbox One, DualShock 3, DualShock 4, PS Navigation, Switch Pro, Joy-Con, Xbox 360, Stadia, Logitech, Steam, GameCube.
Supports remapping hardware buttons of Xbox, DualShock and Nintendo. Allows use Xbox Elite paddles in any game and lets Nintendo Joy-Con to work as a pair or separately.
Big community config database with online preview.

Gamepad Phoenix

Supports XInput, DirectInput and Wii controllers allows to create a unified button and axis mapping for up to 4 controllers.
Emulates XInput, DirectInput (any version) and WinMM APIs.
Automatic detection of API, no configuration/file copying needed.
Create controller presets, load one by pressing a single button.
No force feedback support, no analog stick dead zone handling, no emulation of Windows Raw Input API, no motion control support.


Allows XInput controllers to be customized.

XInput Plus

The Xbox Controller Driver and the buggy Force Feedback Driver aren't required with this program.
Features a wide array of advanced options, tweaks, features and some major fixes which other wrappers may lack.
Can translate DirectInput calls into XInput and back. It can also be used on older games using dinput.dll and dinput8.dll.

Xbox 360 Controller Emulator (X360ce)

Can be used to force DirectInput controllers to be detected as XInput ones.
Useful for games which may require multiple players. It also features a wide array of options.
Does not work with games using Unity due to implementation differences.[2]
The current version has an excessive cpu consumption, which causes the games to respond with a long delay with the controls using the controller.


Converts DirectInput to XInput, reads and sends data to virtual XBox 360 controller.
It works similarly to "X360ce" with lower resource consumption.
For full expected performance in all games, HID Guardian must be configured. Configuration instructions can be found here.

DirectInput wrappers

Gamepad Phoenix

Supports XInput, DirectInput and Wii controllers allows to create a unified button and axis mapping for up to 4 controllers.
Emulates DirectInput (any version), WinMM APIs and XInput.
Automatic detection of API, no configuration/file copying needed.
Create controller presets, load one by pressing a single button.
No force feedback support, no emulation of Windows Raw Input API, no motion control support.


Xidi provides both DirectInput and WinMM interfaces for games to use and communicates with XInput-based game controllers natively using XInput, translating between the two interfaces as needed.
Xidi is implemented as a library that games should load instead of the system-supplied versions. As such, it is a very localized fix: no installation is required, and no persistent system-wide changes are made.
Fixes issues encountered in older games, such as broken analog controls, phantom button presses, or complete failure to commmunicate with the controller. Without Xidi these issues can come up in DirectInput-based or WinMM-based games when used with an XInput controller.
Enables customization of game controller behavior, including simulating keyboard key presses. This can help make controls more intuitive and bring full controller support to games that only implement partial controller support.
Allows controllers to be changed while a game is running. Older games do not normally support this, but with Xidi controllers can be plugged in, unplugged, and swapped seamlessly during gameplay. Without Xidi this would require exiting and restarting the game.
Xidi is not useful if a game already uses the XInput API to communicate with controllers. These games would not benefit from Xidi.
The problem arises with controllers that are not XInput-based controllers. Xidi will not communicate with non-XInput controllers.
The problem arises from an older non-XInput controller being used with an XInput-based game. This is the inverse of the problem Xidi solves, for which solution like the Xbox 360 Controller Emulator is needed.

Primary device

Some games only use controller set as primary controller on Windows and ignores the rest. If incorrect or no controllers are set to primary, game doesn't work with used controller.
Set your used controller as primary one[citation needed]
  1. Open the Start menu, type joy.cpl, then press Enter.
  2. Push Advanced.
  3. From dropdown list, locate your used controller and then push OK.

Multiple controller order for older games

  1. Open the Start menu, type joy.cpl, then press Enter.
  2. Click on the Advanced button.
  3. Select the Preferred device from the drop down menu located on the center.

Issues fixed

Slow or random movement

This may be caused by worn out sticks or by low in-game deadzones.
Calibrating[citation needed]
  1. Open the Start menu, type joy.cpl, then press Enter.
  2. Select the desired controller and click on the Properties button.
  3. Select the Settings tab, then push the Calibrate button and follow the on screen instructions.

Fast movement

Remove any virtual controllers and use the Xbox 360 Controller Emulator instead. If the issue persists see below.
Common issue on games running on the Unity engine due to the Unity input manager using Raw Input instead of DirectInput.
Finding Virtual Controllers[citation needed]
  1. Open the Start menu, type joy.cpl, then press Enter.
  2. Locate the name of the virtual controller driver or utility and remove it.
Rebind Controller Buttons
For Unity games with no launchers hold Shift to access the launcher as the game starts, then select the Input tab.
Check the wiki article for the desired game to find a different rebinding solution. Configuration files may hold such settings.


Many games use SDL2 to handle controller input. This means as long as the controller is on the list, game should detect, use it and give proper controller placement and prompts. Controllers that aren't on the list, do nothing and has to be manually added.
To see what games use SDL2, refer to game-specific middleware section.
Configure controller through Steam Big Picture modes settings[citation needed]
This method requires Steam to be installed on a machine.
Use SDL2 Gamepad Tool[citation needed]
  1. Download and open SDL2 Gamepad Tool.
  2. Select desired controller from dropdown menu.
  3. Select "Create a new mapping" and press buttons accordingly.
    • If some button isn't present on the controller, use the "Skip" button and if some key is registered twice, use the "previous" button.
  4. Either set the string as enviromental variable, which should make the controller work with every SDL2 game or alternatively copy the string and paste it to gamecontrollerdb.txt found in games install folder.



Allows customize various devices, including the keyboard and mouse, joystick, gamepads for use with your computer.
Programming is accomplished using "building blocks".
Unfriendly User Interface.

USB Overdrive

Device driver that handles any USB mouse, trackball, joystick, gamepad, media keyboard and any Bluetooth mouse and lets you configure them either globally or on a per-application, per-device basis.
It supports 64-bit kernels.


Most distributions come with the xpad driver already. If you're experiencing problems with using controllers in your game, or want to bind your keyboard to the controller, you may want to try xboxdrv, or refer to the controller-specific article for more information.
AntiMicroX application is letting to remap gamepads/joystick buttons to: keyboard buttons, mouse buttons and moves, scripts and executables and macros consisting of elements mentioned above.


Flexible Linux input device translator, geared for gamepads.
Create virtual gamepads that almost all games can use. Virtual gamepads are persistent, which fixes the numerous games that break when controllers are disconnected.
Flexible generic device driver framework, where only a text file is needed to support input sources that don't need special features. All configuration files are designed to be human-readable and editable.
Easy loading and saving of event mappings that can be changed at run time.
Specialized userspace driver for Wii remotes that make full use of extension controller hotswapping. Supports a command FIFO or socket for controlling a running instance of MoltenGamepad via scripting. Can handle cases where one event device represents multiple logical controllers (like an arcade stick), or vice versa.
Virtual devices can process rumble events, but this is disabled by default.


Steering Wheel Manager for GNU/Linux
Allows change emulation mode, change rotation range.
Combine accelerator/brakes pedals for games that use just one axis.
Change autocentering force strength.
Change force feedback gain.
Supports device configuration profiles.
Fix system permissions to access all device features.
Overlay window to display/configure range.
Use wheel buttons to configure range.
AllowsHardware performance testing.
Features only for new-lg4ff: Combine accelerator/clutch pedals. Useful for flight simulators. Change global force feedback gain (with new-lg4ff), change each conditional force feedback effect type gain. FFBmeter to monitor FFB clipping using wheel leds or overlay window.

List of controllers















Racing wheels






Fighting pads






Fighting pads

Flight Controllers

Racing wheels

Mouse/Keypad/controller combos and keypads

















Racing wheels



















Fighting pad





Retro Fighters

Rotor Riot




Flight Controllers


Farming Equipment











Racing wheels






Mobile Apps


Fighting pads


Motion Controls

Other information

Controller hotplugging

Controller hotplugging is the ability to switch controllers without restarting a game.


A human interface device (HID) is a method by which a human interacts with an electronic information system either by inputting data or providing output.[4]

WinMM Joystick

WinMM is Microsoft's Windows Multimedia API which allows using controllers in old games. Applications like Xidi and Gamepad Phoenix emulate WinMM signals for newer gamepads.
WinMM always reports 16 joysticks if at least one is connected. For other unused gamepads will indicate the "unplugged" state.[5]


DirectInput is Microsoft's older controller API (used with nearly all games until 2006). XInput controllers operate in DirectInput mode for these games. Some controllers like Logitech's F310 and F710 gamepads have a physical switch which should be set to "D" for these games.
DirectInput supports maximum of 8 axes, 128 buttons, and full-range POV per controller.


XInput is Microsoft's API for Xbox 360-compatible controllers such as the official Xbox 360 Controller.
XInput supports a maximum of four controllers at a time and maximum of 4 axes, 10 buttons, 2 triggers and 8-direction digital pad per controller.


Windows.Gaming.Input is Microsoft's API for Xbox One-compatible controllers such as the official Xbox One Controller primarily built for Universal Windows Platform apps, but can on occasions be found in Win32 games as well.
An example of a new addition only available through the Windows.Gaming.Input API is the use of the impulse triggers of the Xbox One Controller.

Steam Input

Steam Input is feature of the Steam client referring to the entire collection of software, hardware, and configuration utilities that Steam uses to interface with games. It acts like a wrapper using the Steam Community Overlay to intercept and manipulate player input before passing it on along to the game.

Raw Input

The Raw Input provides direct support for specific, user-defined devices that aren't properly handled by Microsoft's XInput API, usually flight sticks and steering wheels.
See Raw Input Overview on


  1. Gyro Gaming - Intro to Flick Stick - last accessed on June 2023
  2. Issue 48 - X360CE - Hooking does not work with Unity Engine - x360ce/x360ce - GitHub - last accessed on June 2023
  3. Verified by User:Blackbird on 2016-10-06
    Far as I can tell this is for DInput games only.
  4. Human Interface Device - last accessed on June 2023
  5. Can't use the gamepad - last accessed on June 2023