# MacroPad_MSFS
**MacroPad_MSFS** is a small Windows application that lets a physical macropad control Microsoft Flight Simulator using SimConnect.
I built it mainly for my own FlyByWire A32NX setup, using a cheap programmable macropad as a small cockpit control panel.
The app captures macropad key presses globally and sends the corresponding commands to Microsoft Flight Simulator.
## Features
- Global macropad key capture
- FlyByWire A32NX profile included for 12 buttons and 6 rotary knobs
- SimConnect event support
- Short press / long press actions
- Multiple events from one button
- Command/value mappings for deterministic switch states
- Editable JSON aircraft profiles
- Support for keyboard shortcut mappings
- Support for MobiFlight calculator-code mappings
## Current status
This is an early first release.
It works on my setup, but it is still a hobby project and may need adjustments for other systems, aircraft, or macropad layouts.
Feedback and suggestions are welcome.
## Requirements
- Windows 10 or Windows 11, x64
- Microsoft Flight Simulator
- SimConnect
- FlyByWire A32NX, if using the included A32NX profile
- MobiFlight WASM module, if using calculator-code mappings
## Installation
1. Go to the **Releases** page.
2. Download the latest portable ZIP file.
3. Extract the ZIP file.
4. Run MacroPad\_MSFS.exe.
Do not move the EXE out of the extracted folder. The app needs the included DLLs, Profiles folder, and Images folder.
## Basic usage
1. Start Microsoft Flight Simulator.
2. Load into a flight.
3. Run MacroPad\_MSFS.exe.
4. Connect the app to MSFS.
5. Use your macropad buttons.
The app can also open without MSFS running. In that case, it should simply remain disconnected until MSFS is available.
## Default FlyByWire A32NX macropad layout
The included profile is designed for a macropad with:
- 12 push buttons
- 6 rotary knobs
The macropad firmware sends keyboard inputs such as CTRL+F13, ALT+F13, or F13. MacroPad_MSFS listens for those inputs globally and translates them into simulator actions using keyboard shortcuts, SimConnect events, or short/long press mappings.
Cockpit camera views
| Macropad input | Action | Output |
| -------------- | ------------------- | -------------- |
| CTRL+F13 | Top Panel View | Sends CTRL+8 |
| CTRL+F14 | Pedestal / Pad View | Sends CTRL+0 |
| CTRL+F15 | Lower Panel View | Sends CTRL+5 |
| CTRL+F18 | Overhead View | Sends CTRL+6 |
Warnings, FCU, altimeter, and lights
| Macropad input | Action | Behavior |
| -------------- | --------------------------------- | ------------------------------------------------------------------------ |
| CTRL+F16 | Acknowledge Master Warning | Sends MASTER\_WARNING\_ACKNOWLEDGE |
| CTRL+F17 | Acknowledge Master Caution | Sends MASTER\_CAUTION\_ACKNOWLEDGE |
| CTRL+F19 | Approach Mode | Pushes A32NX approach mode |
| CTRL+F20 | ILS Toggle | Toggles the left EFIS LS/ILS display |
| CTRL+F21 | Expedite Descend | Pushes A32NX EXPED mode |
| CTRL+F22 | Altimeter Push/Pull Both | Short press pushes both captain and FO barometers; long press pulls both |
| CTRL+F23 | Ground / Taxi Lights | Sets beacon on, strobes off, landing lights off, taxi lights on |
| CTRL+F24 | Takeoff / Landing / Cruise Lights | Short press sets takeoff/landing lights; long press sets cruise lights |
Heading knob
| Macropad input | Action | Behavior |
| -------------- | ---------------- | ---------------------------------------------------------- |
| ALT+F13 | Heading Decrease | Decreases heading bug |
| ALT+F14 | Heading Increase | Increases heading bug |
| F13 | Heading Push | Short press: managed heading; long press: selected heading |
Altitude knob
| Macropad input | Action | Behavior |
| -------------- | ----------------- | ------------------------------------------------------------ |
| ALT+F15 | Altitude Decrease | Decreases selected altitude |
| ALT+F16 | Altitude Increase | Increases selected altitude |
| F14 | Altitude Push | Short press: managed altitude; long press: selected altitude |
Speed knob
| Macropad input | Action | Behavior |
| -------------- | -------------- | ------------------------------------------------------ |
| ALT+F17 | Speed Decrease | Decreases selected speed |
| ALT+F18 | Speed Increase | Increases selected speed |
| F15 | Speed Push | Short press: managed speed; long press: selected speed |
Vertical speed knob
| Macropad input | Action | Behavior |
| -------------- | ----------------------- | -------------------------------------------------------------------- |
| ALT+F19 | Vertical Speed Decrease | Decreases vertical speed |
| ALT+F20 | Vertical Speed Increase | Increases vertical speed |
| F16 | Vertical Speed Push | Short press: pushes vertical speed; long press: pulls vertical speed |
COM1 MHz knob
| Macropad input | Action | Behavior |
| -------------- | -------------------- | ------------------------------------------------------------- |
| ALT+F21 | COM1 MHz Decrease | Decreases the whole-number MHz part of COM1 standby frequency |
| ALT+F22 | COM1 MHz Increase | Increases the whole-number MHz part of COM1 standby frequency |
| F17 | COM1 MHz Push / Swap | Swaps COM1 standby and active frequencies |
COM1 kHz knob
| Macropad input | Action | Behavior |
| -------------- | -------------------- | ------------------------------------------------------------- |
| ALT+F21 | COM1 MHz Decrease | Decreases the whole-number MHz part of COM1 standby frequency |
| ALT+F22 | COM1 MHz Increase | Increases the whole-number MHz part of COM1 standby frequency |
| F17 | COM1 MHz Push / Swap | Swaps COM1 standby and active frequencies |
The default profile is:
Profiles\\Airbus\_A32N\_FlyByWire\_mappings.json
Mapping types
The app supports several mapping types.
Keyboard mappings
Used to send keyboard shortcuts instead of SimConnect events.
Example use: switching to custom cockpit camera views.
SimConnect event mappings
Used for normal SimConnect events.
Example use: master warning acknowledge, master caution acknowledge, heading increase, or COM frequency changes.
Press mappings
Used for controls with different short press and long press actions.
Example use: Airbus FCU push/pull behavior.
Multi-event or command mappings
Used when one macropad input should send more than one simulator command.
Example use: setting multiple aircraft lights at once, or pushing/pulling both captain and first officer barometer controls.
Calculator-code mappings
Used for commands that require calculator code through MobiFlight WASM.
This is useful for some aircraft-specific controls that are not exposed as simple SimConnect events.
Notes about FlyByWire A32NX
The included profile is focused on the FlyByWire A32NX.
Some A32NX controls use standard SimConnect events, while others require aircraft-specific events or MobiFlight calculator-code support.
Your aircraft version, MSFS version, or FlyByWire version may affect which mappings work.
Known limitations
Windows only
Tested mainly with the FlyByWire A32NX
No installer yet; portable ZIP only
Some aircraft-specific events may need adjustment
MobiFlight WASM is required for calculator-code mappings
Development
This project was built with:
C#
Windows Forms
.NET
Microsoft Flight Simulator SimConnect
Gma.System.MouseKeyHook
MobiFlight WASM, for calculator-code support
Disclaimer
This is an unofficial hobby project.
It is not affiliated with Microsoft, Asobo, FlyByWire, MobiFlight, or any macropad manufacturer.
Use at your own risk.