Cross-Controller Input Manager?

I am working on a game that’s targeted for PC, Mac, Linux. It’s supposed to be controllable on all these platforms by any sort of game controller which has analog sticks (support for xbox and playstation controllers are of highest priority).

The problem is, Unity sees controllers differently. Even the same controller on different platforms. I am testing it with an Xbox controller for Windows, and the mappings are different for all 3 platforms. Moreover, I heard that an Xbox controller for Xbox, connected to a computer, is seen differently by unity than an Xbox controller for Windows.

I am starting to get a headache thinking about all the mappings I’d have to test and manually write this way…

So my question is, does anyone know of any system that can programatically figure out what controller you have, and help me map it at run time to the axis’ I need? How do pros handle cross controller (and cross OS controller) support in unity?

I did check the unity wiki on the 360 controller:

Well, as far as I know, you define the inputs yourself via the edit>project settings > input

I have added GamePad support myself for a project, but have tested only on 2-3 controllers, and all seem to work fine.

I used the method provided by this nice guy from Blackberry, who was helpful enough to post a guide.

The procedure is the same for any phone though!