Using PS3 controller on Windows
I have a PlayStation 3 and couple of DS3 controllers… so how to use them with emulators and make them talk with my Windows?
It looks like I currently have two feasible routes to achieve this:
- Use MotionInJoy and replace the UI with Better DS3
- Install SCP DS3 Service
The first option will reveal your controller as a “PlayStation controller” under the Windows control panel, and gives you tools for remapping the controls the way you like it. MotionInJoy looks ugly and is unintuitive to use, but it’s drivers are needed to use a more trustworthy alternative – Better DS3. I had some issues to get Better DS3 working, and at some point, it seemed to work great… but mysteriously all my efforts had vanished after a couple of months, and my controllers were no longer detected.
SCP DS3 Service or “XInput Wrapper for DS3 and Play.com USB Dual DS2 Controller” seems not to have a proper home (or even a proper name) but it feels a bit more reliable solution. This setup reveals your PS3 controller as “XBOX 360 controller” in Windows so it will work great with Windows games supporting the controller. SCP DS3 also works with most emulators, but with an annoying issue. The D-PAD controls are mapped as “Point of View Hat” control and not as joystick axes. Emulators might not recognize this, and a solution is to remap your controls. I haven’t found a tool to do this remapping easily and universally.
To use SCP DS3 and map D-PAD for e.g. NES emulators/games, you can us one of these methods:
- Remap Joystick using the emulator settings (some emulators may not support this well enough).
- Use a tool like AutoHotKey, JoyToKey or Xpadder to send “hat movements” as keystrokes accepted by your emulator as joystick movements.
- Combine the previous with a virtual Joystick such as vJoy or PPJoy and use your custom virtual joystick with any emulator without further config.
- (Unlikely but) if your emulator uses DirectInput, you could try TocaEdit Xbox 360 Controller Emulator to remap the controls the way you want.
There’s also a tool called UJR aka Universal Joystick Remapper that (tries to) combine the bullets two and three, and thus gives a universal remapping tool for any joysticks. Unfortunately, it does not seem not to remap “hats” to an “axis” and the required utility (vJoy) does not work on Windows XP (fortunately you can create virtual joysticks using the bundled command line tool even under XP).
If I want to use DS3 controller, I use SCP and try to map using emulator’s internal config. In real life, I don’t do this much as 8/16-bit computer games should be played with a genuine old school Joystick such as Competition Pro, and I also have 3rd party Sega Mega Drive D-pad controllers for 8/16-bit consoles (they both operate through USB adapters). When DS3 is a better alternative I am using the wired USB connection for less hassle when switching between PS3, PC/Windows, and Raspberry Pi, but if you need the support more often than I do, be aware that both MotionInJoy and SCP support Bluetooth connectivity using (supported) USB-Bluetooth dongles.