Hey everyone - I'm new here, but I've been following the FS2 modding community and the Diaspora community since the project went live. Like many of you, I have a 360 controller for playing other games on my PC. I used to be a pretty hardcore pilot back in the day in both the wing commander era of games and mechwarrior arenas sporting a full out thrustmaster system. The WCS Mark II and FCS Mark II along with my rudder pedals were awesome - but unfortunately are long gone due to me transitioning into an adult
So, being a huge fan of the rebooted BSG series, and missing some childhood fun, I decided to fire up Diaspora and give it a whirl - seeing if I still had my old dog-fighting techniques and twitch skills. OMG - I'm rusty to say the very least. After playing the first couple training missions, I bust out the 360 controller... This is where my troubles began.
I've looked around and have seen lots of requests for a 360 controller setup for pinnacle or xpadder. I've used both folks, we've got some finite delay coming from pinnacle (plus its bloatware IMHO) and xpadder has some stick problems as far as translation and dead zones. (it also doesn't really support true digital directx i/o)
So after beating my brains out for hours trying to determine why I'm having problems with having a smooth stick in Diaspora and Freespace 2 with the default joystick driver, and not having one with pinnacle and xpadder (and not getting the best of both worlds with 360 mapping AND a joystick using the default) I went the crazy-frak route and have now got some wonderful 360 smooth as butta gameplay going on. Here is what I did:
GlovePie is a no frills "map any controller" to anything super powerful scripting mapping/scripting interface, its really quite simple to use, but it does NOT have a super easy interface.
Grab it here: http://glovepie.org/lpghjkwer.php
Here is my script for my 360 controller, just copy and paste it into GlovePie and save the sucker:
// Map the Xbox Controller to a specific set of FreeSpace 2 Keyboard and Mouse controls
// Map the Right Analogue Stick (XInput1.Joy2X/Y) to the Mouse
// Note that the numeric value affects the speed of the turning, and we use a deadzone of 0.2 to prevent 'twitching'.
mouse.DirectInputX = mouse.DirectInputX + 25 * deadzone(XInput1.Joy2X, 0.2)
mouse.DirectInputY = mouse.DirectInputY - 25 * deadzone(XInput1.Joy2Y, 0.2)
// Map the Right trigger to the left mouse button (Fire Primary) and the Left Trigger to the right mouse button (Fire secondary).
// Use a threshold of 0.5 as this is an analogue input but we are converting it to a digital input
keyboard.Space = XInput1.RightTrigger > 0.5
keyboard.LeftControl = XInput1.LeftTrigger > 0.5
// Map the two shoulder buttons (LB/RB) to 'Afterburner' and 'Countermeasures'
keyboard.Semicolon = XInput1.RightShoulder
keyboard.Tab = XInput1.LeftShoulder
// Map the X axis of the left stick to 'bank left/right' controls
keyboard.Q = XInput1.Joy1X < -0.5
keyboard.E = XInput1.Joy1X > 0.5
// Map the Y axis of the left stick to 'Maximum/Zero throttle'
keyboard.Backslash = XInput1.Joy1Y > 0.5
keyboard.Backspace = XInput1.Joy1Y < -0.5
// Map the left thumb stick button to 'Glide' and the right thumbstick button to 'Match Target Speed'
keyboard.LeftAlt and G = XInput1.LeftThumb
keyboard.M = XInput1.RightThumb
// Map the back button to 'Target Sub-System' and the start button to 'Auto-Target Hostile'
keyboard.U = XInput1.Back
keyboard.LeftAlt and H = XInput1.Start
// Map A to 'Next Target', X to 'Next Hostile', Y to 'Next Friendly' and B to 'Bomber/Bomb Targeting'
keyboard.T = XInput1.A
keyboard.H = XInput1.X
keyboard.F = XInput1.Y
keyboard.B = XInput1.B
// Map the DPad up to 'Down Thrust' and DPad down to 'Up Thrust'
keyboard.X = XInput1.Down
keyboard.Z = XInput1.Up
// Map the DPad left to 'Left Thrust' and DPad right to 'Thrust Right'
keyboard.A = XInput1.Left
keyboard.D = XInput1.Right
Make sure you turn OFF the joystick in the diaspora launcher. I've tried to document the code for easy editing.
Have a frakload of fun nuggets!