Picture this: After hours of web browsing, your body is contorted in various unnatural positions over time. Your legs up on the table, or you're lying on the bed sideways with the laptop rotated sideways as well. Does that sound familiar?
For me it does. Here's how my PS3 controller helped.
Of course, I am not proud of my posture after sitting at the screen for four hours straight, but I soon realised that my posture was a result of my body's pursuit of comfort, while being dependent on the keyboard and mouse.
All I want is to kick back and relax on my lounge chair, but with a laptop on my lap, that means my body has little to no freedom.
"Are you telling me that there is only one way to lay in my chair?" /r/firstworldproblems.
Okay, it may be somewhat bearable with a laptop, but what about all the other folks who own a desktop?
And then I came up with the idea to use a PS3 controller for day to day casual web browsing. Why not? The analogue sticks will be perfect for emulating the mouse, and the other keys will be mapped to my most common keyboard shortcuts.
Purrrr-fect. Here's how it looks:
Now, here's how to set it up.
Step 1: Get MotionInJoy
The PS3 controller did not seem to come with its native drivers, and the only way to make it work with my computer was with the MotionInJoy Application.
What's cool about MotionInJoy is that it has multiple profiles, even including Xbox 360 mode.
I followed this video to set up the application.
*Warning Warning Danger Danger*
Some of their own instructions were wrong and ultimately misleading, and the change to Mandarin was just a silly thing to do. Disregard everything between 1:50 and 2:35: instead connect your controller via USB, and click the "Driver Manager" tab, then click "Install all".
Pressing "Load Driver" will NOT work as they suggested. The rest should be correct.
When in doubt, the vibration test is your friend. To make sure your Bluetooth drivers are supported by the app, feature 39 must be working (under Bluetooth Pair->Supports Feature).
Step 2: Get JoyToKey
Next I used JoyToKey in order to map the keys that I wanted onto the controller. This video should help you understand how to do most of it. The main caveat is this: the exact names of the buttons in JoyToKey may not exactly correspond to the key numbers in your controller settings. As you can see from my demo video above, the corresponding keys in JoyToKey will light up in yellow when the key is pressed.
I have received some questions about what the specific mapping I used. Here it is:
- L1: Right mouse click
- R1: Left mouse click
- L2: CTRL+SHIFT+TAB (move to previous tab)
- R2: CTRL+TAB (move to next tab)
- D-pad Up: scroll up
- D-pad Down: scroll down
- D-pad left: ALT+LEFT (back)
- D-pad right: ALT+RIGHT (forward)
- Select: ALT+TAB
- Start: HOME (home directory)
- PS: WIN+G (Open Chrome)
- Triangle: CTRL+W (close tab)
- Square: CTRL+= (zoom in)
- Cross: CTRL+- (zoom out)
- Circle: CTRL+SHIFT+T (restore tab)
- Left analogue stick: Slow mouse (15%, for accuracy)
- Right analogue stick: Fast Mouse (100% for dropping the cursor in the right general area)
- Left stick click: F5 (refresh)
- Right stick click: middle mouse click (scroll)
If you are like me, you want to scroll up or down when you press and hold D-pad up, and D-pad down. Just do this:
If you have more specific questions with JoyToKey, don't hesitate to contact me. :)
Step 3 (optional): Get AutoHotKey
Now if we want to truly make the mapping powerful, we can get AutoHotKey, and assign really complex actions to certain combinations of keys. I looked through the manual, and there's a metric shit-ton of stuff you can do with it.
All I am doing with it is launch Google Chrome (WIN + G) and open my home directory (HOME), and then I assign these keys to the button, and button on my controller respectively.
When I don't use the controller after a while, it automatically shuts down. Sometimes pressing the PS button will cause the LEDs to flash a bit and then nothing else happens. I follow this ritual to get my controller voodoo working again:
- Do a vibration test in MotionInJoy, if not working, reset the program.
- If vibration test passes, click "Enable" in the main MotionInJoy screen.
- If the cursor is still not moving, go to JoyToKey->Options, and click "Refresh."
With my current mapping, I have found that I can do almost all of the actions that I usually do with a keyboard and mouse while browsing. I would even argue that I can do them much faster with a controller. The obvious downside to this is when I need to type in a link or a keyword in a search bar. But I minimised that problem by keeping my regular websites in the bookmark bar in Chrome, within my click's reach.
I hope that more people can see the value of this, since most computer users are so heavily dependent on pointing and clicking their way through the day. This poses obvious ergonomic concerns as wrist and back-pain are so common in office workers. I am planning to improve this whole set-up by writing an application that would effectively bootstrap these applications and combine their functionality for easier configuration.
Go ahead, try it! You'll feel the difference. Just don't become this guy:
With great power comes great responsibility.
How I Improved My Life with a PS3 Controller [n00shie's blog]
Anushervon is passionate about using technology to simplify and improve life around the world. He is from Tajikistan, and he grew up in Beijing, China. He is currently a Software Engineering student at the University of Waterloo.