I apologize for the weird title but it is the best that I can come up with right now. So I have a project where I am building a HID device that will act as a game controller. I am thinking to emulate the controller so that it appears as an Xbox 360 controller to a Windows PC. There is a decent API called the XInput API for games so that they can utilize the 360 controller. I would like to take advantage of that.
I am currently looking into what it will take to code a microcontroller to appear as a 360 controller to the PC. I do have some questions which I am hoping someone with more expertise in the field can help me on.
1) I am looking into the HID standard. I was wondering, is there a separate subclass of the HID standard designated for game controllers that I can use that is compatible with the XInput API? Or at the very least, is there a provision for a game controller in the HID standard?
2) I found documentation on how to use the XInput API here: https://learn.microsoft.com/en-us/windows/desktop/xinput/getting-started-with-xinput
Now, I am wondering, is there any documentation out there that specifies how to make a HID device compliant to the XInput API or will I be doing some reverse engineering where I use the API to guide how I code the microcontroller?
3) Lastly, is there any documentation on the API that the PC uses to communicate with an Xbox One controller? Or is it still the XInput API? Or is it the Gamepad class (https://learn.microsoft.com/en-us/uwp/api/windows.gaming.input.gamepad)
Thank you for taking your time to read this and I look forward to your response!