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.3

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.3
File Size Uploaded Provenance Actions
controller_companion-0.8.3.tar.gz 476.2 kB With provenance Details for controller_companion-0.8.3.tar.gz

Built distribution (wheel)

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

Total release size: 977.7 kB

Release files / controller_companion-0.8.3.tar.gz

Download URL controller_companion-0.8.3.tar.gz
Size 476.2 kB
Tags Source
SHA-256 checksum
How to use checksums
a45c537b30cac84633b8c1f7e9f1afb35fa4226c977994e7c3ce0c99658981bd
BLAKE2b-256 checksum
How to use checksums
344ed18b71484bfd775d7d695e32b7f45120ed067be8c292755c91b2b8b1c4a5
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 18, 2026.

Transparency log

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

Download URL controller_companion-0.8.3-py3-none-any.whl
Size 501.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
50dfea84928b01208a5758fa20eefb343c441ebf0fba9f1ede933db9f9e1a7b4
BLAKE2b-256 checksum
How to use checksums
3ff778cf94f5f05f4cc9c90726d7e68d8e8097e72b1cb9a4b46f3a245a8a4984
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 18, 2026.

Transparency log

Security for controller-companion 0.8.3

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.3.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 18, 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