ValveSoftware / Source-1-Games

Source 1 based games such as TF2 and Counter-Strike: Source
634 stars 74 forks source link

[Unix] Bug - Mouse input issues #3335

Open RicochetYT opened 4 years ago

RicochetYT commented 4 years ago

Odd bug, possibly related to this Half-Life bug Playing TF2 on Linux has been pretty smooth so far, performing better than Windows, however, there is a bug with "mwheeldown" and "mwheelup" inputs. Personally, I use the console commands "bind mwheeldown +jump" in order to bunnyhop in-game. Issue is, whenever you scroll-wheel bhop with mwheeldown, it will also press mouse5 (which I have bound to disguise 8 -2, in order to undisguise). This leads to issues of my disguise randomly dissapearing while bunnyhopping with scrollwheel, leading to very awkward deaths by sentries.

Summary

There is an issue with the way the Source Engine (more likely SDL) takes mousewheel inputs, and this can lead to scrolling down triggering mouse5 and scrolling up triggering mouse4.

kisak-valve commented 4 years ago

Possible duplicate of #68.

RicochetYT commented 3 years ago

Note: This does not occur in Windows 10.

Yetoo1 commented 3 years ago

What is your mouse model?

RicochetYT commented 3 years ago

What is your mouse model?

I have a Razer Deathadder Elite.

jooonior commented 3 years ago

I've run into the same issue and was able to fix it by adding LD_PRELOAD="/usr/lib32/libSDL2-2.0.so.0" %command% to launch options. This forces TF2 to use your system's SDL2 library instead of it's own outdated version which is causing these issues. Make sure you have the SDL2 package installed and /usr/lib32/libSDL2-2.0.so.0 exists.

Environment variables come before game parameters (and %command% separates the two), so your launch options should look something like this:

LD_PRELOAD="/usr/lib32/libSDL2-2.0.so.0" %command% -novid -console
RicochetYT commented 3 years ago

I've run into the same issue and was able to fix it by adding LD_PRELOAD="/usr/lib32/libSDL2-2.0.so.0" %command% to launch options. This forces TF2 to use your system's SDL2 library instead of it's own outdated version which is causing these issues. Make sure you have the SDL2 package installed and /usr/lib32/libSDL2-2.0.so.0 exists.

Environment variables come before game parameters (and %command% separates the two), so your launch options should look something like this:

LD_PRELOAD="/usr/lib32/libSDL2-2.0.so.0" %command% -novid -console

Thanks for the suggestion, I'll be sure to check it out!

RicochetYT commented 2 years ago

Just an update, this is still an issue. Team Fortress 2 (and other Source Engine games) come bundled with outdated libraries, for compatibility reasons. However, these outdated libraries lack bug fixes of the up-to-date libraries that are provided by most Linux/Unix systems.

The LD_PRELOAD="/usr/lib32/libSDL2-2.0.so.0" %command% in launch options fix works, however, so does renaming (or deleting) the libSDL2-2.0.so.0 library in $HOME/.local/share/Steam/steamapps/common/Team Fortress 2/bin, or wherever your respective install is located. If your game crashes, this means you need to get libSDL2 from your systems' respective package manager, this also applies for the LD_PRELOAD method.

You can also remove other libraries in here (if you have them installed in your system), but I will not cover this here as those don't typically fix anything to my knowledge.

Note though, using your own system libraries technically carries the risk of issues with VAC as you are using libraries separate from the ones the game comes with, but that is not really much of a concern.

RicochetYT commented 2 years ago

@kisak-valve Sorry to @ you, but could you update the labels of this issue? This effects pretty much any Source Engine game and applies to any Unix OS (Mac, Linux)

At least, this should also effect Mac.

SirIntellegence commented 1 year ago

Is there going to be a fix for this? It complicates my gameplay since I have stuff bound to mouse 4 and 5