If your generic controller isn't working properly with games on Linux, there are simple ways to fix it. In this guide, you'll learn how to set up and map generic controllers on Linux using two apps: SC Controller and AntiMicroX.
Depending on your gamepad model, you may need to remap its buttons so that games — even those installed through Steam, Lutris, or Heroic Games Launcher — can detect it correctly. This happens because many generic USB controllers are not automatically recognized as a standard Xbox 360 or DualShock gamepad, which is what most games expect.
Below, we'll walk you through how to use each of these applications to solve the problem once and for all.
How to set up your controller using SC Controller
SC Controller is an application originally created to help users use the Steam Controller outside of the Steam client. It comes with its own driver and includes several features such as profile support, gyroscope, haptic feedback, and automatic profile switching based on the active window.
However, despite its focus on Valve's peripheral, you can use SC Controller as a gamepad mapper for Linux, remapping your generic controller's buttons so that it is properly recognized in games.
Step 1: Enable emulation
Before you begin, make sure your controller is connected to your PC. Open the application and click the button in the top-left corner of the window to access the main menu, where you should select the "Emulation Enabled" option if it isn't already active.
Step 2: Register the controller
Next, click on the main menu again and then on "Settings". In the new window, select the "Controllers" tab and click the "Register New Controller" button to begin the setup process.
Step 3: Select the device
Now, select your controller from the device list and click the "Next" button located in the top-right corner of the window.
Step 4: Choose the controller model
Under the "Sticks" option, choose a joystick model that best matches your controller. You'll find options such as PCx Controller, x360 pad, single stick, and NES/SNES controller. Under "Labels", choose the button style that matches your gamepad. To continue, click "Next" again.
Step 5: Map the buttons
Now it's time to map your controller's buttons so they are properly recognized in games. To do this, click on the buttons shown on the controller image in the window and press the corresponding button on your physical gamepad.
After mapping all buttons, click "Save" to save your changes and close the "Settings" window. The main application window should now display the controller model you selected during setup.
That's it! Now test it with your favorite games and see if SC Controller got your gamepad working. Keep in mind that after booting your PC, you may need to launch the application at least once to activate its driver — the main menu icon will turn green when it's active.
How to enable the system tray icon
A quick way to check whether SC Controller is active is by enabling the system tray icon. To do this, click the main menu icon in the top-left corner, then go to "Settings". In the new window, navigate to the "Advanced" tab and check the "Enable Status (Systray) Icon" option.
How to install SC Controller
SC Controller can be easily installed through the Regata OS app store. You can also find detailed installation instructions for other Linux distributions on the official SC Controller GitHub page.
Alternative: using AntiMicroX to map a controller on Linux
If SC Controller doesn't work with your specific gamepad, or if you need a different approach, AntiMicroX is an excellent alternative for mapping controllers on Linux. Unlike SC Controller, AntiMicroX works by mapping gamepad buttons to keyboard keys and mouse actions, making it compatible with virtually any game — even those with no native gamepad support at all.
AntiMicroX is a free, open-source application with an intuitive graphical interface and support for both X11 and Wayland. It is the actively maintained successor to the original AntiMicro project, which has been discontinued.
How to install AntiMicroX
There are several ways to install AntiMicroX on Linux:
- Flatpak (recommended): available on Flathub. To install, simply run in your terminal:
flatpak install flathub io.github.antimicrox.antimicrox - AppImage: download the
.AppImagefile directly from the GitHub releases page, make it executable, and you're good to go. - Ubuntu/Debian (.deb): on the same releases page, you'll find
.debpackages for Ubuntu 20.04, 22.04, and 24.04. - Arch Linux: available in the official repositories and also on the AUR.
How to use AntiMicroX to set up your controller
With your controller plugged in, open AntiMicroX. The application will automatically detect the gamepad and display a window showing the button layout.
To map a button, simply click on the desired button in the AntiMicroX interface, then press the keyboard key (or mouse action) you want to bind it to. Repeat this for every button, trigger, and analog stick you want to configure.
Once you've mapped all buttons:
- Click "Save" to create a profile with your mapping.
- Give the profile a descriptive name (e.g., "Generic Gamepad - Steam").
- Keep AntiMicroX running (you can minimize it) while you play.
Tip: you can create different profiles for different games. For instance, one profile for platformers and another for racing games, each with button mappings optimized for that genre. AntiMicroX also supports automatic profile switching based on the active window, so you don't have to switch manually.
For more information, visit the official AntiMicroX GitHub page.
SC Controller vs AntiMicroX: which one should you use?
The best choice depends on what you need:
- SC Controller is the better option when you want your generic controller to be recognized as an Xbox 360 gamepad by the system. This means games with native gamepad support will work out of the box — no per-game configuration needed. It's ideal if you play through Steam, Lutris, or Heroic and want a "plug and play" experience after the initial setup.
- AntiMicroX is best suited when you need to map controller buttons to specific keyboard keys and mouse movements. It works with any application, including games that have absolutely no gamepad support. It's also the better choice if SC Controller doesn't detect your particular joystick.
In both cases, the goal is the same: getting your generic controller working with games on Linux.
Frequently asked questions
What is the best gamepad mapper for Linux?
The two best gamepad mappers for Linux are SC Controller and AntiMicroX. SC Controller is ideal for emulating an Xbox 360 controller, while AntiMicroX is more versatile as it allows you to map buttons to keyboard keys and mouse actions.
How do I get a generic controller working on Steam on Linux?
You can use SC Controller to register and map your generic controller as an Xbox 360 gamepad. After setup, Steam will recognize it automatically. If that doesn't work, AntiMicroX lets you map the gamepad buttons to the keyboard keys each game uses.
Do I need to install a driver for a generic controller on Linux?
In most cases, Linux already recognizes generic USB controllers out of the box. The issue is usually incorrect button mapping rather than a missing driver. Apps like SC Controller and AntiMicroX fix this without requiring any additional driver installation.
Does AntiMicroX work on Wayland?
Yes, AntiMicroX supports Wayland, although some features like automatic profile switching based on the active window may have limitations under that protocol. Most mapping features work normally.






