protonscr

Steam controller behaving differently than keyboard on colemak and legacy games

steamopen Steam controller
ValveSoftware/steam-for-linux#5292 · opened 2017-12-18 by vinipsmaker · updated 2019-07-18 · 2 comments · github
Vvinipsmaker 2017-12-18 github
  • Steam client version (build number or date): Dec 15 2017
  • Distribution: Fedora
  • Opted into Steam client beta?: No
  • Have you checked for system updates?: Yes

I'm running a Fedora Linux distribution and I use the colemak layout.

I've tried to play Black Mesa and noticed that, while the game ignores my colemak layout and treat it as a qwerty keyboard (which is a good thing), it won't do the same for the Steam Controller virtual keyboard.

So... lots of buttons from Steam Controller are swapped. Game says wasd will move. On keyboard, if I press wasd, character will move. Steam Controller is configured to emit these keys on analog stick, but it is emitting wars instead.

The controller works okay on Shadow of Mordor (which I believe is getting joystick events, not keyboard events) and CS:GO (which I believe it has "native" support to Steam Controller).

  1. Open a terminal before opening Steam
  2. Change the layout to some non-qwerty layout (e.g. setxkbmap us colemak).
  3. Open Steam.
  4. Open Black Mesa.
  5. Try to move backwards with your usual keyboard.
  6. Now try to move backwards with your Steam Controller.

Steam changed layout behind the scenes to QWERTY, but forgot to do the same for the Steam Controller virtual keyboard.

Hhhirsch 2018-12-15 github

Same problem here with the German Neo 2 layout. When I hit the keys on the steam controller. It translates from the qwerty key to the key that is in that position in Neo 2. Instead I want the controller to produce the key press of the key I've set up in steam controller UI, not the key in the same position in the Neo 2 layout.

Hhhirsch 2018-12-15 github

This thread hints at a solution but I can't reproduce it https://steamcommunity.com/app/353370/discussions/0/492378265893582419/
It does not explain for what the solution is or how it works.

I think the real solution would be for the Steam Controller to send Key Codes instead of Scan Codes.
This way the actual value of the key according to layout would be sent instead of the value according to position.

Nothing extracted yet.