Proton Game Losing Cursor Binding

TLDR: Game (Hunt Showdown) loses cursor binding in a multi monitor setup allowing to lose window focus.

Triple monitor setup.

current system

OS: EndeavourOS rolling x86_64
Kernel: Linux 6.9.3-arch1-1
DE: KDE Plasma 6.0.5
WM: KWin (Wayland)
CPU: Intel(R) Core™ i7-8700 (12) @ 4,60 GHz
GPU 1: Intel UHD Graphics 630 @ 1,20 GHz [Integrated]
GPU 2: AMD Radeon RX 6700 XT @ 0,05 GHz [Discrete]
Memory: 31,25 GiB

I have this issue with multiple installations. This issue occurred under Fedora with Gnome, under Manjaro with Gnome & KDE using both Wayland and X11 and Hyperland.

It appears with Steam (Native) and Steam (Runtime).
The game gets started with Proton experimental.

Just running Gamescope does not change the issue and at least I cant figure out what parameters would affect the issue at all.

This issue might be connected to certain key inputs, but if so I was not able to pinpoint those.
As Hunt is an FPS shooter I use W,A,S,D,Q,E,F,R,T,X,C,Space,Shift,Ctrl and Tab a lot beside mouse inputs.
I’m aware that including Meta or Alt in those keystrokes would explain the issue, those key’s are not involved when the issue occurs.

This happens on occasion, but I’m not able to reliably reproduce.
When it happens the game window keeps focus and controls, but the cursor is able to wander to other screens while input is still bound to the game. Though some input outside the game screen will switch focus and therefore lose all game inputs.
I usually run “fullscreen windowed” in “fullscreen” mode the game will minimize if focus is lost.
In “fullscreen windowed” just moving the cursor in game-screen and giving input will not regain focus on the game. I will have to hit Meta to put game out of focus entirely and then give an input with cursor on the game-screen to regain focus on the game with cursor binding.

If I reduce my setup to a single monitor/screen the issue will not occur, presumably cuz the cursor cant leave the screen, so binding does not matter.

Using KDE window rules to enforce focus on the game window did not improve anything.

I’m not sure which components should or could ensure cursor binding.

  • Wayland
  • Proton
  • Compositor
  • Game Controlls

I had similar issue with wine-ge, when I played a game and another application was running in the same prefix. Maybe you have something like that?

As I just run Proton through Steam I have no experience in setting up Wine and configuring it.

I don’t really know what this means. I never even tinkered with launch options in Steam other than enabling gamescope.
I’m fine with digging into some documentation myself, but I don’t really know where to start, or better to continue as my efforts so far didn’t give me a good grasp where even to look into.

In trying to replace the issue I figured out, that hitting Tab (which ingame switches to map and therefore enables the ingame cursor from FPS controls) allows for the cursor to leave the game screen/window.
But there are other situations where i lose the cursor bind without hitting Tab beforehand.
Changing Keybindings switches the effect. So this seems to be related to the controls fro the game itself. That tough is not consistent with how the game behaves on a Windows OS.

So I must have gotten something wrong as for me it seems like conflicting information which module of the whole endeavor is responsible to maintain the cursor bind.

From what I can tell from looking for my cursor binding problem it is a Wayland problem.
I have made a crude workaround before figuring out that I had to close another window by rearranging displays from

to

__
It was a tiny bit helpful but the cursor still got lost from time to time.
Does the game have some kind of a launcher or any other window? If so, it is running in the same prefix and may cause the issue.

1 Like

Thx, I see what you mean with app prefix, but that is not the case for my game.

The workaround with rearranging displays is no solution, but is sure lessens the impact. :heart:

Have you tried using the force grab cursor launch option with gamescope? So something of the lines of

gamescope --force-grab-cursor -- %command%