Gamepads not working in various applications

Hi there. I’m opening this topic in an effort to try and chase down something that has plagued my Flatpak experience for quite a long time.

There are many varied applications where gamepads do not work. This crops up most obviously in Steam, where about half of the native games I’ve tested don’t notice the gamepad at all. There are two things that make this even more confounding.

The first: you can force these applications to use the Windows version via Proton, and gamepad input will suddenly start working. I would really not rather get into the habit of installing the Windows versions of native games, especially ones that have supported us for a long time.

The second: they don’t even work in Steam Input. I have given /dev/uinput sufficient permissions to let Steam create virtual gamepads, and it works just fine in other games. But the games where gamepad input doesn’t work, Steam Input doesn’t work either. It’s my understanding that Steam Input just makes virtual 360 gamepads, but whatever method these games are trying to use to get input, it’s just not working.

I thought this issue was specific to Steam because gamepads work in other Flatpaks; RetroArch, Dolphin, PCSX2. But then I tried to use a gamepad in Firefox, at gamepadviewer.com. It didn’t work. But it did work in the binary tarball version.

I have had an issue report open on the Steam bug tracker for a while, but it has been ignored. Because I have just now noticed this issue in Firefox, I made an issue report on their bugzilla since they’re supporting the Flatpak themselves. Maybe they’ll have some insight, maybe that’ll get ignored too.

EDIT: I can do flatpak run --command=sh org.mozilla.firefox and cat both the event* and js* devices representing the gamepad. So it doesn’t feel like a permissions issue. But doing ls -l /dev/input shows they’re owned by nfsnobody:nfsnobody instead of root:input like on the base system. Could that make some sort of difference?

So I thought I’d go ahead and make this topic here and see if there are people with more intimate knowledge who might know some things we can try to do to figure this issue out.

I saw that, but it didn’t seem like it had anything to do with why it’s different between different games and applications. And we already have joystick access in the sandbox. event* and js* joysticks both show up, and they can both be read. I just don’t know why it’s not reading them. Are you suggesting I comment on that issue for help?