The trouble with supporting USB HID controllers is that there are so many possibilities. The HID spec. gives a lot of freedom. Think of the start button. Pretty simple, huh? But it can be reported as a button, or a start control. It can have an arbitrary on value that could be anything the manufacturer likes.
Or what about an eight-direction d-pad? You'd probably report it as a hat switch. But what units do you give? My Logitech reports a physical minimum of 0 and maximum of 7 corresponding to a logical minimum of 0 and maximum of 315 in units of degrees. It reports a physical value of 8 for the neutral position (out of range). But you could report values in degrees directly, or use some other arbitrary range of physical values.
Analog axes are even more fun. You can report them as the X, Y, Z, Rx, Ry and Rz axes, or as vectors, or as many of the things on the simulation controls page, in any units you want, with all kinds of physical and logical ranges.
It's a lot of work to try to support all the possibilities. Apple's HID utilities library attempts to help. However, it's quite inflexible, and can cause problems. For instance, it completely screws up the value from the d-pad on my Logitech. It isn't really fair to expect any piece of software to support every USB HID controller.