This program is meant to make using custom controls easier with Run8. It accomplishes this by taking mapped inputs of your devices and sending them in a format the simulator expects.
- 📥 Download Latest Release
- Extract the zip file
- Run
Run8ControlConductor.exe
- Clone this repository
- Install Python 3.8+ and pip
- Install dependencies:
pip install -r requirements.txt - Run the application:
python main.py
Make sure that Run8 is set to use Custom USB Device and that the ports match!
The Throttle and Dynamic Brakes can operate in one of three ways, based on your preference in control type. They can be mapped to two separate axis, and will appear individually to be mapped:
They can be combined into one axis, with the upper half acting as the throttle, and the lower as the Dynamic Brake.
Lastly, They can share the same axis, with a toggle switch being used to flip between the two functions. A new field will appear to assign this toggle.
The Reverser can operate in two styles; controlled either by an axis input or controlled with buttons. When one of the button modes is selected, new fields will appear to assign either 2 or 3 inputs based off how your controls are configured in real life.
- 2 Way Switch is recommended for two position rocker switches, as well as 3 position toggles that do not have a button mapped for the middle / neutral position.
- 3 Way Switch is recommended when you are utilizing a button box
This project is licensed under the MIT License - see the LICENSE file for details.
- Run8 Train Simulator for providing the UDP interface
- pygame community for excellent input handling
- Contributors and testers
- ChatGPT 4.1, Claude Sonnet 4 and 3.7 Thinking, Gemini 2.5 Pro Preview






