Skip to main content

Controller Companion icon

Controller Companion

Easily create controller shortcuts to perform actions on your computer — quit a game that has no quit option, control the volume, toggle fullscreen, and more.

PyPI version Python versions Latest release MIT License

Controller Companion listens to your connected controllers and triggers an action whenever you press a defined button combination — while gaming, streaming, or anywhere else on your system.

Supported actions:

  • Terminate a task by its name
  • Execute a keyboard shortcut
  • Execute any console command

Features

  • GUI and CLI — manage your shortcuts from a window or the terminal
  • Supports all controllers that pygame supports (Xbox, PlayStation, 8BitDo, …)
  • Runs on Windows, Linux and macOS
  • Shows connected controllers as chips that can be enabled or disabled with a click
  • Follows your system's light/dark appearance
  • Autostart on system startup (Windows only for now)
  • Can be compiled into a standalone executable (using PyInstaller)

Screenshots

Main window
Main window
Creating a new shortcut
Creating a new shortcut

Installation

Requires Python 3.10–3.13.

  • Using pip:
    pip install controller-companion
    
  • Standalone executables are also available in the releases for Windows, macOS and Linux. An installer is provided for Windows as well.

Usage

GUI

controller_companion --ui

Add --minimized to start the app minimized to the tray.

CLI

  • Multiple shortcuts can be created.

  • One or multiple input controller key combinations that trigger an action can be defined with --input. The keys of one individual input combination are separated by commas, while each distinct input combination is separated by a space.

  • One or multiple actions can be defined with either --task-kill, --console or --shortcut. These actions are mapped to the --input key combinations in the order --task-kill, --console and finally --shortcut.

  • The mappings saved by the GUI can be loaded with --config, or with --custom-config <file> using the same file format.

  • Example with 2 shortcuts:

    controller_companion --input A,B Back,Left --console explorer.exe --shortcut alt+f4
    

    will result in the following mapping:

    ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━┓
    ┃ Name                       ┃ Shortcut  ┃ Action       ┃ Type ┃
    ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━┩
    │ Run command "explorer.exe" │ A+B       │ explorer.exe │ Xbox │
    │ Shortcut "alt+f4"          │ Back+Left │ alt+f4       │ Xbox │
    └────────────────────────────┴───────────┴──────────────┴──────┘
    
  • Run controller_companion --help to see all available arguments.

Build Executable

With poetry installed, run the following command to build the executable using PyInstaller:

poetry run build_controller_companion_exe

Credits

License

This project is licensed under the MIT License — see LICENSE for details.

Metadata

Release files for controller-companion 0.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for controller-companion 0.8.0
File Size Uploaded Provenance Actions
controller_companion-0.8.0.tar.gz 376.8 kB With provenance Details for controller_companion-0.8.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for controller-companion 0.8.0
File Interpreter ABI Platform Actions
controller_companion-0.8.0-py3-none-any.whl Python 3 none any Details for controller_companion-0.8.0-py3-none-any.whl

Total release size: 767.9 kB

Release files / controller_companion-0.8.0.tar.gz

Download URL controller_companion-0.8.0.tar.gz
Size 376.8 kB
Tags Source
SHA-256 checksum
How to use checksums
ec1f147c85cbdc4d62fb5eaa1860ed76d66e4853672e121f8a5640570356678a
BLAKE2b-256 checksum
How to use checksums
d63742b6cec266864154dedbe1868859d76674da7398037f53acf7fb4afea975
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / controller_companion-0.8.0-py3-none-any.whl

Download URL controller_companion-0.8.0-py3-none-any.whl
Size 391.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e06aefabef514878dece24aecd05d61a28be9d40e50aee30faba1fb541bd15f7
BLAKE2b-256 checksum
How to use checksums
dcfaa5fccdbaae8a9266d4c6a76f649cb3e687be4333cdcd5338f81c49a83d71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Security for controller-companion 0.8.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for controller_companion-0.8.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page