Don't worry, no bugs, just a little informational update.
I've finally gotten the analog hat switch on my joystick to work from DirectInput, in my own code (I've never seen a game which can handle it, even flightsims like XPlane with support for tons of controls). Turns out it's incompatible with the c_dfDIJoystick2 structure. Instead, I have to dynamically construct a custom data format descriptor as I enumerate each control on the joystick.
At least this way I can tell exactly where axes are within the structure, I know the 3rd axis is always the 3rd dword in my structure, whereas in c_dfDIJoystick2 the 3rd axis might be Z, RZ, RX or even a slider, depending on the device's driver.
(Interesting note, the game Fahrenheit can only support gamepads with 4 axes, which use X/Y for the left stick and Z/RZ for the right stick. My xbox 360 controller uses RX/RY for the right stick, so I had to rebind in the unofficial drivers, but that breaks xinput from working).
This should also generically handle any number of axes, buttons and povs, not just the hard coded limits.
But boy does Direct Input give me a headache.
