So I've been playing around with my controller recently, and got it working with Garry's Mod quite fluidly. I'd like to share my effort with all of you in this simple How-To guide. I even made some images for you.
First off, make sure your controller is plugged in and responding. You may need drivers from Microsoft if you haven't done that already.
Second, install this handy-dandy .cfg file. Simply drag and drop into
C:\Program Files\Steam\steamapps\YOURNAME\garrysmod\garrysmod \cfg
This configuration file binds all of the keys needed to use an Xbox controller ingame and makes the joysticks operable.
Third, install "JoyToKey".
Download link is at the bottom of the page. It's not really even in installation, program is already set to go.
Now, install this second cfg to the SAME DIRECTORY THAT JOYTOKEY IS IN.
Now, make sure that your controller is ON and run JoyToKey. You should see the "Gmod" configuration to the left. Select it. You should now be able to use your right control stick to move the mouse, R to click, and L to right click. This config also makes it so that START hits the "Escape" key (pause menu) and Dpad right and left operate the scrollwheel.
Lastly, run Garry's Mod, open up the console, and type "exec xbox360controller". It should autocomplete the sentence for you. Hit enter, and you should be good to go. Start up a singleplayer game and test it. Here's the binding sheet:
Right Trigger: Primary
Left Trigger: Secondary
Right Bumper: Next weapon
Left Bumper: Sprint
Y: (Nothing, you can bind it by editing the CFG in your garry's mod folder and rerunning exec xbox...etc)
Start: Escape Menu
Left Stick: Movement
Left Stick (Button): Crouch
Right Stick: Look around/Operate Spawnmenu
Right Stick (Button): Suit Zoom
D-Pad Up: Flashlight
D-Pad Down: Noclip
D-Pad Right & Left: Scrollwheel
KNOWN ISSUES/Other things:
-Crouch does not seem to work well in multiplayer (you can try editing the cfg and changing the command from "+duck" to "toggle_duck")
-Want to use voice? Go into the CFG and where it says
bind "JOY4" "" // Y
change it to
bind "JOY4" "+voicerecord" // Y
-Can't rotate props conventionally. Oversight on garry's part.
I hope this tutorial was helpful, feel free to ask questions.