My gamepad axes data is somebody elses, or CMB?

I've tried an XBox 360 controller and it was useless. So I tried the classic XBox S controller with XBCD thinking the extra control would save the day, it hasn't.

Basically the raw data I get with Input.GetAxisRaw(asix_n) is just, well, it's wrong.

Take the X axis for example on the left stick. Windows shows me the pretty graphic perfectly, no significant noise, all fun. I calibrate it for lulz, still fine. XBCD control panel graphics report it perfectly too. Then I try in Unity. Mental.

The range reality reports, which in this case includes Windows, is a smooth -1 to 1 left to right, resting at 0 in the center.

The range Unity reports is 1 at the left to 1 center (as in, left of center useless), then -1 to 1 from the center to the right.

Is there a way to get closer than Input.GetAxisRaw - because obviously Unity is taking a brief detour through interdimensional spacetime to translate what Windows input is telling it (which conveniently happens to be the truth)?

Please make me happy face.

The same happened to me with a regular MS Sidewinder joystick when switching from Unity 2.6 to 3.1.0f4. Use the registry hack provided by andeeee ( to force Unity to use DirectInput instead of the default RawInput.


If andeee registry hack is not helping, have you calibrated your joystick?. I lost quit sometime on that as well... :)