A modern Windows application to emulate virtual Xbox 360 controllers using Python. This tool provides a clean GUI to add, connect, and disconnect multiple virtual gamepads that are recognized by Windows as legitimate hardware.
- Modern GUI: Built with
CustomTkinterfor a sleek "Dark Mode" aesthetic. - Dynamic Management: Add or remove as many controllers as you need.
- Independent Control: Connect/Disconnect controllers individually.
- Legitimate Emulation: Uses the ViGEmBus driver to ensure controllers show up in Device Manager and work with games/apps.
Before running the application, you MUST install the following:
The application relies on the ViGEmBus driver to communicate with Windows.
- Download: ViGEmBus Latest Release
- Installation: Download the
.exeor.msiand follow the installer prompts.
Ensure you have Python installed and added to your system PATH.
- Clone or Download this project to your local machine.
- Open a terminal in the project directory.
- Install dependencies using the requirements file:
pip install -r requirements.txt
- Launch the app:
python virtual_controller.py
- Add Controllers: Click the
+ ADD NEW CONTROLLERbutton to create a new slot. - Connect: Click the blue
Connectbutton. It will turn green when active.- Check your Device Manager under "Xbox 360 Peripherals" to see it appear.
- Disconnect: Click the green
Disconnectbutton to remove the virtual device from Windows. - Remove: Once disconnected, you can use the red
Removebutton to delete the controller from the list.
If you want to package this application into a standalone Windows executable, use PyInstaller.
pip install pyinstallerUse the following command to bundle the script, GUI assets (CustomTkinter), and the gamepad drivers (vgamepad DLLs) into a single file:
pyinstaller --noconsole --onefile --collect-all customtkinter --collect-all vgamepad virtual_controller.py- Once finished, a new folder named
dist/will be created. - Your standalone
virtual_controller.exewill be inside it. - Note: The first time you launch the
.exe, it may take 5–10 seconds to open while it extracts itself to a temporary folder. Subsequent launches are much faster.
- Error: "Failed to connect controller": This usually means the ViGEmBus driver is missing or not installed correctly. Re-run the ViGEmBus installer and restart your computer.
- Controller not showing in game: Ensure the controller is "Connected" (Green button) before launching your game.
- GUI looks weird: Ensure you have installed the
customtkinterlibrary via the requirements file.
This project is provided "as-is" for simulation and development purposes. It uses the vgamepad library which is a wrapper for the ViGEm Framework.