AndrewC: Well, first of all it enables vibration effects which are way easier to write than the things offered by DirectInput; it's also way easier to write against compared to DI and doesn't make that stupid assumption that device axes are centered when there is no user interaction with the device.
Easier to write but much more limiting in what you can do with the vibration.
Also, I'm not sure what was wrong with centring the axis when there's no input. Various flight sticks with sliders and throttles as well as controllers with analogue triggers have all worked fine for me. The axis moves from 0 to whatever the maximum is without entering negative numbers.
It only became a problem when they decided to assign 360 controller's triggers to the
same axis, which is a monumentally stupid bit of design meaning that both triggers pressed = no triggers pressed.
AndrewC: Now, I do give you that it supports 4 axes as opposed to 8, and a maximum of 10 buttons, 2 trigers and 8-direction dpad, but do you honestly need 128 buttons on your gamepad?
And the most amusing thing? The whole point is moot as you can very well use both DirectInput and XInput side by side if the developer isn't a lazy piece of crap, it only takes around 40 lines of code to check if a device is marked as legacy or not and to select the appropriate input method.
You certainly don't need 128, but the point of such a ridiculously high number is to avoid limiting things. 32 would have been more reasonable and still plenty high enough to avoid limiting anyone, even 16 would have been much better than 10.
I agree, I wish developers would continue to use directinput but it doesn't help that Microsoft keep telling people not to.