Skip to content
 
 

Latest commit

 

History

2,730 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SC Controller icon

SC Controller // A powerful tool for all of your game controllers

Ko-Fi Discord CI tests Build and publish AppImages

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4

Features

User-mode driver, mapper, and GTK 4 based GUI for game controllers, including but not limited to the Steam Controller (2015 & 2026).

  • Allows to setup, configure and use the Steam Controller (2015 & 2026) without ever launching Steam
  • Emulates the Xbox 360 controller, mouse, trackball and keyboard
  • Connect multiple controllers at the same time
  • Supports profiles, switchable in the GUI, or with a controller button
  • Joystick, Touchpad and Gyroscope input
  • Haptic Feedback and in-game Rumble support
  • Macros, button cycling, rapid fire, modeshift, mouse regions, …
  • OSD, Menus, On-Screen Keyboard for desktop and in games - except in GNOME
  • Automatic profile switching based on the active window - X11 only for now

Supported controllers

All controllers should be supported at some level, either fully by a custom SC Controller driver, or best-effort by means of generic interfaces like evdev.

Controllers supported via a custom driver:

  • Steam Controller (2015, 2026)
  • Steam Deck
  • DualShock 4 (v1, v2)
  • DualSense
  • DualSense Edge - untested, lacks support for the 4 extra buttons at the moment

The controllers above will be autodetected and used without having to explicitly configure them.

Registering other controllers

If your controller is not in the list above, you have to add it via Settings -> Controllers -> Register New Controller.

Upon starting the registration process, your controller will be automatically mapped via SDL's GameControllerDB, which has hundreds of supported devices.
In case your controller is missing from the database, you will have to manually map each button in the UI, and afterwards you should contribute the layout.

Beware that even when you do use automapper instead of manual assignment, you still have to press all the buttons as instructed, to automatically set up deadzones and thresholds for inputs like triggers and joysticks.

Note that there is no automatic discovery of evdev nodes for gyroscope/touchpad, so if your controller has one of those, it currently needs SCC to implement a custom driver for it.
That does mean that devices like Nintendo controllers do not have a working gyroscope, as I do not own any.

Like what I'm doing?

You can check out the ways to donate on my website, or just go straight to my Ko-Fi.

Community

For reporting bugs or having feature suggestions, head to the Issues tab.
If you're not sure your topic belongs there, you can always head to Discussions instead.

We also have a Discord available.

Packages

Packaging status Linux:
  • Arch Linux: Found in the official extra repository and AUR/sc-controller-git. Install via pacman -Syu sc-controller.
  • Debian: Packaged, but not yet released as stable. Also packaged as an AppImage.
  • Ubuntu (24.04 Noble, 26.04 Resolute): Packaged as an AppImage, which usually runs fine on other operating systems—the Noble image is currently the most compatible one.
  • Gentoo: Packaged as games-util/sc-controller.
  • Void Linux: Packaged as sc-controller. Install via xbps-install -S sc-controller.
  • Others: You can attempt to use one of the AppImages (try all of them; AppImages built on older distributions have better compatibility), or a package intended for your parent distribution, if applicable.
  • Flatpak is planned.
Windows:
  • Not planned. The half-finished C rewrite had Windows support, but it has been abandoned. See issue #44 for more information.
macOS:
  • Not planned.

Building the package by yourself

Dependencies

Via Python into a local build directory

  • Download and extract latest release .zip releases without .git directory are currently broken - tracked in #50
  • Clone the repository git clone https://github.com/C0rn3j/sc-controller.git and navigate into it: cd sc-controller
  • python3 -m build --wheel
  • python3 -m installer --destdir="./build" dist/*.whl
  • Run the app via: SCC_SHARED="${PWD}" PYTHONPATH="./build/usr/lib/python3.14/site-packages" PATH="${PWD}/build/usr/bin:${PATH}" ./build/usr/bin/sc-controller

Via Docker

A test build with Docker can be created using the following way:

docker build -o build-output --build-arg BASE_CODENAME=noble .

Via Python venv through run.sh

  • Download and extract latest release .zip releases without .git directory are currently broken - tracked in #50
  • Clone the repository git clone https://github.com/C0rn3j/sc-controller.git and navigate into it: cd sc-controller
  • Optionally checkout a branch or a tag, like main(default) or v0.6.2
  • Execute ./run.sh, this automatically builds the project into a venv called .venv, activates it and runs sc-controller, which in turn runs scc-daemon if one does not run already
  • If you are debugging an issue, running ./run.sh daemon first will launch the daemon in debug mode, allowing you to launch sc-controller in another terminal with ./run.sh - note that sc-controller launched via run.sh always runs in debug mode too.

AI notice

If you contribute AI-assisted work, please disclose it, ensure you have tested the changes, and do not use unreviewed AI-generated text to communicate with maintainers.

Do not use AI-generated text to communicate with maintainers. You should understand and be able to explain your own work. Using AI to improve grammar or clarity is fine, but the substance of your responses must be your own.

If you wish to include context from an interaction with AI in your comments, it should be in a quote block (e.g., using >) and disclosed as such. It must be accompanied by your own commentary explaining the relevance and implications of the context.

AI disclosure

This project uses AI tools to assist with debugging and writing code. AI output is reviewed, usually edited, and tested before being committed. In short, AI is treated as a development tool.

The exception to this is the contributed Steam Controller (2026) driver, which lives in its separate file, and its associated reverse engineering documentation.


Based on Standalone Steam Controller Driver by Ynsta.

Donation links for kozec, who is the original developer, can be found on the old upstream repository.

About

User-mode driver, mapper, and GTK 4 based GUI for game controllers, including but not limited to the Steam Controller (2015 & 2026)

Resources

Stars

153 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Contributors

Languages