Darvond: So Microsoft, in their infinite wisdom invented a new controller protocol instead of using the existing one. For reasons which remain a mystery; and one that isn't very backwards compatible. That's why I have a nice multimode controller; the 8Bitdo SN30 Pro +.
It sounds like they didn't even make the protocol transparent to the applications that use it. In other words, the code that one writes to access controllers is different depending on which type of controller is being used.
What they should have done, instead, is just use one system call API that's used for both types of controllers so that the programmers only have to write the input code once for all controllers rather than twice.
(Then again, games should really be using an indirection layer here that converts raw inputs (like which physical button is pressed) to events that the game engine processes; this would allow one to, for example, easily implement key/button rebinding, which is a commonly requested feature.)