A flight stick to virtual controller mapper script designed specifically for Ace Combat 7, which has notoriously poor HOTAS support. This script lets you use your flight stick (tested with Logitech Extreme 3D Pro) properly in the game. The main benefit of this script over just adjusting your input.ini file is the ability to modify deadzone and sensitivity, as well as one-button High-G turns, making PSMs possible to execute.
- Full axis, button and hat switch support
- Configurable deadzones and sensitivities
- Hat switch camera control
- Special control combos like high-g turns
- Controller calibration script and test script
- Real-time input visualization for debugging
Latest version of Python.
Libraries used:
pygame
keyboard
vgamepad
- Install requirements:
pip install -r requirements.txt - Run calibration:
python calibrate.py - Test your inputs:
python test_inputs.py - Start the controller:
python ace_combat.py
Use the kill switch key on your keyboard or stick to exit the script.
Adjust your settings as follows.
- High G Turn Settings: Type A (IMPORTANT)
- Acceleration/Yaw Controls: Type A
- Radar Map/Switch Weapons: Type A
Then reconfigure bindings via calibrate.py as necessary.
This tool has only been tested with:
- Logitech Extreme 3D Pro joystick
- Default button/axis configuration
- Python 3.13
- Windows 11
Other configurations or devices may work but are completely untested. Always test your inputs with test_inputs.py after calibration to verify everything is working correctly.
Edit config.json to customize:
- Axis deadzones and sensitivities
- Button mappings
- Control combinations
- Kill switch bindings
- Stick X: Roll
- Stick Y: Pitch
- Twist: Yaw (maps to LB/RB)
- Throttle: Throttle axis
- Hat Switch: Camera control
- Various buttons: Mapped to controller buttons
- Change view button (
RIGHT_THUMB) not working properly - Does not recognize joystick disconnection
- Having vjoy installed MAY cause problems with stick input detection
- Fix
change_viewbutton functionality - Recognize and account for joystick disconnection
- Add axis curve customization (maybe? I'm interested)
- Figure out if it's even possible and worthwhile to bother circumventing vjoy input detection
- OpenTrack support for head tracking? (very enticing but I messed around with this before and it seems unlikely. Might look into pre-existing projects for this)
- Specific support for additional HOTAS devices (Probably not happening)
- Recalibrate any time you change your setup
- Use
--debugflag for real-time input values:python ace_combat.py --debug - Alternatively just use the
test_inputs.pyscript provided
MIT