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

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.2
File Size Uploaded Provenance Actions
controller_companion-0.8.2.tar.gz 475.8 kB With provenance Details for controller_companion-0.8.2.tar.gz

Built distribution (wheel)

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

Total release size: 977.2 kB

Release files / controller_companion-0.8.2.tar.gz

Download URL controller_companion-0.8.2.tar.gz
Size 475.8 kB
Tags Source
SHA-256 checksum
How to use checksums
71d6c1ff785ae95777b3c0ff92403e46af178ef80c8fd7eb6199b8d34caa2f38
BLAKE2b-256 checksum
How to use checksums
e625b87c592e3ab5d35ad697a5ea32509e627ee59e616ff023c4924d8cf986b1
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.2-py3-none-any.whl

Download URL controller_companion-0.8.2-py3-none-any.whl
Size 501.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ebceae9b1257e8df1655c6db55edfd7ad6a5bb23c0a9ea7e3def4c7e62ff741b
BLAKE2b-256 checksum
How to use checksums
06b9c34d174c1cd901c7ef90fd459d46c74919ccf0d2728f88e69434ae40bbad
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.2

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