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

Difference between revisions of "Glossary:Controller"

From PCGamingWiki, the wiki about fixing PC games
m (fixed instructions comma)
m (→‎XInput wrappers: added XOutput wrapper)
(41 intermediate revisions by 16 users not shown)
Line 15: Line 15:
 
{{ii}} 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.  
 
{{ii}} 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.  
  
====[https://github.com/AntiMicro/antimicro/releases AntiMicro (Windows and Linux)]====
+
====[[Store:Steam#Steam Input|Steam Input]] (Windows, macOS and Linux)====
{{ii}} Open source and easy to use application. On Windows it should always be run as an admin.
+
{{ii}} 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.
 +
{{ii}} When game is blocking 3rd party game overlays you can use [https://alia5.github.io/GloSC/ GloSC].
 +
 
 +
====[https://www.rewasd.com reWASD] (Windows)====
 +
{{ii}} Supported controllers: [[Controller:Xbox Elite Wireless Controller|Xbox Elite]], [[Controller:Xbox Elite Wireless Controller 2|Xbox Elite 2]], [[Controller:Xbox One Controller|Xbox One]], [[Controller:DualShock 3|DualShock 3]], [[Controller:DualShock 4|DualShock 4]], [[Controller:PlayStation Move|PS Navigation]], [[Controller:Switch Pro Controller|Switch Pro]], [[Controller:Switch_Joy-Con|Joy-Con]], [[Controller:Xbox 360 Controller|Xbox 360]].
 +
{{++}} 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 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 [[Controller:Xbox Elite Wireless Controller|Xbox Elite]] paddles in any game.
 +
{{++}} Allows [[Controller:Switch_Joy-Con|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).
 +
 
 +
====[https://github.com/JibbSmart/JoyShockMapper JoyShockMapper] (Windows)====
 +
{{ii}} Open source and easy to use application.
 +
{{ii}} Converts [[Controller:DualShock 4|DualShock 4]], [[Controller:Switch_Joy-Con|JoyCon]], and [[Controller:Switch Pro Controller|Pro Controller]] input into keyboard and mouse events.
 +
{{++}} Innovative "Flick Stick" support - adjusting rotation of a stick to the same rotation in game<ref>[https://www.youtube.com/watch?v=C5L_Px3dFtE Gyro Gaming - Intro to Flick Stick]</ref>.
 +
{{++}} Allows using gyro controls. Community Configs you can find on [http://gyrowiki.jibbsmart.com/games GyroWiki].
 +
{{--}} Doesn't support DualShock 4 by Bluetooth.
 +
 
 +
====[http://controllercompanion.com/ Controller Companion] (Windows)====
 +
{{ii}} Mouse, media and keyboard control.
 +
{{++}} Supports [[Controller:Xbox 360 Controller|Xbox 360]] and [[Controller:Xbox One Controller|Xbox One]] controllers. Application comes with an installer for [[Xbox 360 Controller Emulator|Xbox 360 Controller Emulator (x360ce)]] which will allow use Playstation controllers.
 +
{{++}} Using [https://steamcommunity.com/workshop/about/?appid=367670 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.
 +
 
 +
====[https://github.com/AntiMicro/antimicro/releases AntiMicro] (Windows and Linux)====
 +
{{ii}} Open source and easy to use application.
 
{{++}} Allows any mouse and keyboard input to be bound to any controller buttons across different profiles.
 
{{++}} Allows any mouse and keyboard input to be bound to any controller buttons across different profiles.
 +
{{--}} On Linux, it works only in Xorg environment.
  
 
==Windows==
 
==Windows==
===XInput Wrappers===
+
===XInput wrappers===
 
{{ii}} Generic game controllers are classified as [[Glossary:Controller#DirectInput|DirectInput]] by Windows, these can be used in any games with [[Glossary:Controller#XInput|XInput]] support by using a wrapper.
 
{{ii}} Generic game controllers are classified as [[Glossary:Controller#DirectInput|DirectInput]] by Windows, these can be used in any games with [[Glossary:Controller#XInput|XInput]] support by using a wrapper.
 
{{ii}} See [[#Controller to Keyboard Input|Controller to Keyboard Input]] for games with no controller support.
 
{{ii}} See [[#Controller to Keyboard Input|Controller to Keyboard Input]] for games with no controller support.
 +
 +
====[[Glossary:Controller#Steam Input (Windows, macOS and Linux)|Steam Input]]====
 +
{{++}} Very easy to set up if you have Steam installed.
 +
{{++}} With controllers like [[Controller:DualShock 4|DualShock 4]] and [[Controller:Switch Pro Controller|Switch Pro Controller]] allows haptic feedback passtrough as well.
 +
 +
====[[Glossary:Controller#reWASD (Windows)|reWASD]]====
 +
{{++}} Supports all main controllers, including [[Controller:Xbox Elite Wireless Controller|Xbox Elite]], [[Controller:Xbox Elite Wireless Controller 2|Xbox Elite 2]], [[Controller:Xbox One Controller|Xbox One]], [[Controller:DualShock 3|DualShock 3]], [[Controller:DualShock 4|DualShock 4]], [[Controller:PlayStation Move|PS Navigation]], [[Controller:Switch Pro Controller|Switch Pro]], [[Controller:Switch_Joy-Con|Joy-Con]], [[Controller:Xbox 360 Controller|Xbox 360]].
 +
{{++}} Supports remapping hardware buttons of Xbox, DualShock and Nintendo. Allows use [[Controller:Xbox Elite Wireless Controller|Xbox Elite]] paddles in any game and lets [[Controller:Switch_Joy-Con|Nintendo Joy-Con]] to work as a pair or separately.
 +
{{++}} Big community [https://www.rewasd.com/community config database] with online preview.
  
 
====[https://github.com/KrossX/Durazno Durazno]====
 
====[https://github.com/KrossX/Durazno Durazno]====
Line 28: Line 74:
  
 
====[https://sites.google.com/site/0dd14lab/xinput-plus XInput Plus]====
 
====[https://sites.google.com/site/0dd14lab/xinput-plus XInput Plus]====
{{ii}} The [[XBCD|Xbox Controller Driver]] and the [[Glossary:Controller#Force Feedback Driver (XInput)|Force Feedback Driver]] aren't required with this program.
+
{{ii}} The [[XBCD|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.
 
{{++}} Features a wide array of advanced options, tweaks, features and some major fixes which other wrappers may lack.
 
{{++}} Can translate [[Glossary:Controller#DirectInput|DirectInput]] calls into [[Glossary:Controller#XInput|XInput]] and back. It can also be used on older games using '''dinput.dll''' and '''dinput8.dll'''.
 
{{++}} Can translate [[Glossary:Controller#DirectInput|DirectInput]] calls into [[Glossary:Controller#XInput|XInput]] and back. It can also be used on older games using '''dinput.dll''' and '''dinput8.dll'''.
Line 36: Line 82:
 
{{++}} Useful for games which may require multiple players. It also features a wide array of options.
 
{{++}} Useful for games which may require multiple players. It also features a wide array of options.
 
{{--}} Does not work with games using [[Engine:Unity|Unity]] due to implementation differences.<ref>[https://github.com/x360ce/x360ce/issues/48 Issue 48 - x360ce - Hooking does not work with Unity Engine - x360ce/x360ce - GitHub]</ref>
 
{{--}} Does not work with games using [[Engine:Unity|Unity]] due to implementation differences.<ref>[https://github.com/x360ce/x360ce/issues/48 Issue 48 - x360ce - Hooking does not work with Unity Engine - x360ce/x360ce - GitHub]</ref>
 +
 +
====[https://github.com/csutorasa/XOutput XOutput]====
 +
{{++}} Converts DirectInput to XInput, reads and sends data to virtual XBox 360 controller.
  
 
===Primary device===
 
===Primary device===
{{ii}} 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.  
+
{{ii}} 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.
{{Fixbox|1=
+
 
{{Fixbox/fix|Set your used controller as primary one}}
+
{{Fixbox|description=Set your used controller as primary one|ref={{cn|date=July 2016}}|fix=
 
# Open the Start menu, type <code>joy.cpl</code>, then press {{key|Enter}}.
 
# Open the Start menu, type <code>joy.cpl</code>, then press {{key|Enter}}.
 
# Push '''Advanced'''.
 
# Push '''Advanced'''.
Line 46: Line 95:
 
}}
 
}}
  
==OS X==
+
===Multiple controller order for older games===
===[http://www.orderedbytes.com/controllermate/ Controller Mate]===
+
<!-- This method assumes you only have two controllers so it kinda sucks, shouldn't the Xbox 360 Controller Emulator be used instead? -->
 +
<!-- Add proper HOTAS instructions, would need an actual Joystick to test this. -->
 +
{{Fixbox|description=Instructions|ref=<ref>{{Refcheck|user=Blackbird|date=2016-10-06|comment=Far as I can tell this is for DInput games only.}}</ref>|fix=
 +
# Open the Start menu, type <code>joy.cpl</code>, then press {{key|Enter}}.
 +
# Click on the '''Advanced''' button.
 +
# Select the '''Preferred device''' from the drop down menu located on the center.
 +
}}
  
==Linux==
+
===Issues fixed===
{{ii}} 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 ''[http://pingus.seul.org/~grumbel/xboxdrv/ xboxdrv]''.
+
====Slow or random movement====
 +
{{ii}} This may be caused by worn out sticks or by low in-game deadzones.
  
===Dualshock 4 Lightbar===
+
{{Fixbox|description=Calibrating|ref={{cn|date=July 2016}}|fix=
{{ii}} See [[Engine:FNA#DualShock 4 Light Bar Support|DualShock 4 Light Bar Support]].
 
 
 
==Issues fixed==
 
===Slow or random movement===
 
{{ii}} This may be caused by worn out sticks or by low in-game deadzones.
 
{{Fixbox|1=
 
{{Fixbox/fix|Calibrating}}
 
 
# Open the Start menu, type <code>joy.cpl</code>, then press {{key|Enter}}.
 
# Open the Start menu, type <code>joy.cpl</code>, then press {{key|Enter}}.
 
# Select the desired controller and click on the '''Properties''' button.
 
# Select the desired controller and click on the '''Properties''' button.
Line 65: Line 114:
 
}}
 
}}
  
===Fast movement===
+
====Fast movement====
 
{{ii}} Remove any virtual controllers and use the [[Xbox 360 Controller Emulator]] instead. If the issue persists see below.
 
{{ii}} 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 [[Engine:Unity|Unity]] engine due to the Unity input manager using Raw Input instead of DirectInput.
 
{{--}} Common issue on games running on the [[Engine:Unity|Unity]] engine due to the Unity input manager using Raw Input instead of DirectInput.
  
{{Fixbox|1=
+
{{Fixbox|description=Finding Virtual Controllers|ref={{cn|date=July 2016}}|fix=
{{Fixbox/fix|Finding Virtual Controllers}}
 
 
# Open the Start menu, type <code>joy.cpl</code>, then press {{key|Enter}}.
 
# Open the Start menu, type <code>joy.cpl</code>, then press {{key|Enter}}.
 
# Locate the name of the virtual controller driver or utility and remove it.
 
# Locate the name of the virtual controller driver or utility and remove it.
 
}}
 
}}
{{Fixbox|1=
+
{{Fixbox|description=Rebind Controller Buttons|fix=
{{Fixbox/fix|Rebind Controller Buttons}}
+
{{ii}} For [[Engine:Unity|Unity]] games with no launchers hold {{key|Shift}} to access the launcher as the game starts, then select the '''Input''' tab.
{{ii}} For [[Engine:Unity|Unity]] games with no launchers hold the {{key|Shift}} to access the launcher as the game starts, then select the '''Input''' tab.
 
 
{{ii}} Check the wiki article for the desired game to find a different rebinding solution. Configuration files may hold such settings.
 
{{ii}} Check the wiki article for the desired game to find a different rebinding solution. Configuration files may hold such settings.
 
}}
 
}}
  
===SDL2===
+
====SDL2====
 
{{ii}} 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.  
 
{{ii}} 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.  
{{ii}} To see what games use SDL2, prefer to game specific middleware section.  
+
{{ii}} To see what games use SDL2, refer to game-specific middleware section.
{{Fixbox|1=
+
 
{{Fixbox/fix|Configure controller trough Steam Big Picture modes settings.}}
+
{{Fixbox|description=Configure controller through Steam Big Picture modes settings|ref={{cn|date=July 2016}}|fix=
{{--}} This method requires Steam to be installed on a machine, making it harder for DRM-Free releases.
+
{{--}} This method requires Steam to be installed on a machine.
 
}}
 
}}
{{Fixbox|1=
+
{{Fixbox|description=Use [http://community.pcgamingwiki.com/files/file/734-sdl2-gamepad-tool/ SDL2 Gamepad Tool]|ref={{cn|date=July 2016}}|fix=
{{Fixbox/fix|Use [http://community.pcgamingwiki.com/files/file/734-sdl2-gamepad-tool/ SDL2 Gamepad Tool]}}
 
 
# Download and open [http://community.pcgamingwiki.com/files/file/734-sdl2-gamepad-tool/ SDL2 Gamepad Tool].
 
# Download and open [http://community.pcgamingwiki.com/files/file/734-sdl2-gamepad-tool/ SDL2 Gamepad Tool].
 
# Select desired controller from dropdown menu.
 
# Select desired controller from dropdown menu.
Line 95: Line 141:
 
# 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 {{code|gamecontrollerdb.txt}} found in games install folder.  
 
# 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 {{code|gamecontrollerdb.txt}} found in games install folder.  
 
}}
 
}}
 +
 +
==macOS==
 +
===[http://www.orderedbytes.com/controllermate/ ControllerMate]===
 +
{{ii}} 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.
 +
 +
===[http://www.usboverdrive.com/ USB Overdrive]===
 +
{{ii}} 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.
 +
 +
==Linux==
 +
{{ii}} 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 ''[http://xboxdrv.gitlab.io/ xboxdrv]'', or refer to the controller-specific article for more information.
  
 
==List of controllers==
 
==List of controllers==
 
<!-- This list is ordered by the controller release date. The Logitech and Misc sections have been left alphabetized. -->
 
<!-- This list is ordered by the controller release date. The Logitech and Misc sections have been left alphabetized. -->
 +
===Hori===
 +
* [[Controller:Pokkén Tournament Pro Pad Controller|Pokkén Tournament Pro Pad]]
 +
 
===Logitech===
 
===Logitech===
 
* [[Controller:Logitech Dual Action|Logitech Dual Action]]
 
* [[Controller:Logitech Dual Action|Logitech Dual Action]]
Line 112: Line 174:
 
* [[Controller:Kinect|Kinect]]
 
* [[Controller:Kinect|Kinect]]
 
* [[Controller:Xbox One Controller|Xbox One Controller]]
 
* [[Controller:Xbox One Controller|Xbox One Controller]]
 +
* [[Controller:Xbox Elite Wireless Controller|Xbox Elite Wireless Controller]]
 +
* [[Controller:Xbox Adaptive Controller|Xbox Adaptive Controller]]
 +
* [[Controller:Xbox Elite Wireless Controller 2|Xbox Elite Wireless Controller 2]]
  
 
'''PC'''
 
'''PC'''
 
* [[Controller:Microsoft SideWinder Strategic Commander|Microsoft SideWinder Strategic Commander]]
 
* [[Controller:Microsoft SideWinder Strategic Commander|Microsoft SideWinder Strategic Commander]]
 +
 +
===Nacon===
 +
* [[Controller:Nacon Revolution Pro Controller|Nacon Revolution Pro Controller]]
 +
* [[Controller:Nacon Revolution Pro Controller 2|Nacon Revolution Pro Controller 2]]
  
 
===Nintendo===
 
===Nintendo===
Line 122: Line 191:
 
* [[Controller:Wii U GamePad|Wii U GamePad]]
 
* [[Controller:Wii U GamePad|Wii U GamePad]]
 
* [[Controller:Wii U Pro Controller|Wii U Pro Controller]]
 
* [[Controller:Wii U Pro Controller|Wii U Pro Controller]]
 +
* [[Controller:Switch Joy-Con|Switch Joy-Con]]
 +
* [[Controller:Switch Pro Controller|Switch Pro Controller]]
 +
 +
===Nvidia===
 +
* [[Controller:Nvidia SHIELD Controller|SHIELD Controller (2015)]]
 +
* [[Controller:Nvidia SHIELD Controller (2017)|SHIELD Controller (2017)]]
 +
 +
===Razer===
 +
* [[Controller:Razer Hydra|Razer Hydra]]
 +
* [[Controller:Razer Serval|Razer Serval]]
 +
* [[Controller:Razer Raiju|Razer Raiju]]
 +
* [[Controller:Razer Wolverine|Razer Wolverine]]
  
 
===Sony===
 
===Sony===
Line 130: Line 211:
 
* [[Controller:PlayStation Move|PlayStation Move]]
 
* [[Controller:PlayStation Move|PlayStation Move]]
 
* [[Controller:DualShock 4|DualShock 4]]
 
* [[Controller:DualShock 4|DualShock 4]]
 +
* [[Controller:PlayStation Classic Controller|PlayStation Classic Controller]]
 +
 +
===SteelSeries===
 +
* [[Controller:SteelSeries Stratus XL|SteelSeries Stratus XL]]
 +
 +
===Valve===
 +
* [[Controller:Steam Controller|Steam Controller]]
 +
* [[Controller:Steam Link Touch Controller|Steam Link Touch Controller]]
 +
 +
===Vive===
 +
* [[Controller:Vive Controller|Vive Controller]]
 +
* [[Controller:Vive Tracker|Vive Tracker]]
 +
 +
===Google===
 +
* [[Controller:Stadia Controller|Stadia Controller]]
  
 
===Miscellaneous===
 
===Miscellaneous===
* [[Controller:Leap Motion Controller|Leap Motion Controller]]
+
* [[Controller:Tobii Eye Tracking|Tobii Eye Tracking]]
* [[Glossary:Oculus Rift|Oculus Rift]]
+
* [[Controller:Leap Motion Controller|Leap Motion]]
* [[Controller:Razer Hydra|Razer Hydra]]
+
* [[Controller:OUYA|OUYA Controller]]
* [[Controller:Steam Controller|Steam Controller]]
 
  
 
==Other information==
 
==Other information==
Line 147: Line 242:
 
{{ii}} XInput is Microsoft's API for Xbox 360-compatible controllers such as the official Xbox 360 Controller.
 
{{ii}} XInput is Microsoft's API for Xbox 360-compatible controllers such as the official Xbox 360 Controller.
  
===Multiple controller order for older games===
+
===[[Store:Steam#Steam_Input|Steam Input]]===
<!-- This method assumes you only have two controllers so it kinda sucks, shouldn't the Xbox 360 Controller Emulator be used instead? -->
+
{{ii}} Steam Input is feature of the [[Store:Steam|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.
<!-- Add proper HOTAS instructions, would need an actual Joystick to test this. -->
+
 
{{Fixbox|1=
+
{{References}}
{{Fixbox/fix|Instructions}}
 
# Open the Start menu, type <code>joy.cpl</code>, then press {{key|Enter}}.
 
# Click on the '''Advanced''' button.
 
# Select the '''Preferred device''' from the drop down menu located on the center.
 
}}
 
  
{{References}}[[Category:Controller]]
+
[[Category:Controller]]

Revision as of 12:07, 27 February 2020

This page may require cleanup to meet basic quality standards. The specific problem is: Correct any bad information. Keep things easy, clean and be complete when writing solutions, or I'll eat your donuts and I'll steal your cats. You can help by modifying the article. The discussion page may contain useful suggestions.

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.

General

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 GloSC.

reWASD (Windows)

Supported controllers: Xbox Elite, Xbox Elite 2, Xbox One, DualShock 3, DualShock 4, PS Navigation, Switch Pro, Joy-Con, Xbox 360.
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 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 Xbox Elite paddles in any game.
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 (Windows)

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

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.

AntiMicro (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.
On Linux, it works only in Xorg environment.

Windows

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.
With controllers like DualShock 4 and Switch Pro Controller allows haptic feedback passtrough as well.

reWASD

Supports all main controllers, including Xbox Elite, Xbox Elite 2, Xbox One, DualShock 3, DualShock 4, PS Navigation, Switch Pro, Joy-Con, Xbox 360.
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.

Durazno

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

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]

XOutput

Converts DirectInput to XInput, reads and sends data to virtual XBox 360 controller.

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

Instructions[3]
  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.

SDL2

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.

macOS

ControllerMate

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.

Linux

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.

List of controllers

Hori

Logitech

Microsoft

Xbox

PC

Nacon

Nintendo

Nvidia

Razer

Sony

SteelSeries

Valve

Vive

Google

Miscellaneous

Other information

Controller hotplugging

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

DirectInput

DirectInput is Microsoft's older controller API (used with nearly all games until 2006). XInput controllers operate in DirectInput mode for these games. Logitech's F310 and F710 gamepads have a physical switch which should be set to "D" for these games.

XInput

XInput is Microsoft's API for Xbox 360-compatible controllers such as the official Xbox 360 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.


References