Proton: 4.11-10 - xinput set-button-map overrides ignored

Created on 13 Dec 2019  路  28Comments  路  Source: ValveSoftware/Proton

Since the install of Porton 4.11-10, the overrides put in place by xinput's set-button-map are ignored in games.

By default, my mouse has a button map of "1 2 3 4 5 6 7 8 9 10 11", however either some games do not like buttons 10 and 11, or Proton itself does not. This I have not yet been able to ascertain.

To get around this, I have changed the mapping to "1 2 3 4 5 6 7 8 9 8 9". In essence, the thumb buttons on the right hand side now act exactly like the buttons on the left.

This has worked in all tested versions of Proton up until 4.11-9, however 4.11-10 with its mouse improvements now mean that the new button mapping does not work.

I am willing to do more testing by remapping other buttons on my mouse, however I am unable to do so right now.

Need Retest

Most helpful comment

Great! Thanks for reporting & retesting.

All 28 comments

I'm seeing the same behaviour; I have my mouse button map as "3 2 1" (xmodmap -e 'pointer = 3 2 1') to get left-handed mouse button behaviour, and it stopped working in Proton games earlier today.

This problem is fixed with the 4.11-9 beta branch.

What games are you seeing this problem in?

I saw this issue very specifically in Quake Champions and Wrath, but I willing to test more.

Correct

Weird, I'm not able to reproduce the problem in WRATH or any other game I've tried. I set xmodmap -e 'pointer = 3 2 1' so now my buttons are reversed. In WRATH, the right mouse button now acts as the primary mouse button (e.g. activates menus, etc), as expected.

I cannot speak for @queer, as their issue seems similar but different to mine. For me, I am using the command /usr/bin/xinput set-button-map 8 1 2 3 4 5 6 7 8 9 8 9

This sets the right thumb buttons to the same mapping as the left thumb button. After 4.11-10, the mapping was being ignored.

In Wrath, my right thumb button was no responding to any presses, however the left thumb button was. They should behave identically.

Right, understood. I think I see what is causing your issue.

@queer Can you tell us what game(s) you are seeing the problem in?

@SuperMatt I have a possible fix for your issue. If you don't mind a little legwork, it would be helpful for you to test it, as I don't have a mouse with that many buttons. What model is your mouse, by the way?

To test, download bug3317_fix.tar.gz. Head into your Proton 4.11 folder and untar that file. For example:

cd ~/.steam/steam/steamapps/common/Proton\ 4.11
tar -xvvf ~/Downloads/bug3317_fix.tar.gz

This should overwrite two winex11.drv files. Run your game and see if it's fixed!

To restore back to stock Proton 4.11-10, just delete the dist/ folder (really, just deleting dist/version is sufficient) and Proton will restore itself next time you run it.

Tested. Interestingly it works now in WRATH, but it does not work in Quake Champions.

Thanks. Dumb mistake on my part. Try again with this one:
bug3317_fix2.tar.gz

Again, this works in WRATH, but not in Quake champions.

https://youtu.be/SaHaKTYydgE

Here is a video of Quake Champions running with xinput test running in the background. You can see that on the first time I am trying to bind crouch to mouse 4 (I know it's already set, but it will accept that input), I am using the right hand buttons. It registers as button 8 in xinput, but that doesn't get accepted by QC. When I press mouse 4 on the left hand side of the mouse, it registers button 8 and is accepted by QC.

Now I personally think there are two interesting things happening.

1) Proton doesn't like the extra buttons on my mouse, which you'd normally consider Mouse 6 and Mouse 7,
and
2) It's ignoring the mapping I have so that Mouse 6 becomes Mouse 4, and Mouse 7 becomes Mouse 5.

What's happening for me is that because point 2 is failing, my workaround for point 1 doesn't hold.

To answer your previous question, my mouse is a SteelSeries Sensei 310

OK, I've got one of those on order.

Turns out there are TWO mapping layers! One for each device (xinput), and one for the actual X pointer (xmodmap). I had fixed the xmodmap path, but not the xinput path. I'm working on that now.

I don't understand how the changes I made could have fixed WRATH for you. Are you sure it was broken in stock 4.11-10?

OK turns out that WRATH has been working the whole time, it's only Quake Champions that I have found so far which does not.

OK, here's a third version that supports both device and x pointer mapping. Hopefully it will fix QC for you...
bug3317_fix3.tar.gz

That looks to have worked, thank you.
:shipit:

Great, thanks for testing. I'll include this work in the next release. I expect it will fix @queer's issue, too.

@aeikum Very sorry for the late response! I was specifically seeing this in Risk of Rain 2.

@queer Thanks! I was able to reproduce the problem in ROR2 and confirmed that it will be fixed in the next build.

Hey there, Proton 4.11-11 contains the fix for this. If you can both confirm it's working well for you now, we can close this issue.

@aeikum confirmed working yesterday.

I am not home due to the holidays and will not be able to confirm for a while, sorry!

OK. Let's close this. Please leave a comment here if you are still having the problem.

@SuperMatt I had a chance to try out the mouse I ordered on Windows. Somewhat surprisingly, I wasn't able to assign any controls in Quake Champions to the right-side mouse buttons. It capped out at 5 buttons (left, right, middle, and the two on the left side). Installing the Steelseries Engine application and playing around with the button assignments in there didn't change anything in QC. By default they are mapped to keyboard buttons, so maybe that's a hint that more than five mouse buttons aren't often usable. Possibly they're accessible directly via HID, but I'm not sure if Windows allows that (Wine doesn't, yet, in either case).

Are you aware of any games that can use all of the buttons, in Proton or on Windows?

I cannot really talk of any games that use the extra buttons now. FWIW, I recently installed Windows and installed the SteelSeries app. Once I realised that the buttons were mapped to Home and End (or was it Page Up and Page Down? I can't remember), I remapped them and tried Quake Champions again in Linux without my re-mapping. This worked without any issues.

Although it turns out I didn't need my xinput overrides, I'm glad I had them for this period, so that I was able to find a bug and report it.

@aeikum So sorry for the late response; it works perfectly for me now.

Great! Thanks for reporting & retesting.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

AwesamLinux picture AwesamLinux  路  3Comments

Dakunier picture Dakunier  路  3Comments

AwesamLinux picture AwesamLinux  路  3Comments

ghost picture ghost  路  3Comments

juppso picture juppso  路  3Comments