Joystick behaviour seriously flawed?

http://www.libsdl.org/tmp/SDL/test/testgamecontroller.c

this works with the 360 controller! However it doesn’t give me events because it’s gamecontroller instead of joystick.

This poses an annoyance… I built my system using a switch statement for cases like button pushes - so when an event comes in I can handle it. This forces me to pull an event each loop and see if something is there with
SDL_GameControllerGetButton(gamecontroller, (SDL_GameControllerButton)i) == SDL_PRESSED)

or similar. I don’t want to do this… it’s an event. Treat it like one.

SO back to “how to get 360 controller working in windows”. I have dug through the gamecontrollerdb.txt to find the guid strings associated with my controller -

“xinput,X360 Controller,a:b10,b:b11,back:b5,dpdown:b1,dpleft:b2,dpright:b3,dpup:b0,guide:b14,leftshoulder:b8,leftstick:b6,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b7,righttrigger:a5,rightx:a2,righty:a3,start:b4,x:b12,y:b13,platform:Windows”

mapping seems good enough, but even manually adding that and then opening joystick it still isn’t recognized. There’s no way for me to force a mapping of the current stick to something else, either.

Ironically, this mapping shows that “button 0” is the hat or dpad “up”. so it knows what’s going on. How do I either fix this at its core, or as an interim, make this mapping valid for the current controller?