Whew. It was a LOT of effort but I finally got it working!
My system is Keyboard & Mouse as Player 1, and PS3 controller as Player 2. I use Windows 7 64 Bit. I do not actually have a second PS3 controller so the simple solution of just hooking up two of them to force a controller to be Player 2 couldn't work for me! Also, my computer doesn't do bluetooth so this is a plugged-in connection.
First off, get and install MotioninJoy. Instructions are here: http://www.hardcoreware.net/how-to-p...ndows-7-vista/
The steps are a little out of date. So here's a recap:
#1: Plug controller in until windows detects it and says it's working (it isn't)
#2: Install the MotioninJoy program
#3: Inside the MotioninJoy program go to Driver Manager
#4: Click the checkmark, click load
#5: You can make sure it's loaded by it saying 'loaded already' on the right
#6: Exit and restart the program. It can be a bit buggy and in order for any of the settings you're about to change to 'stick' you have to restart it first (after controller is plugged in).
#7: On the main screen, make sure that the 'connected game controller' is detected or none of the settings will stick. If it says 'waiting for controller to be connected' then repeat step 6 (and step 5 first if necessary).
#8: Make sure that you select the Playstation 3 option. I know everyone else is like 'use the xbox 360 config' but it's a freakin' PS3 controller so I made it work as a PS3 controller. (And it works don't worry.)
#9: Click the 'enable' button right above the advertisement.
#10: If you want to calibrate and make sure it's working, click 'game controller panel' to the right of the Enable button. Select 'virtual controller' and then 'properties'. Your left stick should make the + sign float around. Your right stick should make 'x rotation' and 'y rotation' bars move back and forth. Left and right bumpers (L2 and R2) should mess with 'z axis'. 'z rotation' and 'slider' should move around just as you wiggle and tilt the controller (they're the motion sensitive ones). And finally your dpad should show up in the 'point of view hat'. Then you can make sure your buttons are working:
1 = Triangle
2 = Circle
3 = X
4 = Square
5/6 = N/a?
7 = L1
8 = R1
9 = select
10 = start
11 = L3 (click left stick)
12 = R3 (click right stick)
13 = Playstation button
This is all customizable under 'options' back in the main window next to Playstation 3. There's options to invert the sticks and stuff too for advanced users. I didn't mess with any of that.
That's all for MotioninJoy! You can close the window to send it to the system tray or right click the icon in system tray and exit it. As long as you made sure to 'enable' first you're done there.
Now you need to set it so that your controller is detected as the 2nd player and not the first. Instructions for that are here. Thanks be to Ritz* for this, it works perfectly and has very little setup involved. It took me a long time before I stumbled on this little gem smack in the middle of this long thread.
(This works for the PS3 controller too!)
Next up you need to do the config mentioned in the original post. Make the file, save it as described (both filename and the location you save it to are important so pay attention! If you get 'cannot exec' errors later when you're trying to add it in it's because you didn't type the filename the same way OR you didn't save it to the right folder!)
Quick ping can be buggy, player 2 can make player 1's view shift slightly which is very annoying. I recommend not binding anything to +quick_ping, just leave it alone.
Left on the dpad is the ping menu (just click left on dpad really quickly for quick ping, doesn't have the bug that the quickping function does)
Up on the dpad is gesture menu.
(For both menus use either left or right stick to pick an option, see following note: )
The context menus can be a little buggy, like only one person can use them at a time, and if you weren't the last one to use it, it's stuck on the other player's control or something. There's a trick to it (once you get the hang of it you can do it very quickly):
Get the other person to stand still and not look around.
Open context menu and close it doing nothing.
Look around yourself (either with your mouse or your right joystick whichever person you are.)
Open your menu again and this time you'll be able to select an option with mouse/joystick.
This (and the +quick_ping bug) are about the only bugs I notice; other than that the game's extremely playable. The reason for this bug is that the game seems to only detect one 'style' of input at a time for things like 'hint buttons' and the context menus. And whoever 'looked around' most recently is the input it currently accepts. While in normal play this is not a problem and you can both move around and shoot portals and stuff at the same time, it's really only the context menus that have a problem. But at least it works!
Also, the 'press this button' hints are all coded for an xbox 360 controller but there may be a way to fix that. Still working on it. In the meantime the buttons aren't hard to figure out. (UPDATE: It seems flagging it as a PS3 controller back in Motioninjoy, and not an xbox360 controller, seems to fix this. More testing is necessary.)
And finally what to do when you're actually in game.
1: Enable developer console if you haven't already. Options -> Keyboard mouse -> Enable Developer console
2: In the main menu, go to cooperative and allow the friends list to load, then open the console.
2a: ONE TIME ONLY: exec the config file you created as per the original post.
3: And then type "ss_map mp_coop_start" (no quotes). This starts the game from the very beginning including the cutscene; if you want to skip straight to the hub hit escape and 'go to hub' (but only if you've already done the calibration course before).
If you want to reset your progress, like if you want to play with someone new, in the console do (no quotes for any of these) "sv_cheats 1" and then "mp_mark_all_maps_incomplete" and then "sv_cheats 0". Note that you may or may not get errors saying you can't do that as not being admin or whatever, especially in online multiplayer. Ignore them. It still works as both Peabody and Atlas.
Resetting progress will mark all levels, including calibration course, incomplete, but it only changes the look and appearance of the hub on your next level load. So although you can do it at any time, you then have to play a level and come back for the hub to look any different. You can then hit escape and do 'go to calibration course', complete that and come back and you will have a fresh hub. Or just exit the game and start it again and it'll be fresh then (but if you start at mp_coop_start you won't have an option to skip directly to hub since the game has now flagged the calibration course as incomplete along with everything else.)
It does NOT reset achievements or prevent you from getting them (although it says it will, ignore that, it only prevents them until you load another level, you don't have to exit or restart the game at all). It resets progress for BOTH players, not just one (even in online coop so watch out!). If you do any course except calibration course, it will show that level as completed when you return to the hub so therefore you won't actually have a fresh hub, it'll just be fresh up to the point you just got back from. This also occurs if you're in the middle of a level when you do it; it will show that level (and any others you complete before returning to the hub) complete, but all the levels before it will be blank.
Finally, it doesn't reset stats. Such as how many steps taken or portals shot or points or any of that. It just resets which levels are marked as complete thereby altering the hub, so you can hear all the dialogue and/or see the visual effects as each area becomes available to play. And again, all it takes is a load screen in order to re-activate the ability to earn achievements so you don't even need to exit and restart at all.
Hope this helps!