I have one of those cheap-ish PS2 like controllers and I am having a REALLY hard time getting it to work well with Galaxy on Fire 2. Here goes:
Control Panel --> Game Controllers gives that the controller has the following:
X Axis--> Left stick x-axis
Y Axis --> Left stick y-axis
Z Rotation --> Right stick x-axis
Z Axis--> Right Stick y-axis
POV --> D-Pad
Buttons 1-4 --> Main buttons
Button 5-8 --> Shoulder buttons
Button 9 --> Select
Button 10 --> Start
Button 11 -> Left stick button
Button 12 --> Right stick button
Now, the beans are this:
1) I can remap and use the buttons with no issues
2) The left stick is correctly used for left, right, down and up
1) The right stick does weird things: left and right on the stick does BOTH throttle and rotate. Which is just nuts.
2) Attempting to use the Hat utterly fails for use for the Autopilot, Wingman, Khador and Action menus. It can be used for one of them only even though the hat has 4 distinct directions (the same directions as a d-pad).
This is just unacceptable people. In game Joystick remapping is something that has been doable and easy to do for over 15 years, even in the dark days of DOS. To give an idea of how bad Galaxy On Fire 2's joy stick jazz is, just compare it to Descent2 of a long, long time ago (and any of it's modern ports).
To crap it all off, it is not even hard to do! SDL uses the ancient barbaric interface of Win32 MultiMedia Joystick! Go look in src/joystick/win32/SDL_mmjoystick.c and there it is everything you want to read from most input peripherals, at less than four hundred lines of C code. I admit that interface assumes a fixed joystick has no more than 6-axis, but there are very few sticks that have more than 4 even.
But regardless, weather using DInput or whatever please get this remapping of axis correct. I cannot play the game with my pads. At 10 Euros even on sale, this is a disgrace.
Heck I'd be happy to have an option to say it only uses XInput and then use http://code.google.com/p/x360ce/
to be able to use my gamepad as I want.
A simple quick fix would be to use xpadder, but that does not work for Galaxy on Fire because there is no way to turn off using an axis, so even having an axis direction make a key press/key release, it still fails because there is no option to disable a joystick axis.
Attempting to handle the GoF2.ini file is a mess too: it stores some kind of Windows Device ID for the command together with just a number, that number gets it meaning from within the Galaxy on Fire 2 install directory file DirectMapping.ini. So I cannot even disable axis... futzing with DeadZone and Sensitivity does not seem to force it to disable. Besides, editing a .ini file and requiring a 3rd party program to just use my pad correctly is insane.
My guess is that GoF2 uses DInput for input and uses the fields Rx and Ry for the right stick position. What the dev's did not realize is that most (cheap) controllers have the right stick do Z and Rz, and not in a consistent way (sometimes Z is left/right, sometimes it is Rz). Moreover, I strongly suspect that they do not even check what joystick it is coming from because using my 2nd pad's sticks in-game is as if I am using my 1st pad's sticks, BUT the buttons not.
Get this crap in gear people, joystick axis remapping is easy.