ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
24.39k stars 1.07k forks source link

Teensyduino joystick support #4677

Open sfjuocekr opened 3 years ago

sfjuocekr commented 3 years ago

Feature Request

Generic controllers (like the Teensyduino Joystick) are not registering in Proton, they do work if I enable Steam input but then suffer from major dead zone issues not really favorable in simulations.

I confirm:

Description

I would like to see generic joystick support, if you own a Teensy you can check my git repos for the SBUS joystick and test with that.

Justification [optional]

It is game related, for example the game Skater XL has a mod to fly a quadcopter and I would like to use my transmitter as a joystick. My XboxOne controllers work no problem, only the generic and DIY joysticks register zero inputs.

GTA V has a similar mod, I could get that to work with some trickery but also stumbled on the dead zone issues.

kisak-valve commented 3 years ago

Hello @sfjuocekr, I don't think we can entertain a wildcard generic joystick feature request, but we can use this issue report to track the specific issue you're having with Teensyduino. (I could be wrong on this, we'd need to hear from a Proton dev.)

Your deadzone issue might be related to https://github.com/ValveSoftware/Proton/issues/4066 / https://github.com/ValveSoftware/wine/issues/94#issuecomment-747477993.

sfjuocekr commented 3 years ago

I forgot to add that if I goto the joystick control panel when I use proton run control it does show me correct input.

It is just that when I'm in-game the game never registers any inputs, but it does rehister that the joystick is connected.

I also tried changing the device descriptor from joystick to gamepad, but that does not make any difference either.

sfjuocekr commented 3 years ago

The dead zone might indeed be from SDL2, if that is what SteamInput uses it makes sense as I have it nowhere else!

aeikum commented 3 years ago

It's likely this is the correct behavior. Proton supports generic controllers very similarly to how Windows does. There are outstanding bugs, and you may have hit a corner case, but it's most likely that the game doesn't support your controller on Windows either. Some games just choose to support only Xbox controllers, or some other small subset of controllers.

That's what the Steam controller mapping feature is for. Effectively it turns your generic controller into an Xbox controller, which the vast majority of games do support.

Googling for "Skater XL controllers" shows this is likely what's happening:

https://gamertagzero.com/skater-xl-how-to-use-controller-on-steam/

https://www.guideoui.com/skater-xl-how-to-use-dualshock-4-ps4-controller/

The game only supports Xbox controllers, so you have to use Steam's controller emulation support in order to use non-Xbox controllers for this game. It's the same on Linux as on Windows.

sfjuocekr commented 3 years ago

My botched together joystick works fine on Windows with the same game.

The thing is on WINE it is apparently using DINPUT instead of XINPUT , I can get it to work more or less with dumbxinput.

My Xbox controller works fine, I'm using the SyncFPV Quadmod which should just pickup any XINPUT controllers. For example the same behavior is true for GTA and the DRL Simulator (which also refuses to work with dumbxinput, but that is related to the input library they use).