>>107734091
Because DirectInput is harder to use.
Not only does it require the typical Windows callback boilerplate nonsense, the developers have to figure out each controller individually.
A DirectInput controller can have 6 axes, 2 sliders, 4 dpads (POV hats, technically), and 32 buttons. What do each of them do? How many does it even have? What sort of haptics does it support? That's up to the developer to figure out through a dozen different functions to query the device.
Every single button and axis on the pad is a unique Object which can only be understood by looking at its object instance struct:
typedef struct DIDEVICEOBJECTINSTANCE {
DWORD dwSize;
GUID guidType;
DWORD dwOfs;
DWORD dwType;
DWORD dwFlags;
TCHAR tszName[MAX_PATH];
DWORD dwFFMaxForce;
DWORD dwFFForceResolution;
WORD wCollectionNumber;
WORD wDesignatorIndex;
WORD wUsagePage;
WORD wUsage;
DWORD dwDimension;
WORD wExponent;
WORD wReportId;
} DIDEVICEOBJECTINSTANCE, *LPDIDEVICEOBJECTINSTANCE;
99% of games just want to know when the player pressed the damn A button, they don't want to write 500 lines of boilerplate to figure it out.