I had a look through the backend to see about doing a better job of determining the controller type than just looking at its name.
For SDL the [usage page and usage are chosen nicely](https://gitlab.winehq.org/wine/wine/-/blob/91d3874b6528cb71b346c1d114914bcfd...) to encode the [`SDL_JoystickGetDeviceType`](https://wiki.libsdl.org/SDL2/SDL_JoystickGetDeviceType) result. So distinguishing is as easy as checking `instance.wUsagePage` and `instance.wUsage` in the front end.
Unfortunately udev [doesn't give any such nice breakdown](https://gitlab.winehq.org/wine/wine/-/blob/91d3874b6528cb71b346c1d114914bcfd...). Everything just gets assigned to gamepad. Fixing this would require getting the udev people to add subcategories to `ID_JOYSTICK` (e.g., `ID_JOYSTICK_GAMECONTROLLER`, `ID_JOYSTICK_WHEEL`, etc.).