I'm sure many of you will be aware by now that the Unity game engine has suffered problems with Linux support lately. One of those issues to do with keyboard input does actually have a workaround.
What happens, is that you might bring up a chat box and attempt to type "Hello", but it will end up as "Hheelllloo" as it's detecting more keystrokes than it should be. This also affects character movement in games too, like holding SHIFT to run will end up repeatedly switching between walk and run as if you're tapping the key constantly. It causes a lot of other issues too, it's quite a nuisance.
The fix is quite simple, if you add this as a launch option in Steam for the affected games:
XMODIFIERS='' %command%
Or for games not on Steam:
XMODIFIERS='' ./game_executable
That has been tested by myself and others and it really does fix it. From what I understand, it's an issue with "ibus", which is installed along with GNOME and it should be fixed in the latest stable version of Unity from what developers have told me.
The issue causes some games to be practically unplayable, until developers work on a fix themselves or upgrade Unity. Both can end up taking rather a long time!
Update: As it turns out, the issue stems from multiple bugs in SDL2. They affected Unity's build of SDL2 as they had Ibus and fctix turned off as per this bug report. I spoke with Marc from Unity (previously from Feral) who submitted the patch, which has been accepted upstream into SDL2. The rest (like this fix) has already been solved in SDL2 and merged into Unity already in the latest version.
With thanks to Steff for the tip.
XMODIFIERS='' steam
or directly.You can also circumvent the issue by selecting other input source in GNOME3. GNOME Tweaks->Keyboard&Mouse->Show Extended Input Source ; then switch from IBUS to something else.
Rust
WarThunder
EDIT:
I feel like adding this: I just loaded up RUST for the first time in 3 weeks, and it ran a 4.5GB update. Then I started playing it fine, no problems, and I don't use a game command switch to fix any problems, just the plain defaults. [For me, RUST is not affected by the problem mentioned in this article.]
Last edited by g000h on 25 Aug 2018 at 2:06 pm UTC
I don't suppose there is a list of titles which are known to be affected? From above comments I'm assuming the current list is this:I don't remember exactly, but it's a much longer list than that. War Brokers that I wrote about in the last day is another. A lot of Unity titles had it.
Rust
WarThunder
attempt to type "Hello", but it will end up as "Hheelllloo"I remember I had this problem in Lazarus IDE few years ago. I solved it by removing ibus.
We really should advocate for dynamic linking and shipping the .so's alongside the game, specifically for situations like this. A lot of games won't get updated at all.
We really should advocate for dynamic linking and shipping the .so's alongside the game, specifically for situations like this. A lot of games won't get updated at all.
https://plus.google.com/+RyanGordon/posts/TB8UfnDYu4U
Well, now I know why I wasn't experiencing this well-known bug. It must not occur to KDE Plasma users.Gnome user here. I never experienced this well known bug. It must not occur to Gnome users.
??
I wasn't over-valuing my anecdotal experience. The article said that it was related to ibus which is installed by Gnome.Well, now I know why I wasn't experiencing this well-known bug. It must not occur to KDE Plasma users.Gnome user here. I never experienced this well known bug. It must not occur to Gnome users.
??
We really should advocate for dynamic linking and shipping the .so's alongside the game, specifically for situations like this. A lot of games won't get updated at all.
https://plus.google.com/+RyanGordon/posts/TB8UfnDYu4U
TL; DR: set the game launch options to
SDL_DYNAMIC_API=/path/to/my/sdl.so %command%
On your system, that path could be ~/.steam/bin64/libSDL2-2.0.so.0 (adjust as needed for 32 bit games).
Edit: assuming Steam ships the fix...
But yeah, that post is very interesting if you're technical-minded. I actually re-read it, and found out that I misremembered the part about the zlib licence; I thought it forced you to be able to override it. Thanks for the link! I <3 Icculus :D
Last edited by MayeulC on 24 Aug 2018 at 3:16 pm UTC
We really should advocate for dynamic linking and shipping the .so's alongside the game, specifically for situations like this. A lot of games won't get updated at all.
https://plus.google.com/+RyanGordon/posts/TB8UfnDYu4U
TL; DR: set the game launch options toSDL_DYNAMIC_API=/path/to/my/sdl.so %command%
On your system, that path could be ~/.steam/bin64/libSDL2-2.0.so.0 (adjust as needed for 32 bit games).
Edit: assuming Steam ships the fix...
But yeah, that post is very interesting if you're technical-minded. I actually re-read it, and found out that I misremembered the part about the zlib licence; I thought it forced you to be able to override it. Thanks for the link! I <3 Icculus :D
I compiled 2.0.8 myself and tested with Golf With Your Friends. It works!
See more from me