Support us on Patreon to keep GamingOnLinux alive. This ensures we have no timed articles and no paywalls. Just good, fresh content! Alternatively, you can donate through Paypal, Flattr and Liberapay!

If you've read GamingOnLinux regularly, you will likely know how I am a big fan of SC Controller [GitHub]. It's a user-made driver and interface for using and mapping the Steam Controller. It's also now going under some major changes.

After previously noting how they weren't happy with certain issues surrounding Linux (like the Code of Conduct), the previous release was going to be the last for a while. Glad to see them back though, it's an incredibly useful tool.

So what's going on? Well, the developer "kozec" is rewriting large parts of SC Controller from Python to C with an aim to make it "much more portable" including Windows support and eventually Android.

For those interested, you can see the code on GitHub which is in a separate branch. They've also release version 0.4.9.1, which is the first rather experimental build with it using the new code.

Article taken from GamingOnLinux.com.
16 Likes, Who?
We do often include affiliate links to earn us some pennies. We are currently affiliated with GOG, Humble Store and Paradox Interactive. See more information here.
About the author -
I am the owner of GamingOnLinux. After discovering Linux back in the days of Mandrake in 2003, I constantly came back to check on the progress of Linux until Ubuntu appeared on the scene and it helped me to really love it. You can reach me easily by emailing GamingOnLinux directly.
See more from me
27 comments
Page: 1/3»
  Go to:

Hori 26 November 2018 at 11:17 am UTC
Android support would be nice. Currently the SC can only control the Steam Link app, but since I already have the damn thing in my hands, I want to be able to use it if I want to quickly change something else on my TV, and not have to switch to the dreaded TV remote.
Actually, this is why I prefer using an Xbox One Controller on my TV, since it can control the whole thing, not just Steam Play.
M@GOid 26 November 2018 at 11:28 am UTC
I'm glad to hear the developer is back in business. This is a piece of software that is very useful.

Now, since I'm not a programmer, somebody can explain how C will help with portability instead of Python?
Klaus 26 November 2018 at 11:57 am UTC
Wait... How is porting it to C making it more portable? I thought using C requires more platform-specific code.


Last edited by Klaus on 26 November 2018 at 11:58 am UTC
mirv 26 November 2018 at 12:28 pm UTC
View PC info
  • Supporter
  • Top Supporter
From a source code perspective, C is actually a very portable language. It might also have fewer dependencies, especially if you stick to POSIX, and quite probably a lower memory footprint once compiled. But I suspect in this case it's more that C can be used to create abstractions over the platform dependent sections, and python bindings will be provided on top of those.
Nanobang 26 November 2018 at 12:33 pm UTC
git muthafuckin' clone!

I hope this means Kozec-san has un-paused his Patreon payments, too.


Last edited by Nanobang on 26 November 2018 at 12:41 pm UTC
aluminumgriffin 26 November 2018 at 12:34 pm UTC
Quick thing about the C vs Python for being portable.
A python interpreter is a quite hefty penalty, and also there are C-compilers for _far_ more target-systems than there are platforms with python-interpreters.

Also, with C you basically "only" need to port the libs in use (with shims for everything you don't care about) when moving to an esoteric platform (this kinda was the purpose of C to begin with) while with Python you need to port the entire intepreter.

For a bit extreme case that still is easy to imagine - consider the case of an arduino (say, for an homebrew arcade machine). What would you find the easiest to do: port a C-program to fit into a couple of kB of memory, or try to wedge an entire interpreter in those same kB?

And as an aside, when working from another language it is a lot easier to interface with C than with Python (the former is often fairly automated as well as being common, not so about the latter).
Shmerl 26 November 2018 at 12:42 pm UTC
Rust would be better than C. That said, what about using upstream driver for Steam Controller instead of userspace USB hacks?


Last edited by Shmerl on 26 November 2018 at 12:42 pm UTC
mirv 26 November 2018 at 12:50 pm UTC
View PC info
  • Supporter
  • Top Supporter
ShmerlRust would be better than C.

Why?
(I don't want to start a holy war, I'm just curious as to why you think Rust might be better for this project compared to C.)
Shmerl 26 November 2018 at 12:54 pm UTC
mirvWhy?

Many reasons really. Here is one C developer putting it in more detail: https://dpc.pw/still-in-love-with-rust

I'd highlight this part:

QuoteI loved the simplicity and minimalism, I loved the flexibility and control, but I couldn't stand primitivism and lack of modern features.

That's exactly how I feel about C, when I work with it I'd take Rust over C any time.

To put it differently. If you need to support an existing project - fine. But if you are making a new one (like here switching to another language), don't start it in C or C++. Start it in Rust.


Last edited by Shmerl on 26 November 2018 at 1:02 pm UTC
mirv 26 November 2018 at 1:09 pm UTC
View PC info
  • Supporter
  • Top Supporter
Shmerl
mirvWhy?

Many reasons really. Here is one C developer putting it in more detail: https://dpc.pw/still-in-love-with-rust

I'd highlight this part:

QuoteI loved the simplicity and minimalism, I loved the flexibility and control, but I couldn't stand primitivism and lack of modern features.

That's exactly how I feel about C, when I work with it I'd take Rust over C any time.

To put it differently. If you need to support an existing project - fine. But if you are making a new one (like here switching to another language), don't start it in C or C++. Start it in Rust.

Ah ok, a personal preference thing rather than a technical one.
On a technical level, C is a better choice here, for ease of cross-platform support on something that is lower level and may require kernel interaction. Pretty much everything is going to have a form of libc, and target platforms will have a lot of support (from compilers and build systems, to additional libraries that might be needed) already in C.
  Go to:
While you're here, please consider supporting GamingOnLinux on Patreon, Liberapay or Paypal. We have no adverts, no paywalls, no timed exclusive articles. Just 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!

You need to Register and Login to comment, submit articles and more.


Or login with...

Livestreams & Videos
None currently, submit yours here!
See more!
Popular this week
View by Category
Contact
Latest Comments
Latest Forum Posts