Customizable Linux kernel input driver similar to Steam Input
Maath Apr 22, 2022
Is there any project producing a customizable Linux kernel level input driver that can basically intercept actual hardware, like a game controller, and emit events of various types (mouse input, keyboard input, joystick input) with complete customizability as to what inputs produce what outputs? I'm thinking of something similar to Steam Input, but that works outside of Steam. In addition, some Steam games do not work correctly with Steam Input, ignore it, and try to handle the controller input directly anyway, giving no means to remap the controls to my whim (Outlast).
Maath Apr 23, 2022
So I found one project, SC Controller. Actually, confusingly, it is two projects (well technically from Github there are 108 forks).

https://github.com/kozec/sc-controller

https://github.com/Ryochan7/sc-controller

The first one I believe is the original project, but hasn't been touched in over a year. The second one is active. The first one has a Wiki page, which might be useful, though I couldn't understand it as it doesn't start with any basics and seems to be programming oriented, where I thought this was a GUI tool.

There are also articles here regarding SC Controller, but the most recent one of those is from back in 2020.

Last edited by Maath on 23 April 2022 at 12:08 pm UTC
dr_jekyll Apr 23, 2022
I also use SC-Controller, it is actually pretty straightforward.
You add your controller in the settings and then you can create and/or modify a profile.
You click on the buttons in the GUI and then you can assign an action (Note: my word, there might be other words used by the program etc.) to it, e.g. a keyboard key or simply a different controller button or even something more complex like a menu or a combination of actions.
Then a "virtual" controller is created, that is "emulating" an Xbox 360 game controller.
So games will see the controller as such.

Regarding the two versions:
the main difference is that Ryochans Fork is using Python 3, while the original version by kozec has two versions, one that combines a newer C (language) port with a python 2 GUI and the original python 2 version.
Since python 2 is End of life for a very long time now and kozec does not seem to be interested to do something about it, many distros use Ryochans fork instead.

Regarding your problem described here:
QuoteIn addition, some Steam games do not work correctly with Steam Input, ignore it, and try to handle the controller input directly anyway, giving no means to remap the controls to my whim (Outlast).

I suggest to try using something like firejail, as it allows you to restrict access to input devices (/dev/input), so you might give Games and maybe even Steam in general only access to the input devices you/they need.
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Login / Register


Or login with...
Sign in with Steam Sign in with Google
Social logins require cookies to stay logged in.