A bit of nerdery to lighten the mood. It’s been so heady around these parts lately.
Recently, I decided to connect my PS3 controller to my laptop so I could play The Binding of Isaac on Steam with a real controller. I know, I know, I could have gotten a PC controller and saved myself a ton of hassle. But I had that PS3 controller right there, and a geek like me is gonna make do.
I suspected it would have to send signals to the computer somehow, since it plugs into USB already and uses the 5v USB power draw for charging, and it has to be plugged into USB to pair it with the PS3 before you can use it via bluetooth. Also, the hardware in a PS3 is compatible enough with regular computer hardware that at launch, they even had a Linux distro (now scuttled) that you could install and dual-boot it.
Anyway, as it turns out, my suspicions were correct — when I plugged it into my Windows 7 laptop (yes, my work laptop), it registered a USB HID (Human Interface Device — an input like keyboard, mouse or joystick) but didn’t have any drivers for it, either on Windows Update or natively.
So I did some Google searching. As it turns out, there is in fact a way to get Windows to recognize it as a proper interface device, though the procedure is rather squirrely and doesn’t always work exactly right.
Let me very briefly go over the steps I took to get things working under Windows 7.
First, apparently my bluetooth adapter is incompatible with the only known way to sync a PS3 controller with a laptop under Windows, so I decided to skip that step altogether. It was probably a wise decision, because the procedure for doing so was particularly onerous, and by the looks of it, rather risky. I followed this guide, though the drivers are built as a sketchy website-based installer — seriously, it requires you to be online to get the drivers to work, otherwise all the inputs get messed up. I suspect this requirement is so that you’re forced to see the ads that the driver makers implemented in the install program. The newest drivers thankfully didn’t require that you boot without driver signing (!!!), like a previous version had, which really increases the skeevy factor of this particular utility. Also, the fact that the drivers don’t do the actual heavy lifting, and they seem to be a conduit for however you configure the controller via this utility, means you pretty much are going to have to put up with its clunky ad-laden interface just to get the controller to work on a given boot.
Worse, sometimes you have to start all steps over after plugging the device in, otherwise it shows up as the incorrect type of controller and half of the buttons, the analogs, and d-pad all get completely messed up (showing as the wrong type of controller), are completely misassigned (the d-pad is mixed up for instance — left hits down, up hits up, right hits some face button), or just don’t work at all.
But you can get it to work sometimes.
Given all that, and the fact that as far as I was concerned I didn’t need to be playing wirelessly (and the bluetooth stuff didn’t support my wireless stack anyway), I chalked my progress up as a win. It was a pyrrhic victory, but it was a victory nonetheless.
Getting Isaac to recognize my keys, however, took using an application called JoyToKey to map the joystick buttons / axes to keypresses or mouse movements. I ended up setting the left analog stick as the movement, and shooting in different directions as the face buttons — I’d originally tried the D-pad and right analog stick, but there were shooting issues where diagonals were too easy to hit and you’d stop shooting altogether.
Later, I decided to try to get the controller working on Ubuntu 12.04 on my Netbook. One quick Google search led me to an article on the Ubuntu wiki that showed that all I had to do is install the following packages via a terminal:
sudo apt-get install libusb-dev libusb-0.1-4 xserver-xorg-input-joystick
Then I rebooted, then I plugged in the PS3 controller, then I hit the PS button (this step was evidently important, and I’d forgotten about it when trying to demonstrate it to Jodi later).I was then able to control the mouse using the PS3 controller. That’s about as close to “just working” as I could imagine with this setup. The left analog stick controlled the mouse (with select being left mouse, R3 being right mouse button, and the right analog stick being scroll wheels). No need for the messy JoyToKey setup at all, it all just worked. If you don’t want the mouse emulation, you can leave out “xserver-xorg-input-joystick” from the above line, but it’s a good way to prove to yourself that it’s working.
I also set up the buttons in FCE Ultra no problem, as a native joystick, though ZSNES repeatedly considered J19 (I believe R2) as fully depressed when trying to set a button. I’ll figure them out at some point in the future and maybe add in the joystick configuration I got to work. Also, there’s no bluetooth on this netbook, but the bluetooth stack is apparently much easier than under Windows to work with.
Have you folks tried this? What was your experience like, and with what OS? Anyone tried a Mac yet? How about bluetooth?