HangarControl Documentation
Welcome to HangarControl
HangarControl is a comprehensive flight simulation hardware integration application that allows you to control multiple input devices from one central location. Supported devices include Stream Deck (all models), WinWing panels, Logitech Radio Panel, VirPil controllers, Knobster encoders, USB encoders, MIDI devices, and standard joysticks and throttles.
HangarControl supports multiple flight simulators including Microsoft Flight Simulator 2020, Microsoft Flight Simulator 2024, X-Plane 11, X-Plane 12, DCS World, and American Truck Simulator / Euro Truck Simulator 2.
Home View
When you launch HangarControl, the Home View is your main dashboard. It provides quick access to all features and displays the current status of your setup.
Application Header
The top bar of the main window contains essential information and quick-access controls.
Documentation Button
Located on the left side of the header, the 📚 Documentation button opens your HangarControl Documentation folder in Windows Explorer. By default, this folder is located at:
Documents\HangarControl\Documentation
This folder contains reference materials, release notes, and this guide.
Version Information
The window title bar displays the current HangarControl version in the format HangarControl vX.X.X.X (Major.Minor.Build.Revision). This is useful when reporting issues or verifying you have the latest release.
Trial Status Banner
If you are using HangarControl in trial mode, a banner appears on the right side of the header showing your remaining trial days and a Manage License button to access licensing options.
Home View Header
Below the application header, the Home View has its own header section with the HangarControl logo, title, and status controls.
Always On Top
The Always On Top checkbox keeps the HangarControl window visible above all other windows on your screen. This is useful when you want quick access while running your flight simulator. Your preference is automatically saved and restored when you relaunch the application.
Connection Status Indicator
The connection status indicator on the far right shows whether HangarControl is connected to your flight simulator. The indicator displays a colored dot and descriptive text.
| Color | Status Text | Meaning |
|---|---|---|
| 🟢 Green | "Connected to MSFS" / "Connected to X-Plane" | Successfully connected and ready to use |
| 🟢 Green | "DCS Service Active" / "ATS/ETS2 Service Active" | Keyboard emulation service is running |
| 🔴 Red | "Not Connected to [Simulator]" | No connection to the simulator |
| 🟡 Orange | "Connecting to [Simulator]..." | Connection attempt in progress |
| ⚪ Gray | "Status Unknown" | Status cannot be determined |
Navigation Sidebar
The left side of the Home View contains the main navigation menu with buttons to access different sections of HangarControl.
⚙ Control Bindings
Opens the hardware configuration area where you create hangars and profiles, choose devices, map axes and buttons, configure encoders, and set up action sequences with delays. This is where you define what each button, axis, and encoder does in your simulator.
🚀 App Hangar
Opens the application launcher where you can configure multiple applications to launch automatically with your simulator. You can set launch delays between applications, save and restore window positions, and create launch profiles for different scenarios.
📦 Mods Hangar
Opens the mod management interface for organizing simulator add-ons. Mods Hangar provides power-user features for managing mods across MSFS, DCS, X-Plane, and other simulators. You can organize mods into containers, deploy them using symbolic links or file copies, and manage conflicts between competing add-ons.
🛠️ Tools
Opens a separate Tools window containing system utilities and simulator-specific tools. Access Process Priority Manager, configuration snapshots, MSFS configuration managers, PMDG INI tools, and other specialized utilities.
Quick Tip Box
Located below the navigation buttons, the Quick Tip box displays contextual help when you hover over menu items. This provides a quick description of each feature without needing to open the full documentation.
Default text: "Hover over menu items to learn more about each feature."
Quick Launch
The Quick Launch section at the bottom of the Home View allows you to start your entire flight simulation session with a single click.
Quick Launch Components
| Element | Function |
|---|---|
| Profile Dropdown | Select from your configured Quick Launch profiles |
| ⚙ Config Button | Opens the Quick Launch configuration dialog to create, edit, or delete profiles |
| 🚀 Launch Button | Executes the selected Quick Launch profile |
| Status Text | Shows the current profile configuration (bindings name, number of apps) |
A Quick Launch profile can include:
- A Control Bindings profile to activate automatically
- A Mods Hangar profile to deploy automatically (with optional clean-slate deployment)
- Starting the HangarControl bridge/runtime service
- Multiple App Hangar profiles to launch applications in sequence
Execution Order
When you click 🚀 Launch, the Quick Launch profile executes in this order:
- Control Bindings: Activates the selected bindings profile
- Mods Hangar: Deploys the selected mod profile (disabling active mods first if configured)
- App Hangar: Launches applications in the configured order
- Controller Bridge: Starts the runtime service after a delay to ensure SimConnect is ready
Settings Button
Located at the bottom of the navigation sidebar, the ⚙️ Settings button opens the Settings view where you can:
- Register HangarControl with your license key or start a trial
- Switch between light and dark themes
- Configure system tray behavior (minimize to tray, close to tray)
- Set custom storage paths for profiles, calibration data, and logs
- Back up your whole setup to one file and restore it on this PC or a new one
- Configure logging verbosity and diagnostics
Restricted Mode
If HangarControl is not registered, the application operates in Restricted Mode. In this state:
- All navigation buttons except Settings are disabled (grayed out)
- A dialog appears prompting you to register
- You must click Settings to access the registration interface
Click the ⚙️ Settings button and complete the registration process. Enter your email address along with your license key for full activation, or enter your email address without a license key to start a 5-day free trial.
Settings
The Settings view provides access to registration, storage configuration, simulator paths, diagnostics, and application preferences. Click the ⚙️ Settings button in the Home View navigation sidebar to access this section.
Registration
The Registration section allows you to activate HangarControl with a full license or start a free trial.
Email Address
Enter the email address associated with your OverkillSimulations.com account. This email is required for both trial activation and full license activation.
License Key
If you have purchased a license, enter your license key in the format HC-XXXX-XXXX. Leave this field blank to start a 5-day free trial instead.
Enter your email address and license key, then click Register. Upon successful activation, the status will show "Licensed. Thank you for supporting HangarControl!" and all features will be unlocked permanently.
Enter your email address only (leave the license key blank), then click Register. This activates a 5-day trial with full access to all features. When active, the status displays how many trial days remain.
Trial Status
During an active trial, a banner appears in the main window header showing the remaining trial days. When your trial expires, you must activate with a license key to continue using HangarControl. Purchase licenses at overkillsimulations.com.
Storage Paths
HangarControl stores configuration data in several folders. You can customize these locations to store data on a different drive or maintain separate configurations between multiple PCs.
| Path | Purpose |
|---|---|
| Profiles | Hangars, profiles, button bindings, axis bindings, and encoder configurations |
| Calibration | Axis calibration data for your flight controllers |
| Snapshots | Configuration snapshot archives for backup and restore |
| AppHangar | Application launch profiles and window position data |
| ModsHangar | Mod container definitions and deployment configurations |
| Device Layouts | Custom device layout definitions |
| Documentation | Reference materials and guides |
| Logging | Application log files for diagnostics |
| MSFS Config Profiles | MSFS UserCfg.opt configuration profiles |
Click the Browse... button next to any path to select a custom folder location. The default location for all paths is Documents\HangarControl\[FolderName].
Backup & Restore
Save every HangarControl profile, binding, calibration and setting into a single .zip file. Keep it on an external drive, or restore it on a new PC to pick up right where you left off.
Create Backup
Click Create Backup... and choose where to save the file. The name defaults to HangarControl-Backup-YYYY-MM-DD.zip. When it finishes, HangarControl shows where the file was saved and how many files it holds, and the status line under the section title shows the time of your last backup.
The backup covers your hangars, profiles, button and axis bindings, device layers, calibration, control names, MIDI setups, custom B:Events and A:Vars, App Hangar and Mods Hangar profiles, device layouts, MSFS config profiles and your settings. Folders you moved out of Documents\HangarControl with Storage Paths are included too.
Restore Backup
Click Restore Backup... and pick a backup file. A summary shows when and on which PC it was made, the HangarControl version that made it, and how many files it holds. Confirm, and HangarControl restarts on its own to finish the restore.
Before anything is replaced, a safety copy of your current setup is saved to Documents\HangarControl\Backups as Before-Restore- followed by the date and time. The five most recent safety copies are kept.
Restoring on a new PC updates your folder locations automatically, even when the Windows user name is different.
Reconnect Devices
On a new PC, Windows gives every controller a new ID, so your saved devices show as not connected even with the same hardware plugged in. Click Reconnect Devices... to move their bindings onto the controllers that are plugged in, across every profile at once. See Reconnect Missing Devices for how the dialog works.
Microsoft Flight Simulator
Configure your MSFS Community folder locations for automatic bridge installation and mod deployment.
MSFS 2020 / MSFS 2024
Enter the path to your Community folder for each MSFS version you have installed. You can:
- Click 🔍 Auto-Detect to have HangarControl search for the Community folder automatically
- Click Browse... to manually select the folder
The HangarControl Module
HangarControl installs a small module into each Community folder you set here. MSFS 2020 and MSFS 2024 get the same feature set: L:Var reading, writing and listing, H: events, B: events, B: event listing, and RPN calculator code. The module updates automatically when HangarControl launches, with no manual steps.
MSFS only loads the module when the sim starts. If HangarControl finds the sim running an older copy, a Sim Module Out Of Date message appears and offers to reinstall it for you. Close MSFS first, since the sim holds the old module open while it runs, then click Yes and start MSFS again.
X-Plane 12
Point to your X-Plane 12 installation folder for automatic plugin deployment. The path should be the root X-Plane 12 folder (containing the Resources and Output folders), not the plugins folder itself.
Click 🔍 Auto-Detect to search for X-Plane 12, or click Browse... to select the folder manually. Verify that the detected path is correct before saving.
Override X-Plane Native Flight Control Handling
This checkbox controls whether HangarControl claims control of X-Plane's flight control inputs (yoke, rudder, throttles).
| Setting | Behavior |
|---|---|
| Disabled (default) | HangarControl does not override X-Plane's native flight control handling. X-Plane's own bindings for yoke, rudder, and throttle continue to work as normal. This is the right setting if you use HangarControl for switches, panels, or Stream Deck alongside X-Plane's native control bindings. |
| Enabled | HangarControl takes full control of all flight inputs. Turn this on when your yoke, rudder, and throttles are all bound through HangarControl. |
Your X-Plane 12 path must be set for the second part to work. If it is blank, the setting is still saved and still applies live, but the plugin will fall back to its own default on the next X-Plane launch.
PMDG SDK Broadcast
Click Configure... to open the PMDG INI Tool. This utility enables PMDG SDK broadcast functionality in your PMDG aircraft, which is required for advanced integration features.
The tool modifies the [SDK] section in each PMDG aircraft's Options.ini file, setting:
EnableDataBroadcast=1– Enables data transmission from the aircraftEnableCDUBroadcast.0=1– Enables Captain's CDU broadcastEnableCDUBroadcast.1=1– Enables First Officer's CDU broadcast
You can enable or disable CDU 0 and CDU 1 broadcast independently using the checkboxes in the PMDG INI Tool window. Click Enable Now to apply the changes to all detected PMDG aircraft. The Operation Log displays the results of each file modification.
DCS World
HangarControl talks to DCS through export scripts placed in your DCS Saved Games folder.
- Saved Games: Click 🔍 Auto-Detect to find your DCS Saved Games folder, or Browse... to pick it yourself
- Deploy Plugin: Installs the export scripts. Once the status reads ✓ Deployed, the button changes to Reinstall
- Remove: Takes the export scripts back out of DCS
You only need to deploy once. The export plugin updates automatically when HangarControl launches, and an older HangarControl never rolls back a newer plugin. If the status shows ⚠ Update Available, click Update Plugin. If it shows ⚠ Partial, the scripts are there but the Export.lua hook is missing, so click Deploy Plugin to fix it. Restart your mission after any update.
Stream Deck Plugin
Installs the HangarControl plugin into the Elgato Stream Deck software. The Stream Deck software must already be installed.
The status line shows the plugin version installed in the Stream Deck software. When HangarControl carries a newer one, the status turns orange and shows both versions, for example Update available (v3.7.1 installed, v3.7.2 ready), and the button changes to Update Plugin. Confirm the Elgato install dialog and the status turns green with the new version once the install actually finishes. Your Stream Deck layout is not touched. See the Stream Deck Plugin Guide for everything else.
USB Power Management
Windows ships with power-saving features that can put USB devices to sleep while you are using them. On flight controllers this shows up as a panel that suddenly stops responding, an axis that goes dead mid-flight, or a device that vanishes and reappears in HangarControl for no obvious reason.
HangarControl checks for this at startup. If Windows USB Selective Suspend is switched on, a warning dialog appears offering to fix it.
Optimize Now
Clicking Optimize Now makes three changes:
- Disables USB Selective Suspend across all Windows power plans
- Turns off "allow the computer to turn off this device to save power" for every USB device on the system
- Sets the Windows registry policy that keeps Selective Suspend off
These are standard Windows power settings, applied the same way you would apply them by hand through Device Manager and Power Options — HangarControl just does all of them in one pass.
HangarControl.exe and choose Run as administrator, then reopen the dialog.
On success you are told the settings were applied. Some of the changes only take full effect after a Windows restart, so if a device is still dropping out, reboot before investigating further.
Dismissing the Warning
The dialog includes a Don't show this again checkbox. Ticking it and closing the dialog stops the warning appearing on future startups, whether or not you applied the fix.
The check only runs when Selective Suspend is actually enabled, so once you have optimized your settings the warning stops appearing on its own — there is no need to dismiss it manually.
Logging & Diagnostics
The Logging & Diagnostics section provides tools for troubleshooting and support.
Quick Info Display
The settings view shows a summary of your current logging configuration:
- Log Location: The folder where log files are stored
- Active Modules: How many of the available modules have logging enabled
- Default Retention: How many days log files are kept before automatic cleanup
Open Logging Settings
Click this button to open the detailed Logging & Diagnostics Settings window where you can configure:
| Setting | Description |
|---|---|
| Default Log Level | Minimum severity to record: Verbose (all details), Warning, Error, or Critical |
| Retention Period | Number of days to keep log files (1-365) |
| Default Module Size Limit | Maximum size per module in MB before old entries are purged |
| Global Size Limit | Maximum total size for all logs in MB |
| Enable JSONL Mirror | Creates machine-readable .jsonl files alongside human-readable .log files |
| Auto-Send Crash Reports | Automatically send crash reports without prompting |
| Per-Module Settings | Override log level, retention, and size limits for individual modules |
The Logging Settings window also provides action buttons:
- Send Pending Reports: Transmit any queued error reports
- Open Outbox: View pending reports waiting to be sent
- Open Logs Folder: Open the logging directory in Windows Explorer
- Create Support Bundle: Package recent logs into a ZIP file for manual submission
Hardware Detection Debug
Click this button to open the Hardware Detection Debug window. This displays all detected game controllers with their USB Vendor ID (VID) and Product ID (PID) information. Use this to verify that your devices are being detected correctly and to identify hardware for troubleshooting purposes.
The debug view shows:
- Device Name: The name reported by the device
- VID/PID: USB hardware identifiers
- Profile Name: The matched device profile (if any)
- Has Profile: Whether a default profile exists for this device
- Instance GUID: Windows-assigned identifier for this device instance
Send Logs to Developer
Click this button to package and send the last 7 days of logs to Overkill Simulations for troubleshooting assistance. The package includes:
- Recent log files from all modules
- System information (operating system, application version)
- No personal data or simulator content
USB Device Stability
Windows may power down USB devices to save energy, which can cause flight controllers to disconnect during a flight. The USB Device Stability section helps optimize your system's USB power management.
Status Display
The status card shows whether your USB power settings are currently optimized or using default Windows settings.
Action Buttons
| Button | Function |
|---|---|
| Check Status | Refresh the current USB power management status |
| Optimize Settings | Apply optimizations to prevent USB device disconnections |
| Restore Defaults | Revert to Windows default USB power management settings |
The optimizations perform the following:
- Disables USB Selective Suspend in all power plans
- Prevents Windows from powering down USB devices
- Requires administrator privileges to modify system settings
If administrator privileges are required, a Restart as Admin button will appear.
Appearance
Choose the Light or Dark theme.
System Tray
Configure how HangarControl behaves when minimized or closed.
Minimize to System Tray
When enabled, clicking the minimize button hides HangarControl to the system tray instead of the taskbar. All hardware services continue running in the background. A single left click on the tray icon opens the window again.
Close Button Minimizes to Tray
When enabled, clicking the close (X) button minimizes to tray instead of exiting the application. To fully exit HangarControl, right click the tray icon and select Exit.
Startup
- Start HangarControl when Windows starts: Launches HangarControl when you log into Windows
- Automatically start control service on launch: Connects to your simulator with the last active profile as soon as HangarControl opens
- Start minimized: Opens minimized to the taskbar, or to the tray when Minimize to system tray is on. Pairs well with Start with Windows
Windows Defender
Windows Defender scanning HangarControl's files mid flight can cause controls to freeze for a moment. Click 🛡️ Add Exclusions to exclude HangarControl's folder from real time scanning. This needs administrator rights, so expect a UAC prompt.
Application Updates
Configure how HangarControl checks for updates.
Automatically Check for Updates on Startup
When enabled, HangarControl checks for new versions each time the application starts. You will be notified if an update is available.
Check for Updates Now
Click this button to manually check for updates. If an update is available, a dialog displays the new version information and provides download options. If you are running the latest version, a confirmation message displays your current version number.
Saving Settings
After making changes, click Save Changes at the bottom of the Settings view to apply your configuration. Click Reset to Defaults to restore all settings to their original values.
If you attempt to navigate away with unsaved changes, HangarControl will prompt you to save, discard, or cancel the navigation.
Returning to the Main Menu
Click the ◀ Back button in the top-left corner of the Settings view to return to the Home View.
Control Bindings
The Control Bindings section is where you configure your hardware devices and map their buttons, axes, and encoders to simulator actions. Click ⚙ Control Bindings in the Home View navigation sidebar to access this section.
The Control Bindings view is organized into three main columns: Hangars, Profiles, and Controls & Devices.
Hangars
A Hangar is a top-level organizational container that associates your profiles with a specific simulator or game. Each hangar is assigned to one simulator type, which determines how HangarControl communicates with that application.
Why Simulator Type Matters
When you select a simulator type, HangarControl activates only the services needed for that specific simulator:
| Simulator Type | Communication Method | Used For |
|---|---|---|
| Microsoft Flight Simulator | SimConnect | MSFS 2020, MSFS 2024 |
| X-Plane | X-Plane Plugin (UDP) | X-Plane 11, X-Plane 12 |
| DCS World | TCP Bridge (Lua Export) | Digital Combat Simulator — requires Lua export script and aircraft libraries |
| American/Euro Truck Simulator | Telemetry SDK | ATS, ETS2 |
| Custom | All Services | Multiple simulators or custom applications |
Hangar Management Buttons
| Button | Function |
|---|---|
| Add | Create a new hangar with a name and simulator type |
| Edit | Modify the selected hangar's name and simulator type |
| Rename | Change only the hangar's display name |
| Delete | Remove the hangar and all its profiles |
Adding a Hangar
Click the Add button to open the Hangar Editor dialog:
Give your hangar a descriptive name that identifies the simulator or use case, such as "MSFS 2024", "X-Plane 12", or "DCS Warbirds".
Choose the appropriate simulator from the dropdown. This selection is critical—it determines which communication protocol HangarControl uses to send commands and receive data from your simulator.
Click Save to create the hangar. It will appear in the Hangars list and be ready for profiles.
Editing a Hangar
Select a hangar from the list and click Edit to open the Hangar Editor with the current settings. You can change both the name and simulator type. Changing the simulator type affects all profiles within that hangar—they will use the new communication service when activated.
Renaming a Hangar
The Rename button provides a quick way to change just the hangar's display name without opening the full editor. Enter the new name in the prompt dialog and click OK.
Deleting a Hangar
Select a hangar and click Delete to remove it. A confirmation dialog shows how many profiles will be deleted along with the hangar. This action cannot be undone—all profiles and their device configurations within the hangar will be permanently removed.
Active Hangar Indicator
The currently active hangar displays a small orange dot (●) next to its name. When you start the service, HangarControl uses the simulator type from the active hangar to determine which communication services to initialize.
Profiles
A Profile is a collection of device configurations, button mappings, axis bindings, and encoder settings within a hangar. Profiles allow you to create different configurations for different aircraft, aircraft categories, or use cases.
Organizing Your Profiles
Consider creating profiles based on how you fly:
- Aircraft-Specific: "PMDG 737-800", "Fenix A320", "FlyByWire A32NX"
- Category-Based: "General Aviation", "Airliners", "Helicopters", "Warbirds"
- Purpose-Based: "VFR Flying", "IFR Training", "Bush Flying"
Profile Management Buttons
| Button | Function |
|---|---|
| Add | Create a new empty profile in the selected hangar |
| Rename | Change the profile's display name |
| Duplicate | Create a copy of the selected profile with all its device configurations and bindings |
| Copy to Hangar | Copy the profile to a different hangar (useful for sharing configurations across simulators) |
| Delete | Remove the profile and all its saved bindings, calibrations, and device configurations |
| Bind Aircraft | Associate the currently loaded simulator aircraft with this profile for automatic switching |
Adding a Profile
Select a hangar from the Hangars list, then click the Add button. Enter a name for your new profile in the prompt dialog and click OK. The new profile will be created and selected, ready for device configuration.
Renaming a Profile
Select the profile you want to rename, click Rename, enter the new name in the prompt dialog, and click OK. All device configurations and bindings are preserved when renaming.
Duplicating a Profile
The Duplicate function creates a complete copy of the selected profile, including all device assignments, button bindings, axis bindings, and MIDI configurations. This is useful when you want to create a variation of an existing profile without starting from scratch.
Select the profile to copy, click Duplicate, enter a name for the new profile (the default suggestion is the original name with "Copy" appended), and click OK.
Copy to Hangar
The Copy to Hangar function copies a profile to a different hangar. This is useful when you want to use similar configurations across different simulators.
Select the profile you want to copy in the Profiles list.
The Hangar Selector dialog opens, showing all available hangars except the current one.
Choose the destination hangar and click Copy.
Enter a name for the profile in the target hangar. If a profile with the same name already exists, a variation is suggested.
All device configurations, button bindings, axis bindings, and MIDI settings are copied to the new profile.
Profile Inheritance
Profiles can inherit their bindings from a parent profile. Build a base profile containing everything common to your setup — yoke, rudder pedals, shared panel switches — then create child profiles that automatically pick all of it up. Any binding you set directly on a child overrides the parent for that one button or axis, and everything you have not overridden continues to follow the parent. Change something on the parent and it flows down to every child immediately.
This means you no longer have to duplicate a profile and maintain the copies separately. A fix to a shared binding is made once, on the parent.
Setting Up Inheritance
Right-click any profile in the Profiles list. The bottom of the context menu carries the inheritance options:
| Menu Item | Function |
|---|---|
| Set Parent Profile… | Make this profile a child of an existing profile. A picker lists the eligible profiles. Shown only when the profile does not already have a parent. |
| Remove Parent (name) | Detach this profile from its parent and make it standalone again. The parent's name is shown in the menu item itself. Replaces the Set Parent item once a parent is assigned. |
| Create Child Profile… | Create a brand new profile that inherits from the profile you right-clicked. You are prompted for a name. |
| Children: … | A greyed-out entry listing the names of this profile's direct children. Informational only, and shown only when the profile has children. |
Both Set Parent Profile and Create Child Profile copy the parent's device list across to the child, so the child starts out showing the same attached devices. Setting a parent on an existing profile adds any devices it was missing without removing devices it already had.
Reading the Profiles List
The list shows the relationship at a glance:
- A profile that has children is prefixed with ▼
- A child profile is prefixed with └, indented beneath its parent, with the parent's name shown in grey alongside it
- A standalone profile has no prefix and no indent
Identifying Inherited Bindings
In the Device Configuration view, a button whose binding comes from the parent rather than from the profile you are editing is drawn with a blue border, and its tooltip is prefixed with [Inherited] ahead of the usual binding summary. A binding set directly on the current profile keeps the standard orange border.
Clicking an inherited button opens the binding window preloaded with the inherited configuration, so creating an override starts from what the parent already does instead of from a blank slate. Saving writes the result to the child and the button turns orange. Axis bindings follow the inheritance chain in the same way and show the inherited binding in their hover details.
Chains and Limits
Inheritance can be nested — a child can itself be a parent to further profiles, and lookups walk the whole chain until a binding is found. The chain is capped at ten levels deep, and HangarControl refuses any assignment that would create a loop, so a profile can never end up as its own ancestor.
Aircraft bindings stay specific to the individual profile they were created on. A child profile does not pick up the aircraft its parent is bound to. This is deliberate — automatic profile switching would be ambiguous if a parent and all of its children claimed the same aircraft. Bind each profile to its own aircraft.
Deleting a Profile
Select the profile and click Delete. A confirmation dialog appears showing what will be removed. Deleting a profile permanently removes all saved bindings, calibrations, and device configurations associated with that profile. This action cannot be undone.
If the profile you are deleting is a parent, the confirmation dialog additionally lists its children by name and warns that they will become standalone. Those child profiles are not deleted — they keep every binding they had set directly on themselves, but they stop inheriting and any binding that was only coming from the parent is gone.
Profile Status Indicators
Profiles display colored dot indicators next to their names to show their current status:
| Indicator | Color | Meaning |
|---|---|---|
| ● | Orange | This is the active profile |
| ● | Green | This is the active profile AND its bound aircraft is currently loaded in the simulator |
| (no dot) | — | Profile is not active |
The green dot provides immediate visual confirmation that HangarControl has detected the aircraft you bound to this profile and is using the correct configuration.
Bind Aircraft
The Bind Aircraft feature associates a specific aircraft with a profile. When HangarControl detects that a bound aircraft is loaded in the simulator, it automatically switches to the associated profile.
Before using Bind Aircraft, you must:
- Start the HangarControl service click ▶ START SERVICE
- Have your simulator running with an aircraft loaded
- Wait for the simulator connection to establish (check the connection status indicator)
If these conditions are not met, HangarControl will display an error message explaining what is needed.
Click ▶ START SERVICE to initialize HangarControl and connect to your simulator.
In your simulator, load the aircraft you want to bind to this profile. Wait for the aircraft to fully load.
In HangarControl, select the profile you want to associate with this aircraft.
Click the Bind Aircraft button. HangarControl queries the simulator for the current aircraft identity and saves the association. A confirmation message appears when successful.
Automatic Profile Switching
Once an aircraft is bound to a profile, HangarControl monitors the simulator for aircraft changes. When you load a bound aircraft:
- HangarControl detects the aircraft identity from the simulator
- It matches the aircraft against your saved bindings
- If a match is found, HangarControl automatically switches to the associated profile
- The profile's indicator changes from orange to green, confirming the bound aircraft is detected
- All device configurations for that profile become active
Automatic switching works across hangars—if you have profiles bound to the same aircraft in different hangars, the binding in the currently active hangar takes precedence.
Managing Aircraft Bindings
Right-click on a profile to access the context menu, which includes options to view and clear aircraft bindings associated with that profile. You can clear individual bindings or remove all aircraft associations from a profile.
Other Profile Context Menu Options
The same right-click menu carries several tools that operate on the selected profile:
- MIDI Learn / Bindings…: Opens the MIDI Learn window for this profile, for capturing and reviewing MIDI control assignments
- TouchPanel Designer…: Opens the Touch Panel designer for this profile. It opens alongside the main window rather than blocking it, so you can keep other configuration screens open while you work
- List Bindings…: Opens a window listing every binding configured in this profile across all devices, useful for reviewing a setup or hunting down a duplicate assignment
Importing and Exporting Profiles and Hangars
The right-click context menu also lets you move configurations between machines or back them up to a file:
- Export Profile: Right-click a profile and choose Export Profile… to save it as a portable
.hcprofilefile. The export bundles the profile's device assignments, button and axis bindings, device configurations, panels, aircraft bindings, and the button and axis names on its devices into a single archive. - Import Profile: Choose Import Profile… from the context menu to load a
.hcprofilefile into the selected hangar. - Export Hangar: Right-click a hangar and choose Export Hangar… to save the entire hangar, including every profile inside it, as a single
.hchangarfile. - Import Hangar: Choose Import Hangar… to recreate a hangar and all of its profiles from a
.hchangarfile.
Controls & Devices
The right column of the Control Bindings view contains service controls and a list of devices attached to the currently selected profile.
Aircraft Marquee
At the top of the Controls & Devices column, a scrolling marquee displays the currently detected aircraft name. This orange-bordered ticker continuously scrolls from right to left, showing the aircraft title reported by your simulator.
The marquee displays:
- Aircraft Title: The primary aircraft name from SimConnect (MSFS) or the X-Plane plugin
- Type + Model fallback: If no title is available, displays the ATC Type and Model combination
- "Waiting for aircraft...": Shown when no aircraft data has been received yet
The marquee updates automatically when:
- You load a new aircraft in the simulator
- You switch aircraft or liveries
- The simulator connection is established
Sim Monitor Button
In the Control Bindings header area, the 🔍 Sim Monitor button opens the Sim Monitor window. This powerful diagnostic tool allows you to browse, search, and monitor simulator variables in real-time. See the Sim Monitor section below for complete details.
Service Control Buttons
Four buttons control HangarControl's runtime services and navigation to device management:
| Button | Function |
|---|---|
| ▶ START SERVICE | Initializes the runtime and begins processing input from all configured devices |
| ⏹ STOP SERVICE | Stops all device processing and disconnects from the simulator |
| 🎮 Choose Devices | Opens the device selection view to add or remove devices from the profile |
| ⚙ Calibrate Axis | Opens the axis calibration view to calibrate joystick and throttle axes |
Start Service
Click ▶ START SERVICE to activate HangarControl. This:
- Initializes all device runtimes (DirectInput, MIDI, Knobster, Logitech Radio Panel, Keyboard, Dedicated Encoders, WinWing)
- Connects to the simulator based on the hangar's simulator type setting
- Begins processing button presses, axis movements, and encoder rotations
- Enables aircraft detection for automatic profile switching
Once started, the ▶ START SERVICE button becomes disabled and the ⏹ STOP SERVICE button becomes enabled.
Stop Service
Click ⏹ STOP SERVICE to deactivate HangarControl. This stops all device processing and releases hardware resources. Use this when you need to reconfigure devices, switch simulators, or before closing the application.
Sim Monitor
The Sim Monitor is a powerful real-time variable browser and diagnostic tool for exploring simulator events and variables. Access it by clicking 🔍 Sim Monitor in the Control Bindings header.
%LocalAppData%\HangarControl\Tools\SimMonitor\. It runs independently, so you can keep it open while configuring bindings, and it stays open even if you close HangarControl. It appears separately in the taskbar and in Alt-Tab.
It updates itself whenever a HangarControl update ships a newer version, so there is nothing to install or maintain.
Header Controls
The header area contains:
- Update Rate: Controls how often values are polled from the simulator
- 100ms (Fast) — Most responsive, higher CPU usage
- 250ms (Normal) — Default balanced setting
- 500ms (Slow) — Lower CPU usage
- 1000ms (Very Slow) — Minimal CPU impact
- Connection Status: Shows current simulator connection state
Event Type Filter
Filter the displayed variables by type using the dropdown:
| Filter | Description |
|---|---|
| All Events | Show all variable types |
| L:Vars | Local variables (aircraft-specific custom variables) |
| SimVars (A:) | Aircraft simulation variables (standard MSFS variables) |
| K: Events | Key events (simulator commands) |
| B: Variables | B variables (input events). Click Load B:Vars to pull the full list of B:Vars from the aircraft that is loaded, so you can find the one you need without guessing names. Values update live as you flip switches in the cockpit |
| H: Events | HTML events (gauge interactions) |
| Input Events | Input event variables |
| PMDG | PMDG SDK-specific variables |
Source Filter
When viewing L:Vars, the Source filter allows you to narrow results by aircraft vendor prefix. Common vendors include:
- FBW — FlyByWire aircraft (A32NX, A380X)
- PMDG — PMDG aircraft (737, 777)
- WT — Working Title (G3000, G5000)
- BKSQ — Blacksquare aircraft
Search Box
Type in the search box to filter events by name. The search supports partial matching and wildcards:
- Type
GEARto find all variables containing "GEAR" - Use
*as wildcard:*LIGHT*matches any variable with "LIGHT" in the name - Press Ctrl+F to focus the search box
- Press Esc to close the window
Filter Checkboxes
- Show only changed: Display only variables whose values have changed since monitoring began
- Show only watched: Display only variables you have marked with the Watch checkbox
Event Grid
The main grid displays all matching variables with the following columns:
| Column | Description |
|---|---|
| Watch | Checkbox to mark important variables for tracking |
| Type | Variable type badge (L:, A:, B:, H:) |
| Event Name | Full variable name (with vendor prefix for L:Vars) |
| Current Value | Live value from the simulator |
| Previous | Last recorded value before the current one |
| Δ (Delta) | Change indicator — shows ● when value has changed |
| Changes | Count of how many times the value has changed |
| Actions | Copy and Use buttons |
Action Buttons
Each row has two action buttons:
- Copy: Copy the variable name to the clipboard
- Use: Select this variable for use in a binding dialog (when Sim Monitor is opened from a binding context)
Bottom Control Bar
The bottom of the window contains additional controls:
| Button | Function |
|---|---|
| Watch Selected | Mark all currently selected rows as watched |
| Unwatch All | Clear the Watch flag from all variables |
| Vendor Filters | Open the vendor filter dialog to exclude unwanted vendors from the display |
| Reset Changes | Clear all change counts and delta indicators |
| 📊 Export CSV | Export the current event list with values to a CSV file |
| Close | Close the Sim Monitor window |
Vendor Filters Dialog
Click Vendor Filters to open the vendor filter dialog. This allows you to exclude specific vendor prefixes from the display to reduce clutter and improve performance when working with aircraft that have thousands of L:Vars.
The dialog shows all detected vendors with checkboxes:
- Checked: Vendor's variables are shown in the monitor
- Unchecked: Vendor's variables are hidden
Use Select All or Select None for quick bulk operations, then click OK to apply.
Using Sim Monitor for Binding Discovery
The Sim Monitor is invaluable for discovering which variables control specific aircraft functions:
- Open Sim Monitor while your aircraft is loaded
- Check Show only changed to filter to active variables
- Interact with a control in the cockpit (click a switch, move a lever)
- Watch for variables that change — these are candidates for your binding
- Click Copy to copy the variable name for use in your action configuration
Choose Devices
Click 🎮 Choose Devices to open the device selection view. This view allows you to manage which hardware devices are active for the selected profile.
The Choose Devices view is divided into three areas:
- Left panel: Contains the toolbar buttons and two device lists (Active Devices and Available Devices)
- Right panel: Details section showing selection summary and tips
- Footer: Save Changes button
Active Devices vs Available Devices
The main panel contains two side-by-side lists:
| List | Description |
|---|---|
| Active Devices | Devices enabled for this profile. These appear in the Attached Devices list on the Control Bindings view and can be configured with button/axis bindings. |
| Available Devices | Detected devices not currently added to the profile. These are available hardware devices that HangarControl has found but are not yet enabled for this profile. |
Double-click a device to move it between lists:
- Double-click in Active Devices → moves device to Available Devices (removes from profile)
- Double-click in Available Devices → moves device to Active Devices (adds to profile)
Toolbar Buttons
The toolbar above the device lists provides quick actions:
| Button | Function |
|---|---|
| ⚡ Configure MIDI… | Opens the MIDI Learn window for configuring MIDI device bindings |
| Select All | Move all devices from Available Devices to Active Devices |
| Remove All | Move all devices from Active Devices to Available Devices |
| Rename Selected… | Assign a custom friendly name to the currently selected device |
| Reset Name | Restore the selected device's original hardware name |
Configure MIDI
Click ⚡ Configure MIDI… to open the MIDI Learn window. This allows you to configure MIDI controllers such as DJ controllers, MIDI keyboards, and other MIDI-compatible devices.
MIDI device support is currently untested and unverified. While the functionality exists, it has not been extensively tested across different MIDI hardware. Use at your own discretion and report any issues encountered.
Renaming Devices
To rename a device:
- Select a device in either the Active Devices or Available Devices list
- Click Rename Selected…
- Enter a friendly name in the dialog
- Click OK to apply
To reset a device's name back to its original hardware name:
- Select the renamed device
- Click Reset Name
Details Panel
The Details panel on the right side of the view displays:
- Selection Summary: Shows the count of currently active devices (e.g., "3 device(s) selected." or "No devices selected.")
- Tip: A reminder that you can double-click devices to move them between lists
Saving Changes
Changes made in the Choose Devices view are not automatically saved. You must click 💾 Save Changes to apply your device selections to the profile.
If you click ◀ Back without saving, all changes will be lost and the profile will retain its previous device configuration.
Click 💾 Save Changes to:
- Save the current Active Devices list to the profile
- Preserve any custom device names you have assigned
- Update the Attached Devices list in Control Bindings
Click ◀ Back to return to Control Bindings without saving changes.
Calibrate Axis
Click ⚙ Calibrate Axis to open the axis calibration view. This view shows all analog axes detected on your devices and allows you to calibrate their ranges for precise control in your simulator.
Header Controls
The header area contains navigation and device selection:
- ◀ Back: Return to Control Bindings (unsaved changes will be lost)
- Show hidden devices: Checkbox to include hidden devices in the device dropdown
- Device: Dropdown to select which device's axes to calibrate
Show Hidden Devices
The Show hidden devices checkbox controls whether hidden devices appear in the device dropdown. When unchecked, only visible devices are shown. When checked, hidden devices appear with "(hidden)" appended to their names.
This is useful for decluttering the device list when you have many devices but only need to calibrate a few regularly.
Hiding Devices from the Menu
To hide a device from the calibration menu:
- Right-click on a device in the device dropdown
- Select Hide in calibration menu from the context menu
To show a hidden device again:
- Check Show hidden devices to reveal hidden devices
- Right-click on the hidden device (marked with "(hidden)")
- Select Show in calibration menu from the context menu
Hidden device preferences are saved and persist between sessions.
Axes List
When you select a device, the AXES section displays all detected analog axes. Each axis row shows:
- Axis Label: The axis name (X, Y, Z, Rx, Ry, Rz, Slider, etc.)
- Progress Bar: Live visualization of the current axis position as a percentage (0-100%)
- Debug Info: Raw input value displayed below the progress bar
- Control Buttons: Calibrate, Invert, Reset, and reorder arrows
Calibrating an Axis
To calibrate an axis:
Click the Calibrate button next to the axis you want to calibrate. A 5-second countdown timer begins.
During the countdown, take the axis to both ends of its physical travel, holding for roughly a second at each stop. The status bar shows the countdown: "Calibrating [Axis]… move through full range (5s)"
When the timer expires, calibration is complete. The status bar shows "Calibration complete." The progress bar now reflects the calibrated range.
That is no longer necessary. Calibration now collects every sample taken during the countdown and discards a small fraction at each extreme, so a transient spike cannot set your range. A real endpoint you have held is represented by many samples and comes through intact, which is exactly why holding at the stops works better than sweeping past them.
Axis Control Buttons
| Control | Function |
|---|---|
| Calibrate | Start a 5-second calibration countdown—move the axis to each end of its travel and hold briefly during this time |
| Invert | Toggle button to reverse the axis direction (useful when an axis operates backwards from expected) |
| Reset | Clear all calibration data and invert settings for this axis, returning to default values |
| ▲ | Move this axis up in the list order |
| ▼ | Move this axis down in the list order |
Reordering Axes
Use the ▲ and ▼ arrow buttons to change the order of axes in the list. This order is saved per device and is shared with the Device Configuration view, so your preferred axis arrangement is consistent throughout HangarControl.
Axis order is saved automatically when you click the arrow buttons and is also saved when you click 💾 Save.
Saving Calibration
Calibration settings are not automatically saved. You must click 💾 Save to store your calibration data.
If you click ◀ Back without saving, all calibration changes will be lost.
Click 💾 Save to:
- Store calibration min/max values for each calibrated axis
- Save invert settings (even for axes without calibration data)
- Persist the current axis order for this device
The status bar confirms: "Calibration saved."
Attached Devices List
The Attached Devices list shows all devices enabled for the currently selected profile. This list updates when you select different profiles and reflects the devices configured in Choose Devices.
Device Presence Indicator
Each device displays a status indicator:
- No indicator: Device is connected and detected
- ● Red dot: Device is configured but not currently connected (unplugged or not detected)
If a device shows a red dot, check that it is plugged in and recognized by Windows. Some devices may require drivers or may have been assigned to a different USB port.
Configuring Devices
To configure a device's button and axis bindings:
- Double-click the device to open its configuration view
- Right-click the device to access the context menu with options to configure or remove it
The configuration view that opens depends on the device type:
- Standard joysticks/controllers: Opens the Device Configuration view for button and axis binding
- Keyboards: Opens the Keyboard Configuration view. A key bound here is fully remapped: while the control service is running, HangarControl blocks the original keystroke so only the bound action is sent. Keys with nothing bound pass through normally
- MIDI devices: Opens the MIDI Device Configuration view, with layer tabs, encoder bindings, the button grid, and fader assignment. If the device has more than one hardware mode defined (the X-Touch Mini has Standard and Mackie Control), you are prompted to pick one the first time, and the choice is remembered per profile. Standard matches the X-Touch Mini out of the box. To switch later, right click the device and choose Change MIDI Mode…
- Logitech Radio Panel: Opens the Radio Panel configuration dialog
- WinWing FCU/EFIS: Opens the WinWing configuration dialog
- Knobster encoders: Opens the Knobster configuration dialog
- Dedicated USB encoders: Opens the Dedicated Encoder configuration dialog
Context Menu Options
Right-click on a device in the Attached Devices list to access:
- Configure Device: Open the device's configuration view (same as double-click)
- Replace Device…: Move every setting from this device onto a different connected controller. See Replace Device below
- Reconnect Missing Devices…: Handle every disconnected controller across every profile in one pass. See Reconnect Missing Devices below
- Remove from Profile: Remove the device from this profile's active device list
TouchPanel entries in the list carry their own set of options instead, covering group detachment and the auto-open toggles. Replace Device is not offered for them, as a panel is virtual and has no hardware identity to move.
Replace Device
Windows identifies a controller by an instance ID, and that ID can change out from under you — most commonly after a firmware update, but also after some driver updates or a reseat into a different port. When it does, HangarControl no longer recognizes the hardware as the device you configured. The old entry stays in the list showing a red dot, and the same physical controller reappears as a brand new, completely unbound device.
Replace Device is the fix. It moves everything from the old entry onto the device HangarControl is now seeing, so you do not have to rebuild the configuration by hand.
Make sure the controller you want the settings moved onto is plugged in and detected. Only currently connected controllers are offered as targets.
Right-click the device whose settings you want to move — the stale entry, typically the one showing the red dot — and choose Replace Device….
The dialog lists every other connected controller with its VID and PID. Anything that shares the old entry's hardware ID or name is sorted to the top and marked same hardware as the old entry — that is almost always the one you want.
The Apply to all profiles using this device checkbox is available when more than one profile references the device, and is ticked by default in that case. Leave it on to fix every profile in one pass, or clear it to change only the profile you are currently in.
A summary appears showing what is moving where and how many profiles are affected. On completion HangarControl reports the number of profiles updated along with the count of buttons, axes, and layers moved. If the service was running it is restarted automatically, so the change takes effect without stopping and starting by hand.
The move covers button bindings, axis bindings, device layers and their contents, Honeycomb Bravo LED bindings, encoder designations, button and axis names, ignored buttons, and axis calibration.
If the target device already has bindings on the same buttons or axes, they are overwritten. Consider exporting the target device's configuration first if it has anything on it worth keeping.
Reconnect Missing Devices
Replace Device fixes one controller in one go. Reconnect Missing Devices… fixes all of them at once, which is what you want after moving HangarControl to a new PC. Open it from the right click menu here, or from Reconnect Devices... in Settings under Backup & Restore.
The dialog lists every saved controller that isn't connected, across every profile, with its VID and PID and how many profiles use it. For each one, pick the connected controller it should become, or leave it on Leave as is. Suggestions are only filled in when the match is certain. Two identical devices are never paired for you, so pick those yourself.
Click Reconnect and confirm the summary. Bindings, layers, calibration and encoders move across in every profile that uses each device, and HangarControl reports how many devices, profiles, buttons, axes and layers were moved. If the service was running it restarts on its own.
Device Configuration
The Device Configuration view is where you create button and axis bindings for standard DirectInput devices such as joysticks, throttle quadrants, and gamepads. Access this view by double-clicking a device in the Attached Devices list.
- Keyboards
- MIDI devices
- Logitech Radio Panel
- WinWing FCU/EFIS panels
- Knobster encoders
- Dedicated USB encoders
- Stream Deck
Device Configuration Layout
The Device Configuration view displays:
- Header: Device name, subtitle, and action buttons
- AXES panel (left): Lists all analog axes with live position bars and binding controls
- BUTTONS panel (right): Grid of all device buttons with live press detection
- Panel divider: Drag the gap between the AXES and BUTTONS panels left or right to give either side more room. The split is remembered, and double clicking the divider resets it
- Status bar (bottom): Shows current device status and binding information
Header Action Buttons
The header contains several action buttons for managing device configuration:
| Button | Function |
|---|---|
| 📋 Copy from Profile | Copy this device's entire configuration (all button and axis bindings) from another profile |
| 📤 Export | Export the device configuration to a .hcdevice file for sharing or backup |
| 📥 Import | Import a device configuration from a .hcdevice file |
| 🗑 Clear All Bindings | Remove all button and axis bindings for this device |
| + Manage Device Layers | Open the Layer Manager. Shown when the device has no layers configured yet. Once layers exist it is replaced by the layer selector described below. See Device Layers |
| EDITING LAYER: selector | Appears once layers are configured. The dropdown chooses which layer's bindings you are editing, and the Manage Layers button next to it opens the Layer Manager |
| ◀ Back | Return to the Control Bindings view. Navigates back only — it does not discard changes you have already saved |
Copy from Profile
Click 📋 Copy from Profile to copy this device's configuration from another profile. This opens the Profile Copy dialog where you can select a source profile that has this device configured.
This is useful when:
- You want to use the same bindings across multiple profiles
- You're creating a new profile based on an existing configuration
- You want to restore a configuration you set up in another profile
The copy operation replaces all existing bindings on this device with the bindings from the selected source profile.
Export
Click 📤 Export to save the device configuration to a file. This opens the Export dialog where you can add an optional description, then saves to a .hcdevice file.
Export is useful for:
- Sharing your configuration with other HangarControl users
- Creating backups before making changes
- Moving configurations between computers
The exported file contains all button bindings, axis bindings, and device metadata.
Import
Click 📥 Import to load a device configuration from a .hcdevice file. This opens a file browser to select the file, then shows the Import dialog with details about the configuration being imported.
The import operation replaces all existing bindings with the imported configuration.
Clear All Bindings
Click 🗑 Clear All Bindings to remove all button and axis bindings for this device. A confirmation dialog appears before clearing.
Clearing all bindings permanently removes all button and axis configurations for this device. This action cannot be undone. Consider using Export to create a backup before clearing.
AXES Panel
The left side of the Device Configuration view displays the AXES panel. Each axis shows:
- Axis name: The axis label (X, Y, Z, Rx, Ry, Rz, Slider, etc.), or the name you gave it with the original label shown underneath. See Naming Buttons and Axes
- Progress bar: Live visualization of the current axis position
- Binding summary: The assigned command is shown beneath the axis label
- ▲ ▼ buttons: Move the axis up or down the list. This is display order only and has no effect on bindings — use it to put the axes you actually care about at the top
- Bind… button: Opens the Axis Binding dialog to configure what this axis controls
- Binding tooltip: Hover over the axis row to see current binding details
The Show Hidden checkbox in the AXES header reveals axes you have previously hidden. Devices frequently report more axes than they physically have, and hiding the unused ones keeps the list manageable without affecting anything else.
Click the Bind… button next to an axis to open the Axis Binding dialog. Right click an axis row for a context menu:
- Clear axis binding: Remove this axis's binding. On a profile that inherits from a parent, the wording changes to show whether clearing restores, blocks, or falls back to the inherited binding
- Rename axis… / Clear axis name: Give the axis a name of your own, or remove it
- Hide axis / Unhide axis: Hide an unused axis from the list, or bring a hidden one back
- Copy axis binding / Paste axis binding: Copy this axis's binding and apply it to another axis, on this device or another one, in any profile
Encoders
Many controllers report their rotary encoders as ordinary button presses — one button fires on each clockwise click and a second on each counter-clockwise click. The ENCODERS section lets you tell HangarControl that a pair of buttons is really one knob, so you get proper rotary behavior including speed tuning and acceleration.
The section sits above the AXES and BUTTONS panels and collapses with the ▼ arrow beside its header. The header shows the current encoder count.
Creating an Encoder
There are two ways:
- Click + Add Encoder in the ENCODERS header and fill in the button numbers by hand
- Right-click the button that turns the knob clockwise and choose Set as Encoder (CW = Bn)…. The dialog opens with that button already filled in as the clockwise direction
Encoder Configuration Dialog
| Setting | Description |
|---|---|
| Label | A name for the encoder, used in the list and in button tooltips |
| CW Button | The button number that fires on a clockwise click (1-indexed, matching the numbers on the button grid) |
| CCW Button | The button number that fires on a counter-clockwise click. It must be different from the CW button |
| Push Button | Optional. The button number for pressing the knob in. Leave blank if the knob does not push |
| Speed | Very Slow, Slow, Normal, Fast, or Very Fast. This adjusts how aggressively HangarControl debounces the incoming clicks. Normal is the default. Move toward Fast if quick spins are dropping clicks, toward Slow if a single detent registers more than once |
| Acceleration | When enabled, spinning the knob faster moves the bound value in larger steps. The multiplier dropdown sets how much, from 2x to 10x, defaulting to 3x |
| Pulses Per Detent | How many button pulses the hardware sends for one physical click of the knob. Default is 1. If one detent moves your bound value two or four steps, set this to match |
| Min Pulse (ms) | Advanced. The debounce floor in milliseconds, default 4. The Speed preset scales this, so leave it alone unless you are chasing a specific hardware quirk |
| Accel Window (ms) | Advanced. How close together clicks must arrive to count as a fast spin, default 120. Also scaled by the Speed preset |
Encoder List
Each configured encoder appears as a row marked with a ⟳ icon, showing its label, its CW, CCW and Push button assignments, and its current speed and acceleration settings. Encoders that came from HangarControl's built-in device library are labelled (device library).
- Configure: Reopen the dialog to edit the encoder
- ✕: Remove the encoder designation. This only undoes the pairing — the button bindings themselves are preserved
Buttons that belong to an encoder are marked in the BUTTONS grid and their tooltips identify the role, showing the encoder name followed by CW, CCW, or Push. Right-clicking one of those buttons offers Configure Encoder and Remove from Encoder in place of the Set as Encoder option.
Binding an Encoder
You bind the CW, CCW, and Push buttons individually, exactly like any other button — click them in the BUTTONS grid and configure them in the Button Configuration window. The encoder designation changes how the input is read, giving you clean per-detent firing and acceleration, rather than changing how it is bound.
BUTTONS Panel
The right side of the Device Configuration view displays the BUTTONS panel. Buttons are shown in a grid layout with:
- Button labels: Each button is labeled with its number (B1, B2, B3, etc.), or with the name you gave it and the number shown underneath. POV hat directions appear after the numbered buttons
- Tile size: The − and + buttons in the BUTTONS header switch the tiles between Compact, Medium, Large, and Extra Large. Holding Ctrl while turning the mouse wheel over the grid does the same. Larger tiles leave room for longer button names, and the size you pick is remembered
- Live detection: Buttons light up orange when physically pressed
- Binding indicator: The button's border shows its binding state — an orange border for a binding set on this profile, a blue border for a binding inherited from a parent profile, and a gold border for a button that carries only a description and no HangarControl action
- Binding tooltip: Hover any button to see a full summary of every configured press type and its action. Inherited bindings are prefixed with [Inherited], and description-only buttons show "Sim-bound:" followed by your note
Click any button in the grid to open the Button Configuration window (Unified Binding Window) for that button. Right-click a button for a context menu:
- Name Bn… / Rename Bn…: Give the button a name of your own. Clear name appears once it has one
- Test binding: Fire the button's configured action immediately, so you can confirm it does what you expect without touching the hardware
- Clear all bindings: Remove every press type configured on this button
- Set as Encoder (CW = Bn)…: Pair this button with another as a rotary encoder. Replaced by Configure Encoder and Remove from Encoder when the button already belongs to one. See Encoders above
- Copy binding: Copy this button's entire configuration to the clipboard
- Paste binding: Apply a copied configuration to this button. Copy and paste work across devices and across profiles
- Export control names… / Import control names…: Save every button and axis name on this device to a
.hcnamesfile, or load names from one
Naming Buttons and Axes
Many devices report their controls as plain numbers, which makes it hard to tell which button is which. You can give any button or axis a name of its own, such as BEACON ON for B21 or Throttle Left for Slider 1.
To name a control, right click it and choose Name Bn… for a button or Rename axis… for an axis, type the name, and click OK. Leaving the box empty clears the name.
Names belong to the device rather than to a profile, so you only name a control once and it shows in every hangar and profile. The original number or axis label always stays visible under the name. Names also appear in the Button Configuration window header, the Axis Binding dialog title, button tooltips, the button picker used for conditions, and the List Bindings… window.
Sharing Names
Right click any button and choose Export control names… to save the device's full set of names to a .hcnames file. Anyone with the same device can load it with Import control names…. Imported names replace existing names on the same controls and leave every other control alone.
Names are also included when you export a profile or hangar. On import they only fill in controls that don't have a name yet, so names you have already set are never overwritten.
Status Bar
The status bar at the bottom shows the current device state:
- "Reading…" — Device is connected and being polled for input
- "Stopped." — Device polling is stopped
- Error messages appear here if the device cannot be opened
Device Layers
The Device Layer system allows you to create multiple independent sets of button and axis bindings for a single device, and switch between them automatically based on simulator conditions. This is useful when you want the same physical buttons to perform different actions depending on context, such as the active aircraft, a cockpit mode, or an HC Variable state.
Each device can have one or more named layers. At runtime, HangarControl evaluates layer conditions from top to bottom and activates the first layer whose condition is met. If no condition matches, the Default layer (the fallback) is used.
Getting Started with Layers
To set up layers, click the Manage Layers button in the Device Configuration header. If no layers have been configured yet, clicking "Set Layer Condition" in the header also routes you to the Layer Manager.
When you open the Layer Manager for the first time and add a layer, a Default layer is automatically created as the fallback. Your existing bindings remain on the Default layer, so enabling layers does not disrupt anything already configured.
Layer Manager
The Layer Manager dialog provides full control over your layer configuration. The left side displays the ordered list of layers. The right side has action buttons:
| Button | Function |
|---|---|
| Add Layer | Create a new layer. It is inserted before the Default layer so that conditional layers are evaluated first. |
| Duplicate | Copy the selected layer and all of its bindings into a new layer. The duplicate starts with no condition set, so you need to assign one. |
| Rename | Change the display name of the selected layer. |
| Set Condition | Open the Condition Editor to define when this layer should activate. The condition can reference LVars (L:), AVars (A:), HC Variables (HC:), Flags, or physical button held states. Operators include ==, !=, >, <, >=, and <=. |
| Set Mode | Choose whether the layer controls Buttons Only or Buttons + Axes. In Buttons Only mode, axis bindings always come from the Default layer regardless of which layer is active. |
| Auto-Cancel | Have this layer return to your default layer on its own after a period of inactivity. See Auto-Cancel below. |
| Move Up / Move Down | Change the evaluation order. Layers are evaluated top to bottom; the first matching condition wins. |
| Enable/Disable | Toggle a layer on or off without deleting it. Disabled layers are skipped during evaluation. The Default layer cannot be disabled. |
| Import | Import bindings into the selected layer from a .hcdev file. |
| Export | Export the selected layer's bindings to a .hcdev file for sharing or backup. |
| Delete | Remove the selected layer and all of its bindings. Deleting the Default layer removes the entire layer system for the device. |
Below the layer list, a detail area shows the selected layer's condition summary and mode.
Auto-Cancel
A layer can return to your default layer automatically after a period with no input on the device. This is useful for a temporary shift layer that you want to fall back on its own rather than having to switch out of it manually.
Select a layer and click Auto-Cancel to open the Auto-Cancel dialog:
- Return to the default layer after a period of inactivity: Turns auto-cancel on for this layer.
- Return after (seconds of no input on this device): The idle time before the layer cancels. The default is 10 seconds.
- On cancel: Shows exactly what HangarControl will write to end the layer, worked out from the layer's own condition. For a Flag condition it clears or sets that flag. For an HC Variable condition it sets that variable, and an editable value field lets you choose what it is set to.
Any input on the device — a button press, an encoder detent, a knob push — resets the countdown. The layer stays active for as long as you are using the device and only falls back once you stop.
- Flag and HC Variable conditions are supported.
- L:Var and A:Var conditions are not — these are sim values HangarControl can only read, so there is nothing it can write to end the layer. Drive the layer from a Flag or an HC Variable instead.
- Button held conditions are not — releasing the button already exits the layer, so auto-cancel does not apply.
- A layer with no condition set has nothing to reset.
Editing Layer Bindings
Once layers are configured, the Device Configuration view shows a layer selector dropdown at the top. Select a layer from the dropdown to edit its bindings. The info text below the dropdown shows which layer you are editing, along with its condition and mode.
Each layer has its own independent set of button and axis bindings. When you click a button or axis while a specific layer is selected, you are editing that layer's binding for that input.
Layer Conditions
Layer conditions use the same condition system as the rest of HangarControl. You can create conditions based on:
- LVars (L:): Check the value of an aircraft local variable (e.g., L:XMLVAR_Autopilot_1_Status == 1)
- AVars (A:): Check a SimConnect aircraft variable (e.g., A:AUTOPILOT MASTER == 1)
- HC Variables (HC:): Check a HangarControl variable value (e.g., HC:MyMode == 2)
- Flags: Check whether an HC flag is set or cleared
- Button State: Check whether a physical button on any device is currently held
Conditions are evaluated every 250 milliseconds at runtime, and the layer configuration is reloaded from disk every 3 seconds. This means layer switches respond quickly but configuration changes take a few seconds to take effect.
How Layer Evaluation Works
At runtime, HangarControl evaluates layers from top to bottom in the order shown in the Layer Manager:
- For each non-default layer (in order), the condition is evaluated
- The first layer whose condition evaluates to true becomes the active layer
- The Default layer is always evaluated last, regardless of where it sits in the list
- If the Default layer has no condition set, it activates as the unconditional fallback when nothing else matched
- If the Default layer does have a condition set, it activates only when that condition is met, exactly like any other layer
- If nothing matches at all, all input from the device is blocked until something does
- Disabled layers are skipped entirely, and a non-default layer whose condition cannot be read is skipped rather than matching
Assigning a condition to the Default layer is what makes multi-value setups work — for example an HC Variable cycling 1 through 4 where every layer, Default included, needs its own condition. If you do this, be aware you have given up your unconditional fallback: any value outside your conditions leaves the device with nothing active.
The active layer determines which set of bindings is used for button presses. If the layer mode is Buttons + Axes, axis bindings also switch. If the mode is Buttons Only, axis bindings always come from the Default layer.
Layers are evaluated top to bottom. If you have two layers whose conditions could both be true at the same time, the one higher in the list wins. Use Move Up / Move Down in the Layer Manager to set the priority. The Default layer should always be last (it is placed there automatically).
Axis Binding
The Axis Binding dialog allows you to configure what happens when an axis reaches specific positions. Unlike simple axis-to-axis mappings, the Axis Binding system lets you trigger discrete actions at defined threshold points or ranges along the axis travel. Access this dialog by clicking the Bind… button next to any axis in the Device Configuration view.
Axis Binding Toolbar
The toolbar at the top of the dialog provides controls for managing binding segments:
| Button | Function |
|---|---|
| ➕ Add | Add a new segment row with default values (threshold 50%, direction Both, re-arm 1%) |
| ➖ Remove | Remove selected segment(s) — removes all marked rows, or the current row if none are marked |
| ⬆ Move Up | Move the selected segment up in the list order |
| ⬇ Move Down | Move the selected segment down in the list order |
| ⚙ Axis Tune | Open the Axis Tune dialog for curve shaping, deadzone, and inversion settings |
| 💾 Save | Save all segments and close the dialog |
| 🗑 Clear | Clear all bindings for this axis (with confirmation) |
| ❌ Close | Close the dialog without saving changes |
Segment Grid Columns
Each row in the grid represents a segment — a specific threshold or range where an action will be triggered. The grid contains the following columns:
Selection Checkbox (Far Left)
The checkbox in the leftmost column allows you to mark rows for bulk operations. When you click Remove or use Move Up/Down, the operation applies to all marked rows. If no rows are marked, the operation applies to the currently selected row.
The checkbox in the column header toggles all rows on or off for quick selection.
At / Between (%)
This column defines where along the axis the action triggers:
- Single threshold (At): When the "Between" checkbox is unchecked, enter a single percentage value (0-100). The action triggers when the axis crosses this threshold.
- Range (Between): When the "Between" checkbox is checked, two fields appear for entering a start and end percentage. The action triggers when the axis enters or exits this range.
Direction
The Direction dropdown controls which axis movement direction triggers the action:
- Up: Triggers only when the axis value is increasing (moving toward 100%)
- Down: Triggers only when the axis value is decreasing (moving toward 0%)
- Both: Triggers on axis movement in either direction
Re-arm (%)
The Re-arm value (also called hysteresis) prevents repeated triggering when an axis hovers near a threshold. It specifies how far past the threshold the axis must move before the action can trigger again.
For example, with a threshold at 50% and re-arm at 5%:
- The action triggers when the axis first crosses 50%
- The action will not trigger again until the axis moves at least 5% away (below 45% or above 55%)
- Once the axis has moved 5% away, crossing 50% again will trigger the action
Method
The Method dropdown selects what type of action to perform when the segment triggers. Available methods are:
| Method | Description | Use Case |
|---|---|---|
| Keyboard | Send a keyboard key or key combination | Applications that respond to keyboard shortcuts |
| SimConnect | Send a SimConnect event or write to a SimVar/L:Var | Microsoft Flight Simulator 2020/2024 |
| XPlaneCommand | Execute an X-Plane command | X-Plane 11/12 discrete commands |
| XPlaneDataRef | Write a value to an X-Plane DataRef | X-Plane 11/12 continuous values |
| DcsCommand | Send a value to a DCS cockpit control. Browse opens the DCS Control Picker, which covers both continuous axes and discrete commands | DCS World throttles, dials, sliders, flight controls, and detent triggered cockpit buttons |
| ReverseThrust | Run the reverse thrust engage sequence from a point on the axis, using the same preset system as the button action type | Throttle levers with a reverse detent below idle |
Action Column
The Action column changes based on the selected Method, displaying the appropriate controls for configuring that action type.
Keyboard Method
When Method is set to Keyboard, the Action column displays:
- Chord field: Shows the currently bound key combination (read-only)
- Bind… button: Opens the key capture window to record a new key combination
- Clear button: Removes the current keyboard binding
Click Bind… to open the key capture dialog, then press the desired key combination. The dialog captures modifier keys (Ctrl, Alt, Shift, Win) along with the main key.
SimConnect Method
When Method is set to SimConnect, the Action column provides extensive options for interacting with Microsoft Flight Simulator:
Event Text Field
The text field shows the SimConnect event name, SimVar, or L:Var. You can type directly into this field or use the Pick button to browse available events.
Use Axis Checkbox
When checked, the current axis position value is sent as the data parameter for the SimConnect event. This enables smooth, continuous control rather than discrete on/off actions.
When "Use axis" is enabled:
- The static value field becomes disabled
- A Range… button appears to configure the output range
- The axis position is continuously streamed to the simulator
Directional Checkbox
When checked, two value fields appear for specifying different data values based on axis direction:
- Forward value: Sent when the axis moves toward 100%
- Backward value: Sent when the axis moves toward 0%
This is useful for events that increment/decrement values, such as heading bug adjustments where you want +1 when rotating clockwise and -1 when rotating counter-clockwise.
Value Field
When "Use axis" is unchecked, enter the integer data value to send with the SimConnect event. Many events require specific data values (e.g., FLAPS_SET uses specific position values). Leave blank if the event does not require data.
Pick… Button
Opens the SimConnect Event Picker dialog to browse and select from available SimConnect events, SimVars, L:Vars, and other variable types. See the SimConnect Event Picker section below for details.
Clear Button
Removes the current SimConnect event assignment from this segment.
💾 Save Custom Event Button
Saves the current event as a custom entry associated with the current aircraft. This is useful for aircraft-specific events that are not in the standard catalog.
X-Plane Command Method
When Method is set to XPlaneCommand, the Action column displays:
- Command field: The X-Plane command path (e.g.,
sim/flight_controls/flaps_down) - Browse… button: Opens the X-Plane command picker to browse available commands
- Clear button: Removes the current command assignment
X-Plane DataRef Method
When Method is set to XPlaneDataRef, the Action column displays:
- DataRef field: The X-Plane DataRef path
- Use axis checkbox: When checked, streams the axis value to the DataRef
- Range… button: (When Use axis is checked) Configure the output range
- Value field: (When Use axis is unchecked) Static value to write
- Browse… button: Opens the X-Plane command picker to browse DataRefs
- Clear button: Removes the current DataRef assignment
DCS Axis Method
When Method is set to DCS Axis, the Action column provides access to DCS World aircraft-specific axis controls and universal flight controls. Click Browse… to open the DCS Control Picker, which has two tabs: Axes (continuous controls) and Commands (discrete controls).
DCS axes support two routing paths depending on the axis ID:
Aircraft-Specific Axes — These are cockpit controls defined in the aircraft library (e.g., throttle levers, brightness knobs, volume dials). They are sent as performClickableAction commands through the DCS TCP bridge. The axis value is mapped from 0.0–1.0 to the -1.0 to +1.0 range that DCS expects. If the axis has its inverted flag set in the library, HangarControl automatically flips the direction before sending.
Universal Flight Controls (LoSetCommand) — These are global flight controls that work across all aircraft without needing a specific aircraft library. They use DCS's LoSetCommand API. Axis IDs use the LOSET_ prefix:
| Axis ID | LoSetCommand | Function |
|---|---|---|
| LOSET_PITCH | 2001 | Pitch axis (elevator) |
| LOSET_ROLL | 2002 | Roll axis (ailerons) |
| LOSET_RUDDER | 2003 | Rudder axis |
| LOSET_THRUST_BOTH | 2004 | Throttle / thrust (combined). Inverted by default. |
| LOSET_THRUST_LEFT | 2005 | Left engine thrust. Inverted by default. |
| LOSET_THRUST_RIGHT | 2006 | Right engine thrust. Inverted by default. |
| LOSET_COLLECTIVE | 2087 | Helicopter collective |
| LOSET_BRAKE_BOTH | 2101 | Wheel brake (both) |
| LOSET_BRAKE_LEFT | 2112 | Left wheel brake |
| LOSET_BRAKE_RIGHT | 2113 | Right wheel brake |
SimConnect Event Picker
The SimConnect Event Picker is a comprehensive browser for all available simulator events and variables. Access it by clicking Pick… in the SimConnect method's Action column.
Picker Header
The header displays:
- Connection status: Shows current SimConnect connection state
- Count display: Shows "Showing X of Y" for the current filter results
- ⚙️ Manage B:Events: Opens the custom B:Events manager for aircraft-specific events
- ⚙️ Manage A:Vars: Opens the custom A:Vars (SimVars) manager
- ⚙️ Manage H:Events: Opens the custom H:Events manager for HTML gauge events. Works the same way as the other two managers — add the events your aircraft uses and they appear in the picker alongside the built in list
- 📥 Import…: Import HubHop presets or InputEvents from external files
- 🔄 Reload: Refresh catalogs and rescan for L:Vars (keyboard: F5)
Search and Filters
The filter bar provides powerful search and filtering capabilities:
Search Box
Type to filter by event name, title, category, notes, or type. Supports partial matches. Press Ctrl+F to focus the search box.
The search box understands more than a single word:
- Multiple terms narrow the results. Every term you type must appear somewhere in the entry, though not necessarily in the same field. Searching
autopilot headingfinds entries matching both words, not either one - A minus sign excludes. Prefix a term with
-to hide anything containing it. Searchingview -pan -chasefinds view events while filtering out the panning and chase camera entries
The two combine freely, so light -taxi -landing gives you the lighting events with the two busiest groups stripped out. Matching is case-insensitive throughout.
Quick Filter Chips
Three toggle chips sit alongside the Type dropdown for one click filtering:
- ⚡ Essentials: Common flight control events — batteries, lights, gear, flaps, brakes, throttles, and primary flight controls
- PMDG: Jumps straight to the PMDG aircraft specific command set without going through the Type dropdown
- ✨ Custom: Shows only the B:Events and A:Vars you have added yourself through the manager dialogs, which is the fastest way back to something you created earlier
Type Filter
Filter by event type:
| Type | Description |
|---|---|
| All types | Show all event types |
| SimConnect (K:) | Standard SimConnect key events (commands) |
| SimVars (A:) | Aircraft simulation variables (readable/writable values) |
| L:Vars (L:) | Local variables specific to aircraft add-ons |
| H: Events | HTML gauge events |
| B: Events | Binary and boolean aircraft state variables — switch positions, system status, and equipment states |
| Input Events (INP) | MSFS 2024 input event system |
| PMDG | PMDG SDK-specific events for PMDG aircraft |
Category Filter
Narrow results by category (e.g., Autopilot, Electrical, Engine, Flight Controls).
Where the B: Event List Comes From
The B: event list is a catalog file rather than a live scan of the connected aircraft. HangarControl looks in this order and uses the first it finds:
- A user catalog at
%AppData%\HangarControl\catalog\bevents.json - The catalog shipped with the application, in its
Datafolder - A comprehensive built-in list covering the major aircraft systems — electrical, lighting, anti-ice, fuel, engine, gear, flight controls, and autopilot
Entries are sorted by category and then by name. The catalog is cached in memory, and 🔄 Reload (F5) re-reads it from disk.
Use ⚙️ Manage B:Events in the picker header to add it yourself. Once added, your custom event appears in the picker alongside the built-in ones and can be bound like any other. The same applies to A:Vars through ⚙️ Manage A:Vars.
Source Filter
When viewing L:Vars, filter by vendor/source (e.g., PMDG, FBW for FlyByWire, WT for Working Title).
Event Grid
The main grid displays matching events with columns:
- Name: The event identifier to use in bindings
- Category: Functional category grouping
- Type: Type badge (K:, A:, L:, H:, B:, INP, PMDG)
- Title: Human-readable description
- Notes: Additional usage information
Double-click a row to select it and close the picker, or single-click to select and click OK.
All five columns are searchable, so typing a type tag into the search box works as a quick filter without touching the Type dropdown.
Manual Entry
The Manual: field at the bottom left lets you type any event directly rather than hunting for it in the grid. It accepts every prefix — K:EVENT, H:EVENT, L:VAR, B:EVENT, A:VAR. Press Enter or click Use to accept it.
Manual entry takes priority over the grid selection, so if there is text in this box it is what gets used, regardless of which row is highlighted. Clear the box if you meant to pick from the grid.
Data Parameter
The Data: field specifies an integer parameter for events that require one. Leave blank for events that don't need data.
The hint panel to the right of the Data field changes as you select different types, telling you what that particular type expects:
- SimConnect event: Leave data blank if not required
- PMDG: Data is a repeat count, so 5 turns five detents
- L:Var: The value to set, typically 0 for off and 1 for on
- A:Var: Read only through SimConnect, no data parameter needed
- B:Event: The value to set, typically 0 for off and 1 for on
- H:Event: Trigger value, default 1
- Input Preset: Not yet supported
DCS World Integration
HangarControl provides deep integration with DCS World through a TCP-based communication bridge and aircraft-specific command libraries. Unlike MSFS which uses SimConnect, DCS integration relies on a Lua export script running inside DCS that acts as a TCP server, with HangarControl connecting as a client. This architecture ensures DCS performance is not impacted by external control software.
How DCS Integration Works
When you set your hangar's simulator type to DCS World and start the HangarControl bridge, the application continuously attempts to connect to the DCS Lua export server on TCP port 34380. Once DCS is running with a mission loaded, the connection is established automatically. HangarControl then sends cockpit commands and axis values through this connection, and receives aircraft identification and cockpit state updates in return.
DCS commands work differently from MSFS events. In DCS, every cockpit control is identified by a device ID and a command code, and accepts a floating-point value. For a momentary pushbutton, the press sends value 1.0 and the release sends value 0.0. For a two-position toggle switch, pressing sends 1.0 and it stays there — you do not release. HangarControl's aircraft libraries encode all of this information so you do not need to look up device IDs and command codes yourself.
Aircraft Libraries
Aircraft libraries are JSON files that contain the complete set of cockpit commands and axis controls for a specific DCS aircraft module. Each library includes:
- Commands: Every clickable cockpit button, switch, lever, and toggle with its device ID, command code, press value, release value, control type (momentary/toggle/multiposition/rotary), category, and human-readable display name.
- Axes: Every continuous cockpit control (throttle levers, brightness knobs, volume dials) with its device ID, command code, category, and optional inversion flag.
Aircraft libraries are stored in %AppData%\HangarControl\DCS\AircraftLibrary\. HangarControl loads all JSON files in this folder at startup. New aircraft libraries are distributed with HangarControl updates and can be added manually.
DCS Command Picker
The DCS Command Picker is the browser for cockpit commands (buttons, switches, levers). It opens when you click Browse in the DCS Command action type within the Button Configuration window.
Picker Layout
The header displays the title "DCS COMMAND PICKER" and a count badge showing how many commands match the current filters.
Filter Bar
The filter bar provides three controls for narrowing the command list:
- Aircraft: Dropdown listing all installed aircraft libraries. Select the aircraft you want to configure. The picker remembers your last aircraft selection between uses.
- Category: Dropdown listing all command categories for the selected aircraft (e.g., Cockpit Mechanics, Electric System, Engines, Flight Control, Fuel System, Gear/Flaps/Brakes, Lighting, Navigation, Weapons). Select "All categories" to show everything. Every aircraft also has a Kneeboard category (Kneeboard ON/OFF, Glance View, Jump To Shortcut 1 through 10, plus Next and Previous Page, Mark Point and shortcut controls on most modules) and a Communication Menu category (menu items 1 through 12, Next Item, Previous Item, Select Item, Return and Switch Dialog).
- Search: Free-text search that filters across command ID, display name, description, and category. Typing filters in real-time with a short debounce delay.
Command Grid
The main grid displays matching commands with these columns:
- Command ID: The unique identifier used in bindings (e.g., "GEAR_LEVER", "MASTER_ARM_SW")
- Display Name: Human-readable description of the control
- Category: Functional grouping (e.g., "Cockpit Mechanics", "Weapons")
- Type: Control type — momentary, toggle, multiposition, or rotary
- Description: Additional details about the control's function
Click a row to select it (the command ID populates the Manual entry field). Double-click to select and immediately confirm.
Bottom Controls
The bottom area of the picker has two rows. The top row provides custom command management:
- + Add Custom Command: Opens the custom command editor to add a new user-defined command to the currently selected aircraft. See Custom DCS Commands for full details.
- ✏ Edit: Opens the custom command editor for the currently selected command. Only works on custom commands you have added — built-in library commands are read-only.
- 🗑 Delete: Removes the selected custom command from the aircraft. Only works on custom commands. A confirmation prompt is shown before deletion.
The bottom row provides manual entry and confirmation:
- Manual: Text field for typing a command ID directly. Useful if you know the exact ID or are using a command not in the library. Click Use to confirm manual entry.
- Value: Optional numeric value override. Leave blank to use the command's built-in PressValue (usually 1.0 for buttons). Use this for multiposition switches where different values select different positions.
- Pulse: Checkbox controlling whether HangarControl sends both press and release values. See the Pulse section below for critical usage guidance.
- 💾 OK: Confirm the selection and close the picker.
- ✖ Cancel: Close without selecting.
Auto-Set Pulse Behavior
When you click a command in the grid, the Pulse checkbox is automatically set based on the command's control type. Commands marked as "momentary" will have Pulse checked (press + release), while commands marked as "toggle" or other types will have Pulse unchecked (press only). You can always manually override this after selection.
Stepped Selector Setup
Rotary and multiposition selectors in DCS do not understand "go up one" — they want the position value itself. Sending +1 or -1 at them does nothing useful. To handle this, confirming a command whose type is rotary or multiposition prompts you to set it up as a stepped selector.
Answer Yes and you are asked how many positions the selector has. There are two ways to answer:
- A count: Type a number such as
9and the positions are spread evenly from 0 to 1. If the library already knows the position count it is pre-filled for you. - Explicit values: If the switch uses its own values, type them separated by commas, for example
-0.1,0,0.1,0.2.
Add ,W on the end to wrap from the last position back to the first. Without it, the selector stops at each end.
The picker rewrites your selection into a stepped selector command, which looks like MPOS:COMMAND_ID:9:W in the command field. It also sets Value to 1 and clears Pulse for you.
MPOS: text, because that text is the key HangarControl uses to remember which position the selector is currently on. Retype it differently on one direction and you get two selectors fighting over one switch.
DCS Control Picker (Axis Binding)
The DCS Control Picker is a dual-purpose browser that appears when browsing DCS bindings in the Axis Binding dialog. It has two tabs: one for continuous axes and one for discrete commands, because in DCS some axis segments may need to trigger cockpit commands at specific positions rather than streaming a continuous value.
Tabs
- 📊 Axes (Continuous): Shows axis controls that accept continuous 0.0–1.0 values. These are for cockpit knobs, sliders, throttle levers, and other analog controls. Columns: Name, Category, ID, Device, Code.
- 🔘 Commands (Discrete): Shows cockpit commands (same as the DCS Command Picker). Use these in axis segments where you want a specific cockpit button triggered at a threshold rather than streaming an axis value. Columns: Name, Category, ID, Type, Device, Code.
Filter Bar
Same as the DCS Command Picker: Aircraft dropdown, Category filter (rebuilds per-tab), and Search box. Category filters show categories appropriate to whichever tab is active.
Selection Preview
The bottom preview bar shows the currently selected item. For axes, the selection shows with a DCS_AXIS: prefix (e.g., DCS_AXIS:IFEI_BRIGHTNESS). For commands, it shows just the command ID. This field is editable — you can type or paste an axis/command ID directly.
Bottom Controls
- Value: Optional value for commands. Not typically used for axes.
- Pulse: Only relevant when selecting commands from the Commands tab. Has no effect on axis selections.
- 💾 OK: Confirm selection. The picker returns whether the selection was an axis or a command so HangarControl knows how to route it.
A hint at the bottom of the dialog reads: "Axes stream continuous 0.0–1.0 values. Commands trigger discrete actions." This is the key distinction — axes are for smooth, proportional control while commands are for clicking cockpit buttons.
Understanding Pulse Mode
The Pulse checkbox is the single most important setting when configuring DCS bindings, and getting it wrong is the most common source of problems. Here is how it works:
| Pulse Setting | What Happens | Correct For | Example Controls |
|---|---|---|---|
| Pulse ON (checked) | HangarControl sends the command's PressValue (e.g., 1.0), then immediately follows with the ReleaseValue (e.g., 0.0) | Momentary pushbuttons, clickable buttons that spring back | Gear handle, master caution reset, weapon release, UFC buttons, flare/chaff dispense |
| Pulse OFF (unchecked) | HangarControl sends only the PressValue. The command stays in that state until you send it again with a different value. | Toggle switches, two-position switches, covers, guards | Master arm switch, battery switch, fuel pump switches, landing light switch, canopy lever |
Custom DCS Commands
If a cockpit command is missing from the built-in aircraft library, or if you need to override incorrect values, you can add your own custom commands directly inside HangarControl. Custom commands are saved per aircraft, persist across app restarts, and are never overwritten by HangarControl updates.
Adding a Custom Command
In the button binding window, set the Action Type to DCS Command and click Browse. Select the aircraft you want to add the command to from the Aircraft dropdown.
Click + Add Custom Command in the bottom-left of the picker. This opens the custom command editor.
The editor has the following fields:
| Field | Required | Description |
|---|---|---|
| Display Name | Yes | A human-readable name for the command (e.g., "Battery Switch"). This is also used to auto-generate the command ID. |
| Category | No | Grouping label that appears in the category filter. Defaults to "Custom" if left blank. |
| Device ID | Yes | The DCS device number for this control. See "Finding Device IDs and Command Codes" below. |
| Command Code | Yes | The DCS command code (button ID) for this control. See "Finding Device IDs and Command Codes" below. |
| Control Type | Yes | Determines Pulse auto-detection. Options: momentary (pushbuttons), toggle (two-position switches), multiposition (rotary selectors), rotary (knobs). |
| Press Value | Yes | Value sent when the command is activated. Usually 1.0 for ON/press. |
| Release Value | Yes | Value sent when the command is released (Pulse mode) or for the OFF state. Usually 0.0. |
| Description | No | Optional notes about the command. Shown in the Description column of the picker grid. |
Click Save to add the command. It appears immediately in the command grid and can be selected like any built-in command. The command ID is auto-generated with a CUSTOM_ prefix based on the display name.
Editing and Deleting Custom Commands
Select a custom command in the grid, then click ✏ Edit to modify its values or 🗑 Delete to remove it. These buttons only work on commands you have added. Built-in library commands cannot be edited or deleted through the picker, so there is no risk of accidentally breaking the stock library.
Finding Device IDs and Command Codes
DCS cockpit controls are identified by a device ID (which device/panel in the cockpit) and a command code (which specific button or switch on that device). You can find these values in the DCS module's Lua source files:
Navigate to your DCS installation folder. Module Lua files are typically located at:
DCS World\Mods\aircraft\{MODULE}\Cockpit\Scripts\
For example, the F-16C files are in Mods\aircraft\F-16C\Cockpit\Scripts\.
Open devices.lua (sometimes called device_init.lua or listed in command_defs.lua). This file maps device names to numeric IDs. For example:
devices["ELEC_INTERFACE"] = 3 means the Electrical Interface panel is device 3.
Open command_defs.lua (or clickabledata.lua). This file defines each cockpit control with its command code. Look for entries like:
elements["BATT_SW"] = create_element(BATT_SW_CODE) or direct numeric assignments. The command code is the number associated with the control. In clickabledata.lua, functions like default_2_position_tumb list the device ID and command code as parameters.
Device ID 0 is special: it routes through DCS LoSetCommand, which handles universal flight controls (gear, brakes, engine cutoff) that work across all aircraft modules. If you are adding a universal command, set device ID to 0 and use the LoSetCommand number as the command code.
Custom Command Storage
Custom commands are stored separately from the built-in aircraft library at:
%AppData%\HangarControl\DCS\CustomCommands\{aircraftId}.json
This location is completely independent of the library folder (AircraftLibrary\), so HangarControl updates will never modify or delete your custom commands. Custom commands are automatically loaded and merged with the built-in library every time HangarControl starts.
Axis Range Dialog
The Axis Range dialog configures how the physical axis range maps to output values when "Use axis" is enabled. Access it by clicking Range… in a segment with "Use axis" checked.
Range Options
- Use full axis range (0% .. 100%): When checked, the entire axis travel maps to the full output range. When unchecked, you can specify a subset.
- Invert this segment: Reverses the axis direction for this segment only (0% becomes 100% and vice versa), independent of the axis-level invert setting in Axis Tune.
- From (%): Starting percentage of the axis range to use
- To (%): Ending percentage of the axis range to use
Custom Output Range
The Custom Output Range section lets you remap the simulator output independently of the physical axis travel. When left blank, the axis maps to the default output range for the bound event. When values are entered, the full physical axis travel (0–100%) maps to the specified Min and Max output values instead.
- Min: The simulator value sent when the physical axis is at 0%. Accepts decimals and negative values.
- Max: The simulator value sent when the physical axis is at 100%. Accepts decimals and negative values.
Common output ranges:
- -16383 to 16383 — centered axes (ailerons, elevator, rudder)
- 0 to 16383 — slider/throttle axes
- -1 to 1 — B: variable events
Axis Tune Dialog
The Axis Tune dialog provides curve shaping and axis behavior controls. Access it by clicking ⚙ Axis Tune in the Axis Binding toolbar.
Visual Response Curve
The left side of the dialog shows a live response curve visualization. The curve displays how input values (horizontal axis) map to output values (vertical axis). A moving dot shows the current axis position in real-time as you move the physical control.
Every setting in the dialog is reflected in the curve as you change it, including any Dead Bands, which appear as shaded regions. The preview matches what the axis actually does at runtime, so what you shape here is what you get in the simulator.
Tuning Parameters
Axis Type Detection
A status display shows the detected axis type (centered joystick-style or one-ended slider-style) based on observed movement patterns.
Deadzone
The deadzone slider (0-100%) creates an insensitive region:
- For centered axes (joysticks): Creates a dead zone around the center position where small movements are ignored
- For slider axes (throttles): Creates a dead zone at the low end of travel
Saturation X
Controls the input range compression (0-100%). Lower values mean the axis reaches full output before reaching physical endpoints. At 100%, the full physical range is used.
Saturation Y
Controls the maximum output value (0-100%). Lower values limit the maximum output even when the axis is at full deflection.
Curvature
Adjusts the response curve shape (0-100%):
- 0%: Aggressive exponential curve — very sensitive near center, less sensitive at extremes
- 50%: Linear response — direct 1:1 mapping
- 100%: Inverse exponential — less sensitive near center, more sensitive at extremes
Neutral Point
The Neutral slider (0-100%) tells HangarControl where your axis physically rests, and remaps the input so that position becomes dead center in the simulator. The default of 50% means no change.
Use it when the hardware's resting position is not truly centered — a stick with a slight mechanical bias, a worn centering spring, or a lever whose detent does not sit exactly halfway. Set the slider to where the control actually sits at rest and everything either side of it is rescaled to reach full travel in both directions.
Dead Bands
Dead Bands place flat regions anywhere along the axis where moving the physical control does not change the output. These simulate the physical detents found on real aircraft throttles — flight idle gates, reverse thrust detents, afterburner notches — on hardware that has no such detent.
Each band has two controls:
- Center: Where along the axis travel the flat sits, as a percentage
- Width: How much of the travel the flat covers, as a percentage
The travel outside the bands is rescaled so the axis still reaches its full output range. A band does not cost you any of the output, only the physical movement needed to cross it.
| Control | Function |
|---|---|
| Add | Add a band. New bands start at 50% center with 5% width — adjust from there |
| Clear | Remove every band on this axis |
| Copy | Copy this axis's band configuration to the clipboard |
| Paste | Apply a copied band configuration, replacing whatever is currently set. Useful for matching left and right throttle levers |
Bands appear as shaded regions on the response curve, and the live position dot lets you confirm the flat lands where your hand expects it. Multiple bands per axis are supported.
Options
- Invert: Reverses the axis direction (0% becomes 100% and vice versa)
- Slider: Treats the axis as a one-ended slider (deadzone at low end) rather than a centered axis (deadzone at center)
Toggle Binding
This section lets you bind a keyboard key or controller button to enable/disable the axis at runtime. When disabled, axis movements are ignored until toggled back on.
- ⌨ Keyboard…: Bind a keyboard key combination as the toggle
- 🎮 Button…: Bind a controller button as the toggle
- ✖: Clear the toggle binding
Dialog Buttons
- 🔄 Reset: Reset all tuning parameters to defaults, including Neutral Point back to 50%. Dead Bands are cleared separately with the Dead Bands Clear button
- ✖ Cancel: Close without saving changes
- 💾 OK: Save tuning settings and close
Example: Flaps Axis Segmentation
This example demonstrates how to configure a physical axis to control discrete flap positions, a common use case where you want a single lever to step through multiple detent positions.
Step 1: Plan Your Segments
Divide the axis range into zones for each flap position:
- 0-15%: Flaps Up
- 15-35%: Flaps 1
- 35-55%: Flaps 2
- 55-75%: Flaps 3
- 75-100%: Flaps Full
Step 2: Create Segments
In the Axis Binding dialog:
- Click ➕ Add to create a new segment
- Check Between in the At/Between column
- Enter the range (e.g., 0 – 15 for Flaps Up)
- Set Direction to "Both" so it triggers regardless of movement direction
- Set Method to "SimConnect"
- Click Pick… and search for "FLAPS_SET"
- Enter the appropriate data value for that flap position
- Repeat for each flap position
Step 3: Configure Data Values
For MSFS, the FLAPS_SET event uses position indices. Alternatively, use specific events:
| Range | Event | Data Value |
|---|---|---|
| 0-15% | FLAPS_UP | (none needed) |
| 15-35% | FLAPS_1 | (none needed) |
| 35-55% | FLAPS_2 | (none needed) |
| 55-75% | FLAPS_3 | (none needed) |
| 75-100% | FLAPS_DOWN | (none needed) |
Step 4: Set Re-arm Values
Set Re-arm to 2-3% for each segment. This prevents jitter at zone boundaries from repeatedly triggering flap changes.
Step 5: Save and Test
Click 💾 Save to save the configuration. With the HangarControl service running, move your flaps lever through its range and verify each position triggers the correct flap setting in the simulator.
Button Configuration
The Button Configuration window (also called the Unified Binding Window) provides comprehensive control over what happens when a button is pressed. This dialog allows you to configure multiple press types, conditional execution, and various action methods for a single button.
Access this dialog by clicking any button in the BUTTONS panel of the Device Configuration view. The button grid shows numbered buttons, and clicking one opens this configuration window.
Window Header
The header displays the button number and device name (e.g., "Button 1 • VirPil Throttle"). Press F2 to toggle a keyboard shortcuts reference panel showing all available hotkeys.
Configured Actions (Press Types)
Below the header, the Configured Actions bar shows all press types currently configured for this button. A single button can respond differently depending on how it's pressed.
Available Press Types
| Press Type | Description | Use Case |
|---|---|---|
| Single Press | Triggers on a normal button press and release | Standard button actions, toggles |
| Double Tap | Triggers when the button is pressed twice quickly within the Double Tap Window | Secondary functions, alternate modes |
| Long Press | Triggers immediately when the button is held longer than the Long Press Minimum threshold | Alternate actions, mode shifts |
| Release | Triggers when the button is released (not when pressed) | Actions that should occur on button up |
| Hold | Triggers repeatedly while the button is held, at the configured repeat rate | Continuous adjustments, repeated commands |
Each press type can be configured independently, allowing a single button to perform different actions based on how it's pressed.
Adding Press Types
Click + Add Press Type to add another press type to this button. A dialog appears listing available press types that haven't been configured yet.
Switching Between Press Types
Click any press type button in the Configured Actions bar to switch to editing that configuration. The currently active press type is highlighted.
Current Press Type Indicator
Below the press type buttons, an indicator shows which press type you're currently editing (e.g., "⚡ Configuring: Single Press").
Remove This Action
The Remove This Action button (in red) deletes the current press type configuration. However, every button must have at least one configured action — you cannot remove the last remaining press type. If you attempt to do so, HangarControl displays a message explaining that at least one action must be present.
Current Bindings Summary
The 📋 Current Bindings Summary panel provides a quick overview of all configured press types and their actions:
- Each row shows the press type name and a summary of its configured action
- The summary displays the action type and target (e.g., "SimConnect: TOGGLE_MASTER_BATTERY")
- Copy: The button in the panel header copies the whole summary — every press type and its action — to the clipboard, which is handy for sharing a setup or pasting it into a support request
Create Conditional Operation
The + Create Conditional Operation... button opens a dialog to create advanced conditional logic that executes different actions based on simulator state. This allows a single button press to perform different functions depending on current conditions. See the Conditional Operations section for detailed documentation.
Action Mode
Before configuring the action details, select the Action Mode for the current press type. The Action Mode determines how this press type executes its action(s).
| Action Mode | Description | Use Case |
|---|---|---|
| Single Action | Executes one action when triggered | Standard button behavior - one press, one action |
| Sequence | Executes multiple actions in order with configurable delays between each step | Multi-step procedures, checklists, complex macros |
| Step | Cycles through a list of actions — each trigger advances to the next action | Rotary switch positions, multi-state controls, toggle cycles |
| Toggle | Alternates between two positions — first press fires the ON action, next press fires the OFF action. Each position can be a single action or a full multi-step sequence | Physical toggle switches, arming switches, two-state cockpit controls |
The Action Mode selector appears at the top of the configuration area. When you change the Action Mode, the configuration panel updates to show the appropriate options:
- Single Action: Shows the standard Action Type dropdown and action configuration
- Sequence: Shows the Sequence Editor with a list of steps and delays
- Step: Shows the Step Actions list for cycling through multiple actions
- Toggle: Shows two rows — Press 1 — ON Action and Press 2 — OFF Action — that alternate on each press. Each row shows its current assignment and has its own Edit button
Configuring a Toggle Position
Clicking Edit on either position first asks whether that position should be a single action or a sequence:
- Single action: Opens the standard action editor. One command fires for that position
- Sequence: Opens a sequence editor where you build a list of steps with delays, exactly like Sequence action mode
The two positions are independent — ON can run a sequence while OFF runs a single command, or the other way around. Switching a position from sequence back to single action discards that position's sequence.
Reset Step/Toggle Index
Below the Action Mode selector is a checkbox: Reset step/toggle index when this action fires. When checked, triggering this press type sends the step cycle counter back to the beginning.
This is set per press type, and it applies no matter which Action Mode that press type uses. The usual case is a rotary switch built on a Step cycle: put the cycle on Single Press, then check this box on a Long Press bound to your OFF action. Pressing and holding returns the switch to off and restarts the cycle from step 1, instead of picking up wherever it left off.
Sequence Editor
Selecting Sequence action mode replaces the single action panel with the Sequence Steps grid. Steps run top to bottom every time the press type fires.
The toolbar above the grid has three buttons:
- Add Step: Opens the Step Action editor to add a new command to the end of the list
- Add Pause: Inserts a timing gap rather than a command. It lands with a default of 100 ms, which you can edit
- Remove: Deletes the selected row
The grid columns are:
- #: Execution order, renumbered automatically as you reorder
- Action Type: An in place dropdown — Keyboard, SimConnect, XPlaneCommand, XPlaneDataRef, DcsCommand, ProgressiveAxis, or Pause
- Command: The configured command for that step, read only here. Use Edit to change it
- Hold (ms): Editable in place. How long that step is held before the sequence moves on
- Actions: ↑ and ↓ to reorder, and Edit to open the step in the Step Action editor
Step Actions Editor
Selecting Step action mode shows the Step Actions list instead, subtitled "Each press cycles through these actions". The difference from Sequence is fundamental: a Sequence runs every step on one press, while a Step cycle advances one position per press and stops there.
The toolbar has Add Step and Remove. The grid shows #, Type, Command, and an Actions column with ↑, ↓, and Edit.
Step Action Editor Dialog
Clicking Add Step or Edit in either grid opens the Step Action editor. The Action Type dropdown offers six choices, and the panel below it changes to match:
- Keyboard / Button: Bind Key and Clear, same as the main window
- SimConnect Event: Event name with Browse and Clear, plus optional Event Data. Supports both K: events and L:Vars
- X-Plane Command: Command path with Browse and Clear
- X-Plane DataRef: DataRef path with Browse and Clear, plus a Value field defaulting to 1
- DCS Command: Command with Browse and Clear, optional Value, and a Pulse checkbox
- Progressive Axis: Target, ramp up time, max value, release mode, and ramp down time, matching the Progressive Axis action type in the main window
Action Configuration
When Action Mode is set to Single Action, the Action Configuration section defines what action is performed when the button triggers.
Action Type
The Action Type dropdown selects the type of action to perform:
| Action Type | Description |
|---|---|
| Keyboard / Button | Send a keyboard key or key combination |
| SimConnect Event | Send a SimConnect event (K:), L:Var, or other MSFS event type |
| SimVar / Variable | Read or write simulator variables with specific actions (set, toggle, increment, etc.) |
| X-Plane Command | Execute an X-Plane command |
| X-Plane DataRef | Write a value to an X-Plane DataRef |
| DCS Command | Send a DCS World cockpit command (button press, switch toggle, rotary selector, etc.) |
| Set Flag | Set a HangarControl flag to true (for conditional logic) |
| Clear Flag | Set a HangarControl flag to false |
| Toggle Flag | Invert the current state of a flag |
| HC Variable | Set, increment, or decrement a named HangarControl numeric variable |
| Reverse Thrust (MSFS) | Execute a multi-step reverse thrust engage/disengage sequence with customizable presets |
| vJoy Button | Press a button on a vJoy virtual joystick device (requires the vJoy driver installed) |
| vJoy Axis | Send a value to an axis on a vJoy virtual joystick device (requires the vJoy driver installed) |
| Progressive Axis | Hold the button to progressively ramp an axis value over time, with a configurable ramp rate, maximum value, and release behavior |
| Run Executable | Launch a program, script, document, or URL, with optional arguments, working directory, and window mode |
| Send Network Message | Send a UDP or TCP message to a host and port of your choice with a payload of your choice |
| Touch Panel Page | Change pages on a Touch Panel from hardware — next, previous, or a specific page number, on one panel or on all of them |
Keyboard / Button Configuration
When Action Type is Keyboard / Button:
- Binding display: Shows the currently bound key combination (or "Not Bound")
- Bind Key: Opens the key capture window to record a new key combination (Ctrl+K)
- Clear: Removes the keyboard binding
SimConnect Event Configuration
When Action Type is SimConnect Event:
Event Name Field
The event name consists of two parts:
- Prefix dropdown: Select the event type prefix:
- None: No prefix — use the raw event name
- K: SimConnect key events (standard simulator commands)
- L: Local variables (aircraft-specific L:Vars)
- A: Aircraft variables (SimVars)
- B: Calculator/RPN events
- H: HTML gauge events
- Event name text field: Enter or paste the event name (e.g., "TOGGLE_MASTER_BATTERY")
Action Buttons
- 💾 (Save Custom): Saves the current event as a custom entry for the current aircraft. Custom entries appear in the picker for quick access.
- Browse Events: Opens the SimConnect Event Picker to browse and select from the event catalog (Ctrl+B). See SimConnect Event Picker. If the event you pick ends in
_SETor begins withAXIS_, HangarControl follows up with a parameter editor, because those events are meaningless without a value and it is better to ask than to bind something that silently does nothing. - Monitor: Opens the Sim Monitor window to watch live simulator events and discover event names (Ctrl+D). See Sim Monitor.
- Clear: Removes the SimConnect event binding.
Event Data (optional)
Enter an integer data value to send with the event. Many events require specific data values (e.g., FLAPS_SET uses position values). Leave blank if the event doesn't require data.
Use Sim Variable as Data Value
Below the Event Data field is a checkbox reading Use Sim Variable as Data Value. Tick it and the data sent with the event is read live from the simulator at the moment the button fires, rather than being a fixed number you typed. Three fields appear:
- Source Variable (SimConnect name): The variable to read, entered by its SimConnect name, for example
PLANE HEADING DEGREES MAGNETIC - Units: The SimConnect units to read it in — degrees, number, feet, knots, Bool, and so on. Defaults to degrees
- Offset: A number added to the variable before it is sent, for example +179
HEADING_BUG_SET, tick Use Sim Variable, source PLANE HEADING DEGREES MAGNETIC in degrees, offset 0. One press and the bug snaps to wherever the nose is pointing. The same pattern works for altitude preselect, course select, and anything else that takes a value you would otherwise have to dial in by hand.
SimVar / Variable Configuration
When Action Type is SimVar / Variable:
- Variable Type: Select LVar, AVar, BVar, JVar, or Custom SimVar
- Variable Name: Enter the variable name (e.g., "L:VARIABLE_NAME")
- Action: Select Set Value, Toggle, Increment, Decrement, or Pulse
- Value: The value to use with the action
- Browse Catalog: Browse the variable catalog (Ctrl+V)
- Monitor: Watch live simulator values
- Clear: Remove the variable binding
L:Var Configuration Dialog
Whenever you pick a variable beginning with L: or A: from the SimConnect Event Picker, HangarControl does not simply drop the name into the field. It opens the L:VAR CONFIGURATION dialog, because a variable on its own does not describe what should happen to it. The dialog also opens from the Axis Binding dialog, the Conditional Action editor, and the Knobster binding dialog, so it behaves identically everywhere.
Once configured, an Edit button appears next to the event field so you can reopen the dialog without going back through the picker.
Action Mode
Six modes, selected by radio button:
| Mode | What It Does |
|---|---|
| Set Value | Writes a specific value to the variable |
| Toggle 0/1 | Flips between 0 and 1 |
| Increment | Adds the Step amount to the current value |
| Decrement | Subtracts the Step amount from the current value |
| Pulse (Momentary) | Sets the value, then returns it to 0 after the Pulse duration |
| Cycle | Steps up and wraps back to the Min limit after passing the Max limit |
Parameters
- Value: Used by Set Value and Pulse
- Step: The amount added or subtracted by Increment, Decrement, and Cycle
- Min limit / Max limit: The travel bounds for Increment, Decrement, and Cycle
- Pulse (ms): How long the value is held before Pulse resets it to 0
Use Axis Value
Ticking Use Axis Value (for axis streaming) sends the live axis position instead of the configured Value. This is required when you are binding a physical axis to an L:Var. It reveals the Axis Value Range Mapping fields:
- Min Value: What the variable receives when the axis is at 0%. Can be negative, for example -75 for a tiller at full left
- Max Value: What the variable receives at 100%, for example 75 for full right
- Positions: The number of discrete detents to divide the axis into. Leave at 0 for smooth continuous output. Set it to 3 for a condition lever that needs cutoff, low idle, and high idle and nothing in between
Conditional Execution
Ticking Enable conditional execution lets one binding send different values depending on state. Two condition types are offered and they combine with OR:
- Button condition: Choose a Button # and whether it must be Held (pressed) or Not held (released). This is how you build a modifier or shift key
- L:Var condition: Compare a variable against a value using ==, !=, >, <, >=, or <=
When the condition is met, the ALTERNATE PARAMETERS set is used instead of the normal ones. This gives you a single binding that behaves two different ways without building a full Conditional Operation.
Live Monitor and Test
The 📊 LIVE MONITOR panel shows the variable's current value, when it last changed, and its observed range, updating in real time. It requires an active SimConnect connection and says so if there isn't one.
The 🧪 TEST ACTION panel has an ▶ Execute Now button that fires the action immediately so you can watch the cockpit respond before you commit the binding. Between the monitor and the test button you can tune a variable you know nothing about entirely from inside this one dialog.
X-Plane Command Configuration
When Action Type is X-Plane Command:
- Command Name: Enter the X-Plane command path (e.g., "sim/autopilot/heading_up")
- Browse Commands: Browse the X-Plane command catalog
- Clear: Remove the command binding
X-Plane DataRef Configuration
When Action Type is X-Plane DataRef:
- DataRef Name: Enter the DataRef path
- DataRef Value: The value to write to the DataRef
- Browse DataRefs: Browse the DataRef catalog
- Clear: Remove the DataRef binding
DCS Command Configuration
When Action Type is DCS Command:
- DCS Command: The cockpit command ID from the aircraft library (e.g., "GEAR_LEVER", "MASTER_ARM_SW"). You can type directly or use Browse to search.
- Browse: Opens the DCS Command Picker to search and select commands from the aircraft library catalog for the selected aircraft.
- Clear: Remove the DCS command binding.
- Value (optional): Override the default press value. Leave blank to use the command's built-in PressValue (typically 1.0 for buttons). When Relative knob is ticked this field changes meaning entirely — see below.
- Pulse (send press + release): When checked, HangarControl sends both a press action (PressValue) and a release action (ReleaseValue) in sequence — simulating a momentary button click. When unchecked, only the press value is sent and the command stays in that position, which is correct for toggle switches and two-position switches that should stay where you put them.
- Hold while button is held (let the aircraft time the press): Some DCS switches are timed by the aircraft itself — the A-10C DMS and China Hat do one thing on a short click and something else entirely on a long hold. Normally HangarControl waits on release to work out which press type you meant, which means the sim only ever sees a short press and the switch visibly flickers. Tick this box and the command goes down the instant you press and comes back up when you let go, so DCS measures the real duration. Tick it whenever you have added a Long Press or Hold to a DCS button. Requires Pulse to be ticked, and only applies when the press type is using Single Action mode.
- Relative knob (Value above is the step per click, not the position): For DCS knobs that take an absolute position rather than a step, such as the A-10C light panel dimmers. HangarControl remembers where the knob currently sits, adds the Value each time the binding fires, and sends the result. Bind clockwise with a positive step and counter clockwise with the same step negative, both using the exact same command, so they share one remembered position. Ticking this automatically clears and disables both Pulse and Hold while button is held, because the release would write the knob straight back to zero on every click.
Ticking Relative knob reveals a Knob Travel row:
- Min: The value at one end of the knob's travel. Usually 0. Use -1 for centred controls.
- Max: The value at the other end. Usually 1. If Max is not greater than Min, HangarControl falls back to the standard 0 to 1 lever range rather than misbehaving.
- Wrap around: Ticked, passing Max continues from Min, which is what you want for rotary selectors that spin forever. Unticked, the knob stops dead at each end, which is what you want for dimmers and levers.
Automatic Setup Prompts
When you pick a command through Browse, HangarControl looks at the command's control type and offers to do the tedious part for you:
- Toggle switches: Picking a command marked
toggleasks whether you want it auto-configured as a Step cycle. Answer Yes and the press type switches to Step action mode with two steps already built, alternating between the command's ON value and its OFF value on each press. Answer No to configure it by hand. - Rotary and multiposition selectors: Picking a command marked
rotaryormultipositionasks whether an encoder (or a pair of buttons) should step it one position at a time. This prompt lives inside the picker itself, so every dialog that opens the picker behaves identically. See DCS Command Picker for how to answer it.
Automatic Toggle Setup
Pick a command through Browse whose control type is toggle and HangarControl offers to build the binding for you. A prompt appears reading:
'MASTER_ARM_SW' is a toggle switch. Would you like to auto-configure this as a Step cycle? This will create two steps that alternate between ON (1) and OFF (0) each time the button is pressed. Select 'No' to configure it manually.
The ON and OFF values shown in the prompt are the command's own PressValue and ReleaseValue read straight from the aircraft library, so they are already correct for that specific switch.
Answering Yes does all of the following to the press type you are currently editing:
- Switches the Action Mode from Single Action to Step, and the panel changes to the Step Actions list
- Clears any steps already in that list
- Adds step 1 sending the command's ON value, and step 2 sending its OFF value
- Sets Pulse to off on both steps, because a toggle switch is supposed to stay where you put it
- Empties the single action DCS Command and Value fields, since that panel is no longer the one in use
The result is one physical button that flips the cockpit switch on, then off, then on again — each press advancing the Step cycle by one.
DCS commands are aircraft-specific and require an aircraft library to be installed. Aircraft libraries are JSON files stored in %AppData%\HangarControl\DCS\AircraftLibrary\. See the DCS World Integration section for complete details.
Flag Configuration
When Action Type is Set Flag, Clear Flag, or Toggle Flag:
- Flag Name: Enter the flag name (case-insensitive)
- Clear: Remove the flag assignment
Flags are global variables within HangarControl that persist across button presses. Use flags to track state and create conditional logic between different buttons.
HC Variable Configuration
When Action Type is HC Variable:
- Variable Name: Enter the HC Variable name or click Browse to select from the HC Variable Manager list
- Action: Select the operation to perform:
- Set: Assign a specific numeric value to the variable
- Increment: Add the specified amount to the current value
- Decrement: Subtract the specified amount from the current value
- Value: The numeric value to use with the action
- Cycle Range (optional): When using Increment or Decrement, you can set a Min and Max to create automatic wrap-around cycling:
- When incrementing above Max, the value wraps back to Min
- When decrementing below Min, the value wraps back to Max
- Leave both fields empty for unbounded increment/decrement
- Browse: Opens the HC Variable picker to select from defined variables
vJoy Button / vJoy Axis Configuration
When Action Type is vJoy Button or vJoy Axis, the binding outputs to a vJoy virtual joystick device. This is useful for feeding a remapped or combined input into games that read standard joysticks. The vJoy driver must be installed and at least one virtual device configured.
- vJoy Device: Which virtual vJoy device to output to (device 1 and up)
- Type: Choose Button or Axis output
- Button Number: (Button mode) The virtual button number to press
- Axis / Value: (Axis mode) The virtual axis to drive and the value to send
Progressive Axis Configuration
When Action Type is Progressive Axis, holding the button ramps an axis value over time rather than sending a single value. This lets a momentary button act like a smoothly moving lever.
- Axis / Event: The axis target that receives the ramped value
- Ramp Time (ms): How long it takes to ramp from the current value up to the maximum while the button is held
- Max Value: The value reached at the end of the ramp
- Release Mode: What happens when you let go — Snap to Zero (jump straight back to 0), Hold Position (stay at the current value), or Ramp Down (ease back down to 0)
- Ramp Down Time (ms): When Release Mode is Ramp Down, how long the ease back to 0 takes (default 1000 ms)
Ramp Time and Ramp Down Time accept values from 50 ms to 30000 ms. Max Value accepts 0.01 to 1.0.
Run Executable Configuration
When Action Type is Run Executable, pressing the button launches an external program. This can be an application, a batch or command script, a document, or a URL. HangarControl launches it through the Windows shell, so anything you could start from the Run box or by double-clicking in Explorer will work here.
- Program / File to Launch: The full path to what you want to launch. Click Browse... to pick a file — the browser filters to programs and scripts (
.exe,.bat,.cmd,.com) by default, and you can switch it to All Files to select a document. You can also type or paste a path or a URL directly. - Arguments (optional): Command line arguments passed to the program.
- Working Directory (optional): The folder the program starts in. Leave blank to use the default.
- Window: How the program's window opens — Normal, Hidden, Minimized, or Maximized.
- Clear: Empties the program, arguments, and working directory fields.
Send Network Message Configuration
When Action Type is Send Network Message, pressing the button sends a text message over the network to another process. This is useful for driving external tools and companion applications that listen on a socket.
- Protocol: UDP or TCP. UDP fires the message and moves on. TCP opens a connection, sends the message, and closes it.
- Host: The destination address. Defaults to
127.0.0.1(this machine). Enter an IP address or hostname to reach another computer on your network. - Port: The destination port, from 1 to 65535. The action does nothing if the port is left blank or out of range.
- Payload: The text to send, transmitted as UTF-8. The field accepts multiple lines.
- Append newline (CR/LF) to payload: Adds a carriage return and line feed to the end of the payload. Many line-based listeners need this to recognize the end of a message.
Reverse Thrust Configuration
When Action Type is Reverse Thrust, HangarControl provides a dedicated step-based system for engaging and disengaging reverse thrust. Rather than trying to map reverse thrust to a single SimConnect event, the Reverse Thrust system fires a configurable sequence of commands when the button is pressed (engage) and a separate sequence when the button is released (disengage).
Click Configure Reverse Thrust to open the Reverse Thrust Configuration dialog. The dialog has three main areas:
Preset Selector
The preset dropdown at the top lets you select from built-in presets or any custom presets you have saved. Built-in presets include:
| Preset | Description |
|---|---|
| MSFS All Engines | Sends DECREASE_THROTTLE repeatedly while held, then THROTTLE_CUT on release. Works for any aircraft in MSFS with standard throttle events. |
| MSFS Engine 1 through Engine 4 | Same approach but targets individual engines (THROTTLE1_DECR / THROTTLE1_CUT, etc.) for multi-engine aircraft where you need per-engine reverse control. |
| Fenix A320 | Uses Fenix-specific LVars (L:A_FC_THROTTLE_LEFT_INPUT, L:A_FC_THROTTLE_RIGHT_INPUT) to properly sequence the reverse lever animation and behavior on the Fenix A320. |
| Custom | Starts with empty engage and disengage step lists for you to build from scratch. |
Below the preset dropdown, you can manage your presets:
- Save As Preset: Save the current configuration as a named custom preset for reuse
- Delete Preset: Remove a custom preset (built-in presets cannot be deleted)
- Export: Export the current configuration to a file for sharing
- Import: Import a reverse thrust configuration from a file
Engage Steps (on press)
This list defines the commands that fire in order when the button is pressed. Each step has:
- Command Type: SimConnect Event, LVar, B: Event, or Keyboard
- Command: The event or variable name. For SimConnect events, you can click Browse to search the event catalog.
- Value (optional): A numeric value to send with the command
- Delay After (ms): Time to wait after this step before executing the next one
- Repeat Mode:
- Fire Once: Execute the step a single time
- Hold Until Released: Repeat the command continuously at the specified interval until the button is released. This is the mode used by the MSFS presets to continuously send DECREASE_THROTTLE.
- Repeat N Times: Execute the command a fixed number of times with a configurable interval between repeats
Disengage Steps (on release)
This list defines the commands that fire when the button is released. The structure is identical to engage steps. For most setups, disengage sends a throttle cut or idle command to stop the reverse thrust.
Each step list has Add, Edit, Remove, and reorder buttons (▲ ▼) to build and arrange your sequence.
Hold Repeat Rate
When the press type is Hold, an additional field appears:
- Hold Repeat Rate (ms): How frequently the action repeats while the button is held (default: 100ms)
Advanced Options
The Advanced Options section provides conditional execution and timing controls.
Conditions
The Conditions subsection allows you to make the action conditional on simulator state. The action only executes when all conditions are met.
Enable Conditional Execution
Check this box to enable condition checking. When unchecked, the action always executes regardless of simulator state.
Condition List
The scrollable list shows all configured conditions and logic operators. Each condition displays:
- Variable: The simulator variable to check
- Operator: The comparison operator (=, ≠, <, >, ≤, ≥)
- Value: The value to compare against
- Edit: Modify the condition
- Remove: Delete the condition
Condition Action Buttons
- Add Condition: Add a new condition to the list
- AND: Add an AND operator — all connected conditions must be true
- OR: Add an OR operator — any connected condition can be true
- IF: Add an IF operator for conditional branching
- 🚩 Manage Flags: Opens the Flag Manager dialog to create and manage global flags. Flags can be used in conditions to check state set by other buttons.
Condition Retry
For held switches or buttons where conditions might become true after the initial press:
- Recheck every: How often to re-evaluate conditions while the button is held, in milliseconds (default: 1000)
- for up to: Maximum time to keep retrying, in milliseconds (default: 60000)
If the condition fails initially but the button remains held, HangarControl will re-check the conditions at the specified interval until either the conditions become true or the timeout is reached. Set to 0 to disable retry.
Timing Configuration
Configure the timing thresholds that distinguish between press types:
| Setting | Default | Description |
|---|---|---|
| Short Press Maximum (ms) | 500 | Maximum duration for a press to be considered "short" (Single Press) |
| Long Press Minimum (ms) | 1000 | Minimum duration for a press to be considered "long" (Long Press) |
| Double Tap Window (ms) | 300 | Maximum time between presses to register as a double tap |
Description
Enter an optional description for this binding. This helps document what the button does for future reference.
Footer Actions
The dialog footer contains:
- Test Binding: Execute the current action to verify it works
- Keyboard shortcuts hint: Press F2 for shortcuts
- Save All: Save all configurations and close (Ctrl+S)
- Cancel: Close without saving (Esc)
Keyboard Shortcuts
Press F2 to display the shortcuts panel:
- Ctrl+S: Save all and close
- Esc: Cancel and close
- Ctrl+1/2/3: Switch Action Type to Keyboard / SimConnect Event / SimVar
- Alt+←/→: Cycle Press Type
- Ctrl+Tab / Ctrl+Shift+Tab: Cycle Press Type forward and back
- F2: Toggle Shortcuts Help
These four only fire when the matching Action Type is selected:
- Ctrl+K: Bind Key (Keyboard / Button)
- Ctrl+Shift+K: Clear Key (Keyboard / Button)
- Ctrl+B: Browse Events (SimConnect Event)
- Ctrl+D: Discover Events / Monitor (SimConnect Event)
- Ctrl+V: Pick SimVar (SimVar / Variable)
Conditional Operations
Conditional Operations allow a single button to perform different actions based on simulator state, flag values, or other button states. This powerful feature enables context-sensitive button behavior without requiring separate button assignments.
Access the Create Conditional Operation dialog by clicking + Create Conditional Operation... in the Current Bindings Summary panel of the Button Configuration window.
How Conditional Operations Work
A conditional operation defines:
- A condition to evaluate: What state to check (flag, variable, or button)
- An action when TRUE: What to do when the condition is met
- An action when FALSE: What to do when the condition is not met
When the button is pressed, HangarControl evaluates the condition and executes the appropriate action based on the result.
Step 1: Choose Condition Type
The first step is selecting what type of condition to evaluate. Five condition types are available:
| Condition Type | Description | Use Case |
|---|---|---|
| Flag (Custom Toggle) | Check the state of a HangarControl flag | Track custom state between button presses; mode switching |
| L:Var (Local Variable) | Check the value of an aircraft-specific L:Var | React to aircraft system states (autopilot modes, switch positions) |
| A:Var (Aircraft SimVar) | Check the value of a standard SimConnect variable | React to core simulator states (gear position, flap setting) |
| Button State | Check if another hardware button is currently held | Modifier buttons; shift-key functionality |
| HC Variable | Check the numeric value of a HangarControl variable | Mode cycling, counters, multi-state logic without a simulator connection |
Some condition editors hide the MSFS-only types entirely when X-Plane is your active simulator. If you were expecting L:Var or A:Var and cannot find them in the dropdown, that is why.
Flag (Custom Toggle) Condition
Flags are custom on/off variables managed entirely within HangarControl. They persist across button presses and can be used to track modes, states, or any binary condition you define.
Selecting an Existing Flag
The Flag dropdown lists all flags that have been created. Select an existing flag to use its state as the condition.
Creating a New Flag
Click Create New Flag... to open the Flag Definition dialog where you can create a new flag.
Flag Definition Dialog
The Flag Definition dialog configures how a flag behaves:
Flag Name
Enter a unique, descriptive name for the flag (e.g., "COMBAT_MODE", "AP_ENGAGED", "SHIFT_ACTIVE"). Flag names are case-insensitive.
Flag Behavior
Choose how the flag state changes:
- Toggle (Single action toggles on/off): A single trigger alternates the flag between ON and OFF states. Press once to turn on, press again to turn off.
- On/Off (Separate actions for on and off): Different triggers explicitly set the flag ON or OFF. This allows precise control — for example, Hold sets ON, Release sets OFF.
Triggers
Triggers define what causes the flag to change state. The Triggers list shows all configured triggers for this flag. Each trigger displays a description of what it does.
Trigger Management Buttons:
- Add Trigger: Opens the Edit Trigger dialog to create a new trigger
- Quick: Hold/Release: Automatically creates two triggers — Hold sets the flag ON, Release sets it OFF (useful for momentary hold-to-activate behavior)
- Quick: Press/Release: Creates Press sets ON and Release sets OFF triggers
- ✏️ (Edit): Modify an existing trigger
- 🗑️ (Delete): Remove a trigger
Edit Trigger Dialog
The Edit Trigger dialog configures a single trigger that affects the flag:
Trigger Type
What should trigger the flag change:
- Hardware Button: A physical button press on a controller
- L:Var (Local Variable): When an L:Var reaches a specific value
- A:Var (Aircraft SimVar): When a SimVar reaches a specific value
Action
What the trigger does to the flag:
- Toggle: Flip the flag state (ON becomes OFF, OFF becomes ON)
- Set On: Explicitly set the flag to ON
- Set Off: Explicitly set the flag to OFF
Hardware Button Configuration
When Trigger Type is "Hardware Button":
- Device: Select the input device from the dropdown
- Button: Enter the button number (1-based) or click 🎮 Pick to physically press the button and have it detected automatically
- Press Type: When the trigger activates:
- Single Press
- Double Tap
- Long Press
- Release
- Hold
Variable Configuration
When Trigger Type is "L:Var" or "A:Var":
- Variable Name: Enter the variable name or click 📝 Browse to select from the catalog
- Operator: Comparison operator (==, !=, >, <, >=, <=)
- Value: The value to compare against
Preview
The Preview panel shows a summary of the trigger configuration in plain text, helping you verify the trigger is set up correctly before saving.
🚩 Manage Flags Button
The 🚩 Manage Flags button in the Flag Definition dialog header opens the Flag Manager, where you can view and edit all flags in one place. This same button also appears in the Advanced Options section of the Button Configuration window.
Flag Manager
The Flag Manager provides a central view of all defined flags:
- Flag Name: The flag identifier
- Trigger Type: What triggers the flag (Hardware, L:Var, A:Var)
- Trigger Details: Summary of the trigger configuration
- Edit: Open the Flag Definition dialog to modify the flag
- Delete: Remove the flag (with confirmation)
- Add Flag: Create a new flag
Double-click any row to edit that flag.
L:Var (Local Variable) Condition
L:Var conditions check aircraft-specific local variables. These are commonly used by complex aircraft add-ons (PMDG, FlyByWire, etc.) to track system states.
Configuration
- Variable Name: Enter the L:Var name (e.g., "A32NX_FCU_AP1_ENGAGED") or click Browse to select from the catalog
- Operator: Select the comparison operator:
- == (Equals): True when variable equals the value
- != (Not Equals): True when variable does not equal the value
- > (Greater Than): True when variable is greater than the value
- < (Less Than): True when variable is less than the value
- >= (Greater or Equal): True when variable is greater than or equal to the value
- <= (Less or Equal): True when variable is less than or equal to the value
- Value: The comparison value (typically a number)
A:Var (Aircraft SimVar) Condition
A:Var conditions check standard SimConnect aircraft variables. These are core simulator variables available for all aircraft.
Configuration
The configuration is identical to L:Var conditions:
- Variable Name: Enter the SimVar name (e.g., "GEAR_HANDLE_POSITION") or click Browse
- Operator: Select the comparison operator
- Value: The comparison value
HC Variable Condition
HC Variable conditions check the current numeric value of a variable you have defined in the HC Variable Manager. Unlike L:Var and A:Var conditions, HC Variables require no simulator connection — they are managed entirely within HangarControl and update instantly when any button modifies them.
Configuration
- Variable Name: Enter the HC Variable name or click Browse to select from the list
- Operator: Select the comparison operator (==, !=, >, <, >=, <=)
- Value: The numeric value to compare against
AP_MODE with a default of 0. One button increments it each press. A Multi-Conditional binding on another button checks the value: AP_MODE == 1 sends AP_HDG_HOLD, AP_MODE == 2 sends AP_NAV1_HOLD, AP_MODE == 3 sends AP_APR_HOLD, and AP_MODE >= 4 resets back to 0. This gives you full autopilot mode cycling on a single physical button — works on any MSFS aircraft.
Button State Condition
Button State conditions check whether another hardware button is currently being held. This enables modifier-key functionality where holding one button changes what another button does.
Configuration
- Device: Select the device containing the button to check
- Button Index: Enter the button number or click Pick to detect it by pressing the button
- Button State: What state to check:
- Held (Button must be pressed): Condition is TRUE when the specified button is currently being held down
- Not Held (Button must be released): Condition is TRUE when the specified button is not pressed
Step 3: When Condition is TRUE
Configure what happens when the condition evaluates to TRUE.
Action Type Options
| Action Type | Description |
|---|---|
| Do Nothing | No action is performed |
| Keyboard/Button | Send a keyboard chord |
| SimConnect Event | Send a SimConnect event with optional data |
| X-Plane Command | Execute an X-Plane command |
| X-Plane DataRef | Write a value to an X-Plane DataRef |
| Set Flag | Set a flag to ON |
| Clear Flag | Set a flag to OFF |
| Toggle Flag | Invert a flag's current state |
| HC Variable | Set, increment, or decrement a HangarControl numeric variable |
| DCS Command | Send a DCS World cockpit command |
Action Configuration
Based on the selected Action Type, different configuration fields appear:
Keyboard/Button:
- Keyboard Chord: Shows the current binding (or "Not Bound")
- Bind Key: Opens the key capture dialog
SimConnect Event:
- Event Name: The SimConnect event to send
- Browse: Opens the SimConnect Event Picker
- Event Data (optional): Integer data to send with the event
X-Plane Command:
- X-Plane Command: The command path to execute
- Browse: Opens the X-Plane command browser
X-Plane DataRef:
- X-Plane DataRef: The DataRef path to write
- Browse: Opens the DataRef browser
- Value to Set: The value to write to the DataRef
Set Flag / Clear Flag / Toggle Flag:
- Flag Name: The flag to modify
HC Variable:
- Variable Name: The HC Variable to modify (type it or Browse the list)
- Action: Set, Increment, or Decrement
- Value: The numeric value to use with the action
DCS Command:
- DCS Command: The cockpit command ID (type it or Browse the aircraft library)
- Value (optional): Override the command's default press value
Step 4: When Condition is FALSE
Configure what happens when the condition evaluates to FALSE. The available action types and configuration options are identical to Step 3.
Setting the FALSE action to "Do Nothing" means the button only performs an action when the condition is TRUE, with no action on FALSE.
Saving the Conditional Operation
Click Save to create the conditional operation and return to the Button Configuration window. The operation appears in the conditional operations list within the Current Bindings Summary panel.
Managing Conditional Operations
Created conditional operations appear in a scrollable list below the "Create Conditional Operation" button. Each operation shows a summary of its condition and actions.
- Edit: Reopen the operation in the Create Conditional Operation dialog to modify it
- Delete: Remove the operation
Practical Example: Autopilot Heading Mode Toggle
This example demonstrates creating a conditional operation that syncs the heading bug before engaging heading mode:
- Condition Type: L:Var (Local Variable)
- Variable Name: A32NX_FCU_HDG_MANAGED_ACTIVE
- Operator: == (Equals)
- Value: 0
- When TRUE (HDG mode is OFF): SimConnect Event "A32NX.FCU_HDG_PULL" (engages heading mode)
- When FALSE (HDG mode is ON): SimConnect Event "A32NX.FCU_HDG_PUSH" (disengages heading mode)
Now a single button intelligently toggles heading mode based on its current state.
HC Variables
HC Variables are named numeric variables managed entirely within HangarControl. Unlike simulator variables (L:Vars, A:Vars) which live inside the simulator, HC Variables are internal to HangarControl and require no simulator connection. They persist across button presses for the duration of your session and reset to their configured default values when HangarControl restarts.
What HC Variables Are For
Flags in HangarControl are binary — they are either ON or OFF. HC Variables are numeric, which means they can hold any value and support increment and decrement operations. This makes them ideal for:
- Mode cycling: One button steps through states (e.g., autopilot mode: HDG → NAV → APPR → off)
- Counters: Track how many times something has been pressed
- Multi-state logic: Condition other buttons on a value that has more than two possible states
- Simulator-agnostic logic: Build complex button behavior that works whether MSFS, DCS, or X-Plane is connected
HC Variable Manager
Open the HC Variable Manager from the Tools menu to create and manage your variables. The manager shows all defined variables with their current live values and default values.
- Name: A unique identifier for the variable (e.g., "AP_MODE", "RADIO_LAYER")
- Default Value: The numeric value the variable resets to on startup
- Current Value: The live value, updating continuously while the manager is open
Variables are listed alphabetically, each row reading as the name, its live value, its default in parentheses, and a count of its named values if it has any — for example AP_MODE = 0 (default: 0) [4 named values]. If a variable has named values defined, the live value shows as its label rather than the raw number.
| Button | Function |
|---|---|
| Add | Create a new HC Variable |
| Edit | Open the selected variable's settings to change its default, range, wrap behavior, and named values |
| Delete | Remove the selected variable, after a confirmation. This cannot be undone |
| Refresh | Reload the variable list from disk. The values themselves update on their own, so you only need this after adding or editing variables elsewhere |
| Bind Toggle | Assign a physical button to show and hide the on-screen display. See On-Screen Display below |
| Show OSD | Open the on-screen display immediately |
| Close | Close the manager. If a variable is selected when you close, that variable is handed back to whatever opened the manager — so when you reach it through a Browse button in a binding, select the one you want before closing |
Variable Settings
Adding or editing a variable opens a dialog with the following:
| Setting | Description |
|---|---|
| Variable Name | A unique identifier, converted to uppercase when the variable is created. This cannot be changed afterwards — editing an existing variable shows the name greyed out. Named value labels are uppercased the same way |
| Default Value | The value the variable resets to on startup. Defaults to 0 |
| Min (optional) | The lowest value the variable is allowed to hold. Leave blank for no lower limit |
| Max (optional) | The highest value the variable is allowed to hold. Leave blank for no upper limit |
| Wrap around (cycle min/max instead of clamping) | Controls what happens at a limit. Unchecked, the value stops at the limit. Checked, it cycles — going past Max lands on Min, and going below Min lands on Max |
| Min must be less than Max. If both are filled in and Min is equal to or greater than Max, the dialog refuses to save until you correct it. | |
| Named Values (optional) | The list of label and value pairs described below, with Add, Edit, and Remove controls |
Named Values (Enum Entries)
Each HC Variable can optionally carry a list of named values (enum entries). Each entry pairs a text Label with a numeric Value — for example, on an AP_MODE variable you might define Off = 0, HDG = 1, NAV = 2, and APPR = 3. You manage these in the enum entry list within the HC Variable Manager.
Named values make multi-state variables easier to work with. When you build an HC Variable condition, you can pick a named value from a dropdown instead of remembering which number means what, and HangarControl can display the label for the variable's current value rather than a bare number.
Each entry is added through a small dialog with two fields — Label (e.g. NAV1) and Numeric Value. The underlying storage stays numeric, so adding names to an existing variable never disturbs bindings or conditions already built against it.
Using HC Variables in Button Bindings
In the Button Configuration window, set the Action Type to HC Variable to read or modify a variable on button press. Three operations are available:
- Set: Assigns a specific value (e.g., reset AP_MODE to 0)
- Increment: Adds a value to the current total (e.g., advance to the next mode)
- Decrement: Subtracts a value from the current total
When using Increment or Decrement, you can optionally set a Min and Max value to enable automatic wrap-around cycling. When incrementing past Max the value resets to Min, and when decrementing below Min the value resets to Max. This eliminates the need for a separate reset binding — the cycle is self-contained on a single button.
On-Screen Display
The HC Variable OSD is a borderless, always-on-top overlay listing every HC Variable and its live value, updating in real time. It is the fastest way to confirm your bindings and conditions are firing the way you expect, because you can watch the values move while you fly instead of alt-tabbing back to check.
There are three ways to bring it up:
- Show OSD in the HC Variable Manager
- Bind Toggle in the HC Variable Manager, which lets you pick a physical button that toggles the overlay from then on
- By binding HC:TOGGLE_VAR_OSD yourself to any button or key. It appears in the SimConnect event picker as HC Variable OSD: Toggle On-Screen Display under the HangarControl category, and works with no simulator connected
Using the Overlay
The overlay opens near the top-left of your primary display and stays above other windows. It does not appear in the taskbar.
- Move: Drag the header strip
- Transparency: The left-hand slider in the header, from fully solid down to about a quarter opacity
- Text size: The right-hand slider in the header, from 10 to 30 point. Adjusting it fixes the overlay at its current size, after which larger text scrolls inside the window rather than growing it
- Resize: Drag the grip in the bottom-right corner
- Close: The ✕ in the header, or fire the toggle again
The overlay reads which variables exist once, when it opens, and then tracks their values live. If you create a new variable while it is up, it will not appear. Close the overlay and open it again to pick up the new list.
If no variables are defined at all, the overlay reads "No HC variables defined."
Bind Toggle
Bind Toggle opens a button picker. Press the button you want to use, and HangarControl writes a short-press binding on it that toggles the overlay. The binding is saved against your active profile, so activate the profile you want it on before binding — if no profile is active, the manager tells you so rather than saving something that would never fire.
Using HC Variables in Conditions
Select HC Variable as the Condition Type in any Conditional Operation or Multi-Conditional binding. Enter the variable name, choose a comparison operator, and enter the value to compare against. The condition evaluates instantly using the current in-memory value — no simulator event or polling is required.
Practical Example: Autopilot Mode Cycler
This example maps a single physical button to cycle through three autopilot modes in any MSFS aircraft.
- Open HC Variable Manager and create a variable named AP_MODE with a default value of 0
- Configure your cycle button with Action Type HC Variable → Increment by 1, with Min set to 0 and Max set to 3 for automatic wrap-around
- Configure your action button as a Multi-Conditional with four conditions:
- AP_MODE == 1 → SimConnect Event AP_HDG_HOLD
- AP_MODE == 2 → SimConnect Event AP_NAV1_HOLD
- AP_MODE == 3 → SimConnect Event AP_APR_HOLD
- AP_MODE >= 4 → HC Variable Set AP_MODE = 0
Each press of the cycle button advances the mode. The action button always responds to the current state. Works on any aircraft in MSFS without any L:Var or aircraft-specific configuration.
Device-Specific Configuration
Certain hardware devices have specialized configuration interfaces that provide direct access to their unique features. This section covers device-specific setup for supported hardware.
s16n Funky Coder
HangarControl has built in support for the s16n Funky Coder and the Funky Coder Plus, including both Plus revisions (the current one and the FreeJoy one). It recognizes them the moment they are plugged in, even after HangarControl has started, and marks every encoder as an encoder automatically. On the Plus, that covers all three mode switch positions. There is nothing to set up.
Open the device from Attached Devices like any other controller. The encoders show in the ENCODERS section labelled (device library), and you bind their CW and CCW buttons in the BUTTONS grid as usual. Every click produces exactly one step, at any speed. Push buttons are ordinary buttons, so Long Press, Hold and Double Tap all work on them.
Knobster
The Knobster is a dual concentric rotary encoder with a push button, designed specifically for flight simulation. It provides precise control through its inner and outer encoder rings, making it ideal for radio frequency tuning, autopilot adjustments, and other cockpit controls requiring fine and coarse adjustment.
Accessing Knobster Configuration
When a Knobster device is connected, it appears in the Controls & Devices view. Click on the Knobster entry to open its dedicated configuration window.
Configuration Window Layout
The Knobster Configuration window is divided into three main sections representing the physical controls:
OUTER ENCODER
The outer (larger) encoder ring, typically used for coarse adjustments:
- Clockwise: Action when rotating the outer ring clockwise
- Counter-CW: Action when rotating the outer ring counter-clockwise
INNER ENCODER
The inner (smaller) encoder ring, typically used for fine adjustments:
- Clockwise: Action when rotating the inner ring clockwise
- Counter-CW: Action when rotating the inner ring counter-clockwise
PUSH BUTTON
The center push button supports multiple press types:
- Press: Action when the button is pressed down
- Release: Action when the button is released
- Long Press: Action when the button is held for an extended duration
Configuring a Binding
Each control row displays the current binding (or "(not configured)" if unbound). To configure a binding:
- Click the Configure button next to the control you want to set up
- The Knobster Binding Dialog opens
- Select the action type and configure the specific action
- Optionally add conditional operations
- Click Save to confirm the binding
To remove a binding, click the ✕ (clear) button next to the control.
Knobster Binding Dialog
The binding dialog configures what happens when the selected control is activated.
Action Type
Select the type of action to perform:
| Action Type | Description |
|---|---|
| SimConnect Event | Send a SimConnect event (K:, L:, A:, B:, H: events) |
| Keyboard Shortcut | Send a keyboard key or key combination |
| X-Plane Command | Execute an X-Plane command |
| X-Plane DataRef | Write a value to an X-Plane DataRef |
| L:Var Action | Perform an action on an L:Var (set, increment, etc.) |
| Set Flag | Set a HangarControl flag to ON |
| Clear Flag | Set a HangarControl flag to OFF |
| Toggle Flag | Invert a flag's current state |
SimConnect Event Configuration
- Event / Variable: The SimConnect event to send
- Browse...: Opens the SimConnect Event Picker
- Clear: Removes the event binding
- Parameter (optional): Integer data to send with the event
Keyboard Shortcut Configuration
- Keyboard Shortcut: Displays the bound key combination
- Bind Key...: Opens the key capture dialog
- Clear: Removes the key binding
X-Plane Command Configuration
- X-Plane Command: The command path to execute
- Browse...: Opens the X-Plane command browser
- Clear: Removes the command binding
X-Plane DataRef Configuration
- X-Plane DataRef: The DataRef path to write
- Browse...: Opens the DataRef browser
- Clear: Removes the DataRef binding
- Value to Set: The value to write
L:Var Action Configuration
- L:Var Action: Shows the configured L:Var operation
- Configure...: Opens the L:Var action configuration dialog
- Clear: Removes the L:Var binding
Flag Configuration
- Select Flag: Choose an existing flag from the dropdown
- Manage Flags...: Opens the Flag Manager to create or edit flags
Conditional Operations
The Knobster Binding Dialog includes a Conditional Operations section that allows different actions based on conditions. This works identically to the conditional operations in the standard Button Configuration window.
- + Add Condition: Create a new conditional operation
- Edit: Modify an existing conditional operation
- ✕: Delete a conditional operation
When no conditional operations are configured, the default action (configured above) always executes. When conditions are present, they are evaluated first, and the default action only executes if no conditions match.
Footer Buttons
- Clear All: Remove all bindings from the Knobster (with confirmation)
- Cancel: Close the configuration window without saving changes
- Save: Save all configuration changes
Typical Knobster Configuration Example
For radio frequency tuning (e.g., COM1):
- Outer CW: COM_RADIO_WHOLE_INC (increase MHz)
- Outer CCW: COM_RADIO_WHOLE_DEC (decrease MHz)
- Inner CW: COM_RADIO_FRACT_INC (increase kHz)
- Inner CCW: COM_RADIO_FRACT_DEC (decrease kHz)
- Press: COM_STBY_RADIO_SWAP (swap active/standby)
Logitech Radio Panel
The Logitech (Saitek) Radio Panel is a dedicated flight simulation radio controller featuring two independent radio stacks, each with a 7-position mode selector, active and standby frequency displays, a dual concentric tuning encoder, and an ACT/STBY swap button. HangarControl provides full support for both display output and input control with per-mode configuration.
Accessing Logitech Radio Panel Configuration
When a Logitech Radio Panel is connected, it appears in the Controls & Devices view. Click on the Radio Panel entry to open its dedicated configuration window.
Configuration Window Layout
The configuration window displays a visual representation of the physical Radio Panel hardware, making it easy to identify and configure each control.
Device Selection
If multiple Radio Panels are connected, use the Device dropdown to select which one to configure.
- Device: Dropdown listing all connected Logitech Radio Panels
- 🔄 Refresh: Re-scan for connected devices
Preset Management
Presets allow you to save and quickly apply complete Radio Panel configurations.
- Preset: Dropdown listing saved preset configurations
- Apply: Load the selected preset onto the current device
- Save As...: Save the current configuration as a new preset (opens a dialog for name and description)
- 📁 (Open Folder): Open the presets folder in Windows Explorer
- Clear All: Remove all mode configurations from the current device (with confirmation)
Avionics Power (MSFS)
Tick Turn displays off when avionics power is off to have the panel follow the aircraft. The displays go dark while the aircraft's avionics are unpowered and come back when power returns. This is set separately for each Radio Panel and is off by default.
- Power SimVar: The variable HangarControl watches. The default,
CIRCUIT AVIONICS ON, works for most aircraft. Any SimVar can be used: a value of 0.5 or higher counts as on, so switches likeAVIONICS MASTER SWITCHand voltages likeELECTRICAL MAIN BUS VOLTAGEboth work.
Radio Panel Hardware Layout
The visual representation shows both radio stacks with all their components:
Upper Radio Stack (Stack 1)
The top row of controls on the physical panel:
- MODE SELECT: 7-position rotary switch (COM1, COM2, NAV1, NAV2, ADF, DME, XPDR)
- ACTIVE Display: Green 7-segment display showing the active frequency
- STANDBY Display: Orange 7-segment display showing the standby frequency
- TUNE Encoder: Dual concentric encoder (outer ring for coarse, inner knob for fine adjustment)
- ACT/STBY Button: Swap button to exchange active and standby frequencies
Lower Radio Stack (Stack 2)
The bottom row of controls, identical in layout to Stack 1, allowing independent operation of a second radio.
Configuration Status Legend
The mode selector positions are color-coded to show configuration status:
- Green: Mode is configured with bindings
- Gray: Mode is not configured
Configuring a Mode
Click on any mode position (COM1, COM2, NAV1, NAV2, ADF, DME, XPDR) in either stack to open the Mode Configuration dialog for that specific mode.
Mode Configuration Dialog
The dialog title shows which stack and mode you are configuring (e.g., "STACK 1 - COM1 MODE CONFIGURATION").
ACTIVE DISPLAY Section
Configure what value appears on the green Active display when this mode is selected:
- Source Type: SimVar, LVar, or Custom
- Variable: The variable name to read (dropdown with common radio variables, or type custom)
- Units: Display units (e.g., "MHz", "KHz")
- Multiplier: Value multiplier for display scaling (e.g., 100 for MHz frequencies)
- Format: How the number is drawn on the five digit display: 5, 4 or 3 digits, 1, 2 or 3 decimals, or 8.33 kHz COM. The 8.33 option shows three decimal channels such as 133.735 as 33.735, the usual convention on this panel, and works whether the variable reads in MHz, kHz or Hz
STANDBY DISPLAY Section
Configure what value appears on the orange Standby display (same options as Active Display).
ENCODER BINDINGS Section
Configure what SimConnect events are sent when the tuning encoder is rotated:
- Outer CW: Event when outer ring is rotated clockwise (coarse increase)
- Outer CCW: Event when outer ring is rotated counter-clockwise (coarse decrease)
- Inner CW: Event when inner knob is rotated clockwise (fine increase)
- Inner CCW: Event when inner knob is rotated counter-clockwise (fine decrease)
Each encoder binding has a dropdown with common radio events, or you can type a custom event name.
ACT/STBY SWAP BUTTON Section
- Swap Event: The SimConnect event sent when the ACT/STBY button is pressed
Dialog Buttons
- OK: Save the configuration and close
- Clear All: Remove all bindings for this mode
- Cancel: Close without saving changes
Smart Defaults
When configuring a mode for the first time, HangarControl automatically applies intelligent defaults based on the mode type. This means clicking on COM1 pre-populates all fields with standard COM1 radio events and variables.
| Mode | Active Display | Standby Display | Outer Encoder | Inner Encoder | Swap Event |
|---|---|---|---|---|---|
| COM1 | COM ACTIVE FREQUENCY:1 | COM STANDBY FREQUENCY:1 | COM_RADIO_WHOLE_INC/DEC | COM_RADIO_FRACT_INC/DEC | COM_STBY_RADIO_SWAP |
| COM2 | COM ACTIVE FREQUENCY:2 | COM STANDBY FREQUENCY:2 | COM2_RADIO_WHOLE_INC/DEC | COM2_RADIO_FRACT_INC/DEC | COM2_RADIO_SWAP |
| NAV1 | NAV ACTIVE FREQUENCY:1 | NAV STANDBY FREQUENCY:1 | NAV1_RADIO_WHOLE_INC/DEC | NAV1_RADIO_FRACT_INC/DEC | NAV1_RADIO_SWAP |
| NAV2 | NAV ACTIVE FREQUENCY:2 | NAV STANDBY FREQUENCY:2 | NAV2_RADIO_WHOLE_INC/DEC | NAV2_RADIO_FRACT_INC/DEC | NAV2_RADIO_SWAP |
| ADF | ADF ACTIVE FREQUENCY:1 | ADF STANDBY FREQUENCY:1 | ADF_100_INC/DEC | ADF_10_INC/DEC | ADF1_RADIO_SWAP |
| DME | NAV DME:1 | (none) | (none) | (none) | TOGGLE_DME |
| XPDR | TRANSPONDER CODE:1 | (none) | XPNDR_1000_INC / XPNDR_100_INC | XPNDR_10_INC / XPNDR_1_INC | XPNDR_IDENT_ON |
Common SimVar Variables
The Variable dropdown includes these commonly-used radio SimVars:
- COM ACTIVE FREQUENCY:1 / COM STANDBY FREQUENCY:1
- COM ACTIVE FREQUENCY:2 / COM STANDBY FREQUENCY:2
- NAV ACTIVE FREQUENCY:1 / NAV STANDBY FREQUENCY:1
- NAV ACTIVE FREQUENCY:2 / NAV STANDBY FREQUENCY:2
- ADF ACTIVE FREQUENCY:1 / ADF STANDBY FREQUENCY:1
- TRANSPONDER CODE:1
- DME NAV RADIAL:1 / DME DISTANCE:1
Common SimConnect Events
The Encoder and Swap Event dropdowns include these commonly-used events:
- COM1: COM_RADIO_WHOLE_INC, COM_RADIO_WHOLE_DEC, COM_RADIO_FRACT_INC, COM_RADIO_FRACT_DEC, COM_STBY_RADIO_SWAP
- COM2: COM2_RADIO_WHOLE_INC, COM2_RADIO_WHOLE_DEC, COM2_RADIO_FRACT_INC, COM2_RADIO_FRACT_DEC, COM2_RADIO_SWAP
- NAV1: NAV1_RADIO_WHOLE_INC, NAV1_RADIO_WHOLE_DEC, NAV1_RADIO_FRACT_INC, NAV1_RADIO_FRACT_DEC, NAV1_RADIO_SWAP
- NAV2: NAV2_RADIO_WHOLE_INC, NAV2_RADIO_WHOLE_DEC, NAV2_RADIO_FRACT_INC, NAV2_RADIO_FRACT_DEC, NAV2_RADIO_SWAP
- ADF: ADF_100_INC, ADF_100_DEC, ADF_10_INC, ADF_10_DEC, ADF1_RADIO_SWAP
- XPDR: XPNDR_1000_INC, XPNDR_1000_DEC, XPNDR_100_INC, XPNDR_100_DEC, XPNDR_10_INC, XPNDR_10_DEC, XPNDR_1_INC, XPNDR_1_DEC, XPNDR_IDENT_ON
- DME: TOGGLE_DME
Footer Buttons
- OK: Save all changes and close the configuration window
- Cancel: Close without saving changes
Working with Multiple Radio Panels
If you have multiple Logitech Radio Panels connected, each is enumerated separately and can be configured independently. Use the Device dropdown to switch between panels. Each panel maintains its own configuration.
Logitech Multi-Panel
The Logitech (Saitek) Multi-Panel is an autopilot control unit featuring a 5-position mode selector, dual 5-digit 7-segment displays, a rotary encoder, eight autopilot function buttons with LEDs, an auto throttle arm switch, a flaps rocker switch, and a pitch trim wheel. HangarControl provides full support for display output, LED feedback, and input control with per-mode configuration.
Accessing Multi-Panel Configuration
When a Logitech Multi-Panel is connected, it appears in the Controls & Devices view. Click on the Multi-Panel entry to open its dedicated configuration window.
Configuration Window Layout
The configuration window displays a visual representation of the physical Multi-Panel hardware, making it easy to identify and configure each control.
Device Selection
- Device: Dropdown listing all connected Logitech Multi-Panels
- Enabled: Checkbox to enable/disable the device for the current profile
Preset Management
Presets allow you to save and quickly apply complete Multi-Panel configurations.
- Preset: Dropdown listing saved preset configurations
- Load: Apply the selected preset to the current device
- Save: Save the current configuration as a new preset (opens a dialog for name and description)
- Export: Export the current device configuration to a JSON file for sharing
- Import: Import a preset from an external JSON file
Multi-Panel Hardware Layout
The visual representation shows all controls on the panel:
Mode Selector (Left Side)
A 5-position rotary switch that determines which values are shown on the displays and which SimConnect events the encoder controls:
- ALT: Altitude mode - displays and controls altitude settings
- VS: Vertical Speed mode - displays and controls vertical speed settings
- IAS: Indicated Airspeed mode - displays and controls speed settings
- HDG: Heading mode - displays and controls heading bug settings
- CRS: Course mode - displays and controls course/OBS settings
Display Area
The display contains two rows of 5-digit 7-segment displays:
- Top Row: Primary value display (typically current or target value)
- Bottom Row: Secondary value display (can show related value or dashes)
Main Encoder Knob
The large rotary encoder adjusts values based on the current mode. Clockwise and counter-clockwise rotations can be bound to different SimConnect events, keyboard shortcuts, or X-Plane commands.
Function Buttons
Eight illuminated buttons for autopilot functions:
| Button | Description | LED Mask Bit |
|---|---|---|
| AP | Autopilot Master | Bit 0 (0x01) |
| HDG | Heading Hold | Bit 1 (0x02) |
| NAV | Navigation Hold | Bit 2 (0x04) |
| IAS | Airspeed Hold | Bit 3 (0x08) |
| ALT | Altitude Hold | Bit 4 (0x10) |
| VS | Vertical Speed Hold | Bit 5 (0x20) |
| APR | Approach Mode | Bit 6 (0x40) |
| REV | Backcourse/Reverse | Bit 7 (0x80) |
Toggle Switches
- Auto Throttle (ARM/OFF): Two-position toggle for auto throttle engagement
- Flaps (UP/DN): Rocker switch for flap control
- Pitch Trim Wheel: Rotary input for pitch trim adjustment
Configuring Modes
Click on the display area or mode selector knob to open the Mode Configuration dialog. This dialog uses a tabbed interface with one tab per mode (ALT, VS, IAS, HDG, CRS).
Mode Configuration Options
Each mode has the following configuration options:
Top Row Display
- SimVar: The simulator variable to display (use the picker button to browse)
- Units: Display units (number, feet, feet per minute, knots, degrees)
Bottom Row Display
- SimVar: The simulator variable to display
- Units: Display units
- Show dashes instead of value: When checked, displays dashes instead of a numeric value
Encoder Bindings
- Clockwise Action: Action triggered when encoder is rotated clockwise
- Counter-Clockwise Action: Action triggered when encoder is rotated counter-clockwise
Encoder actions support SimConnect events, keyboard shortcuts, and X-Plane commands.
Configuring Buttons
Click any function button (AP, HDG, NAV, IAS, ALT, VS, APR, REV) to open its configuration dialog.
Button Configuration Options
- Button Action: The action to perform when the button is pressed (SimConnect event, keyboard shortcut, or X-Plane command)
- LED Feedback: Enable to have the button LED reflect a SimVar state
- LED Source: The SimVar that controls LED illumination
- LED Threshold: The value above which the LED illuminates (default: 0.5)
Configuring Switches
Click on the Auto Throttle, Flaps, or Pitch Trim controls to configure their actions.
Auto Throttle Switch
Configure separate actions for ARM (on) and OFF positions.
Flaps Switch
Configure separate actions for UP and DOWN positions.
Pitch Trim Wheel
Configure separate actions for UP (nose up) and DOWN (nose down) rotation, similar to encoder bindings.
Built-in Presets
| Preset | Description |
|---|---|
| Custom (Blank) | Empty configuration - configure everything manually |
| MSFS Default (Generic) | Default configuration for MSFS generic aircraft with standard autopilot SimVars and events |
MSFS Default Preset Details
| Mode | Top Display | Bottom Display | Encoder CW/CCW |
|---|---|---|---|
| ALT | AUTOPILOT ALTITUDE LOCK VAR | AUTOPILOT VERTICAL HOLD VAR | AP_ALT_VAR_INC/DEC |
| VS | AUTOPILOT ALTITUDE LOCK VAR | AUTOPILOT VERTICAL HOLD VAR | AP_VS_VAR_INC/DEC |
| IAS | AIRSPEED INDICATED | AUTOPILOT AIRSPEED HOLD VAR | AP_SPD_VAR_INC/DEC |
| HDG | PLANE HEADING DEGREES MAGNETIC | AUTOPILOT HEADING LOCK DIR | HEADING_BUG_INC/DEC |
| CRS | NAV RADIAL:1 | NAV OBS:1 | VOR1_OBI_INC/DEC |
Default Button Bindings (MSFS Generic)
| Button | Event | LED Source |
|---|---|---|
| AP | AP_MASTER | AUTOPILOT MASTER |
| HDG | AP_HDG_HOLD | AUTOPILOT HEADING LOCK |
| NAV | AP_NAV1_HOLD | AUTOPILOT NAV1 LOCK |
| IAS | AP_AIRSPEED_HOLD | AUTOPILOT AIRSPEED HOLD |
| ALT | AP_ALT_HOLD | AUTOPILOT ALTITUDE LOCK |
| VS | AP_VS_HOLD | AUTOPILOT VERTICAL HOLD |
| APR | AP_APR_HOLD | AUTOPILOT APPROACH HOLD |
| REV | AP_BC_HOLD | AUTOPILOT BACKCOURSE HOLD |
Export and Import
Multi-Panel configurations can be exported and imported as JSON files for sharing or backup.
Exporting a Configuration
- Configure your Multi-Panel as desired
- Click Export in the preset controls
- Choose a location and filename for the JSON file
- Click Save
Importing a Configuration
- Click Import in the preset controls
- Browse to and select a Multi-Panel preset JSON file
- Click Open
- The preset is added to your preset list and can be loaded onto any device
Display Formatting Notes
- Heading display: Shows 360 for north instead of 000 (aviation convention)
- Vertical speed: Includes negative sign for descent rates
- All values: Right-aligned with leading spaces, 5 digits maximum
Working with Multiple Multi-Panels
If you have multiple Logitech Multi-Panels connected, each is enumerated separately and can be configured independently. Use the Device dropdown to switch between panels. Each panel maintains its own configuration within the current profile.
RotAIR Encoders
RotAIR encoders are precision dual concentric rotary encoders designed for flight simulation. Each RotAIR unit contains four independent encoder stations, with each station featuring an outer ring, inner knob, and push button. HangarControl provides dedicated HID-based handling for RotAIR devices, bypassing DirectInput for improved reliability and responsiveness.
Supported RotAIR Models
HangarControl supports the following RotAIR encoder variants:
| Model | Variant | Encoder Labels |
|---|---|---|
| RotAIR Type-1 | GC | NAV/COM, HDG, CRS, ADF |
| RotAIR Type-1 | ANA | NAV/COM, HDG, CRS, ADF |
| RotAIR Type-2 | ANA | FMS, RANGE, BARO, ALT |
| RotAIR Type-2 | GC | FMS, RANGE, BARO, ALT |
Accessing RotAIR Configuration
When a RotAIR encoder is connected, it appears in the Controls & Devices view. Click on the RotAIR entry to open its dedicated configuration window.
Configuration Window Layout
The RotAIR configuration window uses a tabbed interface with one tab per encoder station. The header displays the device name (e.g., "ROTAIR TYPE-1 GC").
Encoder Tabs
Each RotAIR unit has four encoder tabs:
- Encoder 1: First encoder station (NAV/COM or FMS depending on model)
- Encoder 2: Second encoder station (HDG or RANGE)
- Encoder 3: Third encoder station (CRS or BARO)
- Encoder 4: Fourth encoder station (ADF or ALT)
Click a tab to view and configure that encoder's bindings.
Encoder Station Controls
Each encoder station has three sections:
OUTER ENCODER
The outer ring of the dual concentric encoder:
- Clockwise: Action when rotating the outer ring clockwise
- Counter-CW: Action when rotating the outer ring counter-clockwise
INNER ENCODER
The inner knob of the dual concentric encoder:
- Clockwise: Action when rotating the inner knob clockwise
- Counter-CW: Action when rotating the inner knob counter-clockwise
PUSH BUTTON
The push button in the center of the encoder:
- Press: Action when the button is pressed down
- Release: Action when the button is released
- Long Press: Action when the button is held for an extended duration
Configuring a Binding
Each control row displays the current binding (or "(not configured)" if unbound). To configure:
- Click the Configure button next to the control
- The Binding Dialog opens
- Select the action type and configure the specific action
- Optionally add conditional operations
- Click Save to confirm
To clear a binding, click the ✕ button next to the control.
Binding Dialog
The binding dialog configures what happens when a control is activated.
Action Type
Select the type of action to perform:
| Action Type | Description |
|---|---|
| SimConnect Event | Send a SimConnect event with optional data parameter |
| Keyboard Shortcut | Send a keyboard key or key combination |
| X-Plane Command | Execute an X-Plane command |
| X-Plane DataRef | Write a value to an X-Plane DataRef |
| L:Var Action | Perform an action on an L:Var |
| Set Flag | Set a HangarControl flag to ON |
| Clear Flag | Set a HangarControl flag to OFF |
| Toggle Flag | Invert a flag's current state |
SimConnect Event Configuration
- SimConnect Event: The event to send
- Browse...: Opens the SimConnect Event Picker
- Clear: Removes the binding
- Event Data (optional): Integer parameter to send with the event
Keyboard Shortcut Configuration
- Keyboard Shortcut: Displays the bound key
- Record...: Opens the key capture dialog
- Clear: Removes the binding
X-Plane Command Configuration
- X-Plane Command: The command path
- Browse...: Opens the command browser
- Clear: Removes the binding
X-Plane DataRef Configuration
- X-Plane DataRef: The DataRef path
- Browse...: Opens the DataRef browser
- Clear: Removes the binding
- Value to Set: The value to write
L:Var Action Configuration
- L:Var Action: Shows the configured operation
- Configure...: Opens the L:Var configuration dialog
- Clear: Removes the binding
Flag Configuration
- Flag Name: The flag to modify
- Select...: Opens the flag selection dialog
- Clear: Removes the binding
Conditional Operations
The binding dialog includes a Conditional Operations section for context-sensitive behavior:
- + Add Condition: Create a new conditional operation
- Edit: Modify an existing conditional operation
- ✕: Delete a conditional operation
When no conditions are configured, the default action always executes. When conditions exist, they are evaluated first.
Footer Buttons
- Clear All: Remove all bindings from all encoders on this device
- Cancel: Close without saving changes
- Save: Save all configuration changes and restart the encoder runtime
Typical RotAIR Type-1 Configuration
Example configuration for the Type-1 (NAV/COM, HDG, CRS, ADF) unit:
Encoder 1 (NAV/COM):
- Outer CW: COM_RADIO_WHOLE_INC
- Outer CCW: COM_RADIO_WHOLE_DEC
- Inner CW: COM_RADIO_FRACT_INC
- Inner CCW: COM_RADIO_FRACT_DEC
- Press: COM_STBY_RADIO_SWAP
Encoder 2 (HDG):
- Outer CW: HEADING_BUG_INC
- Outer CCW: HEADING_BUG_DEC
- Inner CW: HEADING_BUG_INC (fine)
- Inner CCW: HEADING_BUG_DEC (fine)
- Press: AP_HDG_HOLD
Encoder 3 (CRS):
- Outer CW: VOR1_OBI_INC
- Outer CCW: VOR1_OBI_DEC
- Inner CW: VOR1_OBI_INC (fine)
- Inner CCW: VOR1_OBI_DEC (fine)
- Press: NAV1_RADIO_SWAP
Encoder 4 (ADF):
- Outer CW: ADF_100_INC
- Outer CCW: ADF_100_DEC
- Inner CW: ADF_10_INC
- Inner CCW: ADF_10_DEC
- Press: ADF1_RADIO_SWAP
Typical RotAIR Type-2 Configuration
Example configuration for the Type-2 (FMS, RANGE, BARO, ALT) unit:
Encoder 1 (FMS):
- Outer CW: GPS_GROUP_KNOB_INC
- Outer CCW: GPS_GROUP_KNOB_DEC
- Inner CW: GPS_PAGE_KNOB_INC
- Inner CCW: GPS_PAGE_KNOB_DEC
- Press: GPS_CURSOR_BUTTON
Encoder 2 (RANGE):
- Outer CW: G1000_MFD_RANGE_INC
- Outer CCW: G1000_MFD_RANGE_DEC
- Press: G1000_MFD_PUSH_BUTTON
Encoder 3 (BARO):
- Outer CW: KOHLSMAN_INC
- Outer CCW: KOHLSMAN_DEC
- Press: BAROMETRIC_STD_PRESSURE
Encoder 4 (ALT):
- Outer CW: AP_ALT_VAR_INC
- Outer CCW: AP_ALT_VAR_DEC
- Inner CW: AP_VS_VAR_INC
- Inner CCW: AP_VS_VAR_DEC
- Press: AP_ALT_HOLD
WingFlex FCU CUBE
The WingFlex A320 FCU CUBE is a compact Airbus-style Flight Control Unit featuring four 7-segment displays, six annunciator LEDs, four rotary encoders with push functionality, and managed mode indicators. HangarControl provides full configuration support for all hardware features.
Hardware Features
| Feature | Description |
|---|---|
| Displays | Four 7-segment displays for SPD, HDG, ALT, and V/S values |
| Annunciator LEDs | AP1, AP2, A/THR, LOC, APPR, and EXPED indicators |
| Encoders | Four rotary encoders (SPD, HDG, ALT, V/S) with push buttons |
| Managed Dots | Visual indicators for SPD, HDG, and ALT managed modes |
| Brightness | Adjustable display and LED brightness levels |
Accessing WingFlex Configuration
When a WingFlex FCU CUBE is connected, it appears in the Controls & Devices view. Click on the WingFlex FCU CUBE entry to open the dedicated configuration window.
Configuration Window Overview
The WingFlex FCU CUBE Configuration window provides access to all device features:
- Preset Selection and Management
- Display Bindings
- LED Indicator Bindings
- Encoder Bindings
- Test Mode and Brightness Controls
Preset System
Presets allow you to quickly configure the FCU CUBE for different aircraft. HangarControl includes several built-in presets:
| Preset | Description |
|---|---|
| Generic (MSFS Default) | Uses standard MSFS SimVars for autopilot displays and indicators. Compatible with most default aircraft. |
| Fenix A320 | Configured for Fenix A320 LVars (N_FCU_* for displays, I_FCU_* for LEDs) |
| FlyByWire A32NX | Configured for FlyByWire A32NX LVars |
| iniBuilds A320neo | Configured for iniBuilds A320neo LVars |
| Custom | Blank slate for manual configuration |
Creating Custom Presets
Set up your display bindings, LED bindings, and encoder actions as desired.
Click the 💾 Save button in the Preset area. Enter a name for your preset in the dialog that appears.
Your saved preset will appear in the Preset dropdown with a 📁 icon. Select it anytime to load your configuration.
Exporting and Importing Presets
Use the Export button to save your preset as a JSON file for backup or sharing. Use the Import button to load a preset from a JSON file.
Deleting User Presets
Select a user-created preset (marked with 📁) and click the Delete button to remove it. Built-in presets cannot be deleted.
Configuring Display Bindings
Each of the four displays (SPD, HDG, ALT, V/S) can be bound to a SimVar or LVar to show real-time autopilot values.
In the Display Bindings section, click the Configure button next to the display you want to set up (SPD, HDG, ALT, or V/S).
Choose SimVar for standard MSFS variables or LVar for aircraft-specific local variables.
Enter the variable name. For SimVars, examples include AUTOPILOT AIRSPEED HOLD VAR or AUTOPILOT HEADING LOCK DIR. For LVars, use aircraft-specific names like N_FCU_SPEED (Fenix) or A32NX_AUTOPILOT_SPEED_SELECTED (FBW).
Specify units if needed (e.g., "knots", "feet") and adjust the multiplier if the raw value needs scaling.
Configuring LED Bindings
The six annunciator LEDs (AP1, AP2, A/THR, LOC, APPR, EXPED) can be bound to SimVars or LVars to illuminate based on autopilot state.
In the LED Indicators section, click the Configure button next to the LED you want to set up.
Choose SimVar or LVar and enter the variable name. For example, AUTOPILOT MASTER for AP1/AP2, or I_FCU_AP1 for Fenix.
The threshold determines when the LED turns on. Default is 0.5, meaning the LED illuminates when the value exceeds 0.5. Adjust as needed for your aircraft.
Enable Invert if you need the LED to be ON when the value is below the threshold instead of above.
Configuring Encoder Bindings
Each encoder (SPD, HDG, ALT, V/S) supports three actions: clockwise rotation, counter-clockwise rotation, and push button.
Click on an encoder in the Encoder Bindings section to open the encoder configuration dialog.
Set the action for clockwise and counter-clockwise rotation. Common examples:
- SPD: AP_SPD_VAR_INC / AP_SPD_VAR_DEC
- HDG: HEADING_BUG_INC / HEADING_BUG_DEC
- ALT: AP_ALT_VAR_INC / AP_ALT_VAR_DEC
- V/S: AP_VS_VAR_INC / AP_VS_VAR_DEC
Set the action for pressing the encoder. This is typically used for pull/push functionality (e.g., selecting managed vs. selected mode in Airbus aircraft).
Test Mode
Click the Test Mode button to verify your hardware is working correctly. Test mode will:
- Set all displays to show "888" patterns
- Illuminate all six annunciator LEDs
- Turn on all managed mode dots
- Set brightness to maximum
This helps confirm all display segments and LEDs are functioning properly.
Brightness Control
Adjust the display and LED brightness using the sliders in the configuration window. Brightness settings are saved with your profile.
WingFlex A320 RMP
The WingFlex A320 RMP (Radio Management Panel) is a dedicated radio tuning panel featuring dual frequency displays, mode selection buttons with indicator LEDs, a dual-ring rotary encoder, and selector switches for transponder and TCAS modes. HangarControl provides full modal radio support where pressing a mode button instantly switches what the displays show and what the encoder controls.
Hardware Features
| Feature | Description |
|---|---|
| Displays | Two 6-digit LCD panels showing Active and Standby/CRS frequencies |
| Mode Buttons | VHF1, VHF2, VHF3, HF1, HF2, NAV, VOR, ILS, GLS, MLS, ADF, ATC — each with an indicator LED |
| Dual Encoder | Outer ring (coarse/MHz adjustment) and inner knob (fine/kHz adjustment) with push button |
| Transfer Button | Swaps active and standby frequencies for the current radio mode |
| Selector Switches | MODE SELECTOR (STBY/ON/AUTO) and TCAS MODE (STBY/TA/TA-RA) |
| Additional Buttons | LOAD, SEL, ATC MSG, AUTO LAND, IDENT, Power ON/OFF |
| LEDs | 17 individual LEDs for mode indication, transfer, ATC MSG, and AUTO LAND |
| Brightness | Independent LCD and backlight brightness controls |
Accessing RMP Configuration
When a WingFlex A320 RMP is connected, it appears in the Controls & Devices view as "WingFlex A320 RMP". Click on it to open the dedicated configuration window.
Configuration Window Overview
The RMP Configuration window provides access to all device features:
- Preset Selection and Management
- Radio Mode Definitions (display variables, encoder events, transfer events)
- Button Bindings (left-click any button)
- LED Bindings (click any triangle LED indicator)
- Encoder Bindings (click the outer or inner encoder ring)
- Mode Editor (right-click any mode button)
- Test Mode and Brightness Controls
Radio Mode System
The RMP operates as a modal device. Pressing a mode button (VHF1, VHF2, VHF3, NAV, VOR, ILS, ADF, ATC) switches the entire panel's behavior:
- The displays update to show the active and standby frequencies for the selected radio
- The encoder fires the appropriate increment/decrement events for that radio
- The transfer button swaps active/standby for that radio
- The mode LED illuminates to show which mode is active
The default mode on startup is VHF1 (COM1). Modes are pre-configured with standard MSFS SimConnect events and SimVars in the Generic preset.
Default Mode Mappings (Generic MSFS Preset)
| Mode | Active Display SimVar | Standby Display SimVar | Encoder Events | Transfer Event |
|---|---|---|---|---|
| VHF1 | COM ACTIVE FREQUENCY:1 | COM STANDBY FREQUENCY:1 | COM_RADIO_WHOLE / COM_RADIO_FRACT | COM_STBY_RADIO_SWAP |
| VHF2 | COM ACTIVE FREQUENCY:2 | COM STANDBY FREQUENCY:2 | COM2_RADIO_WHOLE / COM2_RADIO_FRACT | COM2_RADIO_SWAP |
| VHF3 | COM ACTIVE FREQUENCY:3 | COM STANDBY FREQUENCY:3 | COM3_RADIO_WHOLE / COM3_RADIO_FRACT | COM3_RADIO_SWAP |
| NAV | NAV ACTIVE FREQUENCY:1 | NAV STANDBY FREQUENCY:1 | NAV1_RADIO_WHOLE / NAV1_RADIO_FRACT | NAV1_RADIO_SWAP |
| VOR | NAV ACTIVE FREQUENCY:1 | NAV STANDBY FREQUENCY:1 | NAV1_RADIO_WHOLE / NAV1_RADIO_FRACT | NAV1_RADIO_SWAP |
| ILS | NAV ACTIVE FREQUENCY:1 | NAV STANDBY FREQUENCY:1 | NAV1_RADIO_WHOLE / NAV1_RADIO_FRACT | NAV1_RADIO_SWAP |
| ADF | ADF ACTIVE FREQUENCY:1 | ADF STANDBY FREQUENCY:1 | ADF_100 / ADF_1 | ADF1_RADIO_SWAP |
| ATC | TRANSPONDER CODE:1 | (none — standby display blanks) | XPNDR_1000 / XPNDR_100 (see below) | XPNDR_IDENT_ON |
Transponder (ATC) Mode
The ATC mode provides dedicated transponder control with a digit-page toggle feature. Because transponder codes have four independent digits and the RMP has only two encoder rings, the encoder push button toggles between two digit pages:
- Default page: Outer ring controls the 1000s digit, inner ring controls the 100s digit
- Alt page (push encoder to toggle): Outer ring controls the 10s digit, inner ring controls the 1s digit
When the alt page is active, the TRANSFER LED illuminates as a visual indicator. Push the encoder again to return to the default page. The transponder code is displayed as a 4-digit value on the active display, with the standby display blanked since transponders do not have a standby code.
Pressing the Transfer button in ATC mode fires XPNDR_IDENT_ON to trigger the transponder ident function.
Editing Mode Definitions
Right-click any mode button (VHF1, VHF2, VHF3, HF1, HF2, NAV, VOR, ILS, GLS, MLS, ADF, ATC) to open the Mode Editor dialog. This allows you to customize:
- Source Type: SimVar, LVar, or Constant
- Active Frequency Variable: The SimVar or LVar shown on the active display
- Standby Frequency Variable: The SimVar or LVar shown on the standby display
- Units: mhz, khz, or number
- Display Format: Frequency (6-digit with decimal) or Code (4-digit integer like transponder codes)
- Encoder Events: SimConnect events for upper CW/CCW and lower CW/CCW
- Transfer Event: SimConnect event fired when pressing the Transfer button in this mode
Changes made in the Mode Editor take effect after clicking Save in the editor and then Save Config in the main window.
N_RMP1_ACTIVE_FREQ instead of COM ACTIVE FREQUENCY:1. Right-click the VHF1 button, change Source Type to LVar, and enter the Fenix-specific variable names.
Encoder Priority
If you manually bind an action to the encoder through the encoder configuration dialog (click the encoder rings), your manual binding takes priority over the mode system's default events. If no manual binding exists, the mode system handles the encoder automatically. This lets you override specific modes while keeping the defaults for others.
Transfer Button Priority
The same priority applies to the Transfer button. If you bind a custom action to the Transfer button via the button binding dialog (left-click), your binding takes priority. If no custom binding exists, the Transfer button fires the current mode's swap event.
Preset System
Presets configure the static frequency bindings and LED bindings. The radio mode definitions persist independently of the preset selection, so switching presets does not remove your mode configurations.
| Preset | Description |
|---|---|
| Generic (MSFS Default) | Standard MSFS SimVars for COM, NAV, and ADF radios. Compatible with most default aircraft. |
| Custom | Clears frequency and LED bindings for manual configuration. Mode definitions are preserved. |
Creating, Exporting, and Importing Presets
Use the toolbar buttons to Save your current configuration as a named preset, Export it as a JSON file for sharing or backup, Import a preset from a JSON file, or Delete a user-created preset. Built-in presets cannot be deleted.
Configuring Button Bindings
Left-click any button on the panel layout to open the standard button binding dialog. Every button on the RMP supports single press, long press, and release actions. Mode buttons (VHF1, NAV, ATC, etc.) automatically switch the radio mode when pressed, and additionally fire any user-configured button bindings.
Configuring LED Bindings
Click any green triangle LED indicator above a button to open the LED binding dialog. Each LED can be driven by a SimVar or LVar with configurable threshold and invert options. Note that mode LEDs (VHF1, NAV, etc.) are automatically managed by the mode system to indicate which mode is currently active. You can still add LED bindings to override this behavior if needed.
Configuring Encoder Bindings
Click the outer ring or inner knob of the encoder to open the encoder configuration dialog. Each encoder ring supports CW, CCW, and push actions. When mode definitions are active, encoder events are handled automatically by the mode system. Manual encoder bindings take priority over mode defaults.
Display Bindings
Click the Active or Standby display to manually configure a static frequency binding. When a radio mode is active, the mode's display variables take priority over static bindings. Static bindings serve as a fallback when no mode is defined.
Test Mode
Click the Test button to verify hardware functionality. Test mode will:
- Set both displays to show "888.888" patterns
- Illuminate all 17 LEDs
- Enable both LCD panels
- Set brightness to maximum
This helps confirm all display segments and LEDs are functioning properly.
Brightness Control
Use the LCD and Backlight sliders in the toolbar to adjust display brightness in real-time. Changes are pushed to the hardware immediately and saved with your profile configuration.
Profile Switching
When switching to a profile that does not include the RMP, the device automatically blanks all displays, turns off all LEDs, and sets brightness to zero. This prevents stale data from remaining visible on the hardware.
WinWing
WinWing produces high-quality Airbus-style flight simulation panels. HangarControl provides comprehensive support for WinWing hardware with live display output, encoder input handling, button binding, and brightness control. The configuration interface offers a visual representation of your panel layout for intuitive setup.
Currently Supported WinWing Devices
HangarControl currently supports the following WinWing hardware:
- WinWing FCU (Flight Control Unit): The Airbus-style autopilot panel with SPD, HDG, ALT, and V/S displays and encoders
- WinWing EFIS-L (Left EFIS Panel): Captain-side EFIS with QNH display, baro encoder, and mode buttons
- WinWing EFIS-R (Right EFIS Panel): First Officer-side EFIS with identical functionality
- WinWing PAP-3 MCP (Mode Control Panel): Boeing 737-style MCP with IAS/MACH, HDG, ALT, V/S displays, dual course displays (CPT/F/O), and full autopilot button panel
Accessing WinWing Configuration
When a WinWing FCU is connected, it appears in the Controls & Devices view. Click on the WinWing FCU entry to open the dedicated configuration window.
Configuration Window Overview
The WinWing FCU Configuration window is divided into several sections, from top to bottom:
- Preset & EFIS Panel Selection
- Brightness Controls
- Brightness Control Bindings
- EFIS Baro Brightness Override
- Visual Panel Layout (FCU + optional EFIS panels)
- Autopilot Controls
- Binding Summary
- Footer Actions
Preset & EFIS Panel Selection
The top toolbar provides preset management and EFIS panel configuration.
Presets
HangarControl includes built-in presets that configure displays and encoder bindings for common aircraft:
| Preset | Description |
|---|---|
| MSFS Default (GA/Airliners) | Standard SimConnect events for generic aircraft. Works with most default and add-on aircraft in MSFS. |
| Airbus A320 (Fenix) | Configured for the Fenix A320, using aircraft-specific LVars for accurate FCU display readings. |
User-created presets appear in the dropdown with a 📄 icon prefix.
Preset Management Buttons
- 💾 Save: Save the current configuration as a named preset
- 📂 Load: Load a previously saved preset
- 📤 Export: Export a preset to a JSON file for backup or sharing
- 📥 Import: Import a preset from a JSON file
EFIS Panel Selection
Configure which EFIS panels are connected and should be displayed in the visual layout:
- Left checkbox: Enable/disable Left EFIS panel display
- Right checkbox: Enable/disable Right EFIS panel display
- 🔍 Auto-Detect: Automatically detect connected EFIS panels and check the appropriate boxes
Brightness Controls
Adjust the brightness of your WinWing panel displays and button backlights directly from HangarControl.
FCU Brightness
- Display: Slider controlling FCU 7-segment display brightness (0-100%)
- Buttons: Slider controlling FCU button backlight brightness (0-100%)
EFIS Brightness
- Display: Slider controlling EFIS panel display brightness (0-100%)
- Buttons: Slider controlling EFIS panel button backlight brightness (0-100%)
Changes take effect immediately as you move the sliders.
Brightness Control Bindings
Bind physical controls to adjust brightness dynamically during flight. This allows you to adjust panel brightness without leaving the cockpit view.
Binding Targets
Four independent brightness channels can be bound:
| Target | Description |
|---|---|
| FCU Display | Controls FCU 7-segment display brightness |
| FCU Buttons | Controls FCU button backlight brightness |
| EFIS Display | Controls EFIS panel display brightness |
| EFIS Buttons | Controls EFIS panel button backlight brightness |
Click the Bind... button next to each target to open the Brightness Binding dialog.
Brightness Binding Dialog
The dialog offers two binding modes:
Button Mode
Use buttons or encoder clicks to increase/decrease brightness in discrete steps:
- Increase (+): Click Pick... to select the button that increases brightness
- Decrease (-): Click Pick... to select the button that decreases brightness
- Step Size: Percentage change per press (1-25%)
Axis Mode
Use a physical axis (slider, dial) for continuous brightness control:
- Device: Select the input device
- Axis: Select which axis to use
- Preview: Live display of current axis position
- Invert axis: Reverse the axis direction if needed
Footer buttons: Clear (remove binding), Cancel, Save.
EFIS Baro Brightness Override
This feature repurposes the EFIS baro encoder to control brightness when the ADF2/VOR2 selector switch is not in the OFF position. This provides a convenient way to adjust brightness using hardware you already have.
Behavior:
- ADF2 position → Baro encoder adjusts all display brightness
- VOR2 position → Baro encoder adjusts all backlight brightness
- OFF position → Baro encoder works normally (altimeter setting)
Enable checkboxes:
- Enable on Left EFIS: Activate override for the left EFIS baro encoder
- Enable on Right EFIS: Activate override for the right EFIS baro encoder
You can enable this on one or both EFIS panels independently.
Visual Panel Layout
The main area displays an interactive visual representation of your WinWing hardware. The layout dynamically adjusts based on which EFIS panels are enabled.
Left EFIS Panel (when enabled)
Displays on the left side of the FCU:
- QNH Display: Click to configure the data source (SimVar or LVar)
- inHg / hPa buttons: Click to bind barometric unit toggle actions
- BARO Encoder: Click to configure rotation and push bindings
- PULL / PUSH buttons: Click to bind encoder pull/push actions
- Mode Buttons: FD, LS, CSTR, WPT, VORD, NDB, ARPT
- Nav Mode Selector: ROSE ILS, ROSE VOR, ROSE NAV, ARC, PLAN
- ADF/VOR Selector: ADF1, OFF, VOR1, ADF2, OFF, VOR2 positions
- Range Selector: 10, 20, 40, 80, 160, 320 range buttons
Main FCU Panel (center)
The primary autopilot control panel:
Mode Toggle Buttons (top row):
- SPD/MACH: Toggle between speed and Mach display mode
- HDG/TRK: Toggle between heading and track mode
- METRIC ALT: Toggle metric altitude display
- V/S - FPA: Toggle between vertical speed and flight path angle
Main Displays (click to configure data source):
- SPD: Speed/Mach display
- HDG: Heading/Track display
- ALT: Altitude display
- V/S: Vertical Speed/FPA display
Encoders (click to configure rotation bindings):
- SPD Encoder: Speed adjustment
- HDG Encoder: Heading adjustment
- ALT Encoder: Dual concentric — outer ring (1000ft) and inner knob (100ft)
- V/S Encoder: Vertical speed adjustment
Push Buttons (below each encoder):
- PULL: Typically syncs current value or enables managed mode
- PUSH: Typically selects or toggles the mode
Right EFIS Panel (when enabled)
Displays on the right side of the FCU with identical layout to the Left EFIS panel.
Configuring Displays
Click on any display (SPD, HDG, ALT, V/S, or EFIS QNH) to open the Display Binding dialog.
Display Binding Options:
- Source Type: SimVar or LVar
- Source Name: The variable to read (browse or type manually)
- Units: Unit specification for SimVars
- Multiplier: Value multiplier for display scaling
- Offset: Value offset for display adjustment
Configuring Encoders
Click on any encoder knob to open the Encoder Configuration dialog. This allows you to bind:
- Clockwise rotation: Action when turning right
- Counter-clockwise rotation: Action when turning left
- Push: Action when pressing the encoder (if supported)
Each direction can be bound to SimConnect events, keyboard shortcuts, X-Plane commands, or other action types.
Configuring Buttons
Click on any button in the visual panel to open the Unified Binding Window. This provides the full button configuration interface documented in the Button Configuration section, including:
- Press type selection (Single Press, Long Press, Release)
- Action type selection (SimConnect Event, Keyboard, X-Plane, L:Var, Flags)
- Conditional operations support
All FCU and EFIS buttons can be configured using this interface.
Autopilot Controls Section
A dedicated section displays the main autopilot engagement buttons:
- AP1: Autopilot 1 engage
- AP2: Autopilot 2 engage
- A/THR: Autothrottle arm
- LOC: Localizer mode
- EXPED: Expedite mode
- APPR: Approach mode
Click any button to configure its binding through the Unified Binding Window.
Binding Summary Section
A quick reference showing the current configuration status:
Displays column:
- SPD: Shows source type and variable name
- HDG: Shows source type and variable name
- ALT: Shows source type and variable name
- V/S: Shows source type and variable name
Encoders column:
- SPD: Shows bound action or "(not configured)"
- HDG: Shows bound action or "(not configured)"
- ALT: Shows bound action or "(not configured)"
- V/S: Shows bound action or "(not configured)"
View All Bindings Button
Click to display a help dialog explaining how to configure bindings by clicking on the visual panel elements.
Footer Buttons
- Clear All Bindings: Remove all display, encoder, and button bindings for the current profile (with confirmation)
- Cancel: Close without saving (prompts if unsaved changes exist)
- Save Configuration: Save all changes and apply immediately to the running WinWing runtime
Typical WinWing FCU Setup Workflow
- Select your aircraft preset from the Preset dropdown (GA/Airliners or Fenix A320)
- Enable EFIS panels if connected (use Auto-Detect or check manually)
- Adjust brightness to your preference using the sliders
- Optionally bind brightness controls to physical inputs
- Customize button bindings as needed for your aircraft
- Click Save Configuration to apply your settings
MSFS Default Preset Reference
The MSFS Default (GA/Airliners) preset configures all displays, encoders, and buttons using standard SimConnect events and variables. This works with most default and add-on aircraft in Microsoft Flight Simulator 2020/2024.
Display Bindings
| Display | SimVar | Units |
|---|---|---|
| SPD | AUTOPILOT AIRSPEED HOLD VAR | knots |
| HDG | AUTOPILOT HEADING LOCK DIR | degrees |
| ALT | AUTOPILOT ALTITUDE LOCK VAR | feet |
| V/S | AUTOPILOT VERTICAL HOLD VAR | feet per minute |
| EFIS QNH (Left) | KOHLSMAN SETTING HG | inHg × 33.86 (displays as hPa) |
| EFIS QNH (Right) | KOHLSMAN SETTING HG | inHg × 100 |
Speed Encoder
| Action | SimConnect Event | Description |
|---|---|---|
| Rotate Clockwise | AP_SPD_VAR_INC | Increase IAS bug |
| Rotate Counter-CW | AP_SPD_VAR_DEC | Decrease IAS bug |
| Push | AP_PANEL_SPEED_HOLD | Toggle IAS hold mode |
| Pull | AP_PANEL_SPEED_HOLD_TOGGLE | Sync to current airspeed |
Heading Encoder
| Action | SimConnect Event | Description |
|---|---|---|
| Rotate Clockwise | HEADING_BUG_INC | Increase heading bug |
| Rotate Counter-CW | HEADING_BUG_DEC | Decrease heading bug |
| Push | AP_HDG_HOLD | Toggle heading hold mode |
| Pull | AP_PANEL_HEADING_HOLD | Sync to current heading |
Altitude Encoder
| Action | SimConnect Event | Description |
|---|---|---|
| Rotate Clockwise | AP_ALT_VAR_INC | Increase altitude bug |
| Rotate Counter-CW | AP_ALT_VAR_DEC | Decrease altitude bug |
| Push | AP_ALT_HOLD | Toggle altitude hold mode |
| Pull | AP_PANEL_ALTITUDE_HOLD | Sync to current altitude |
Vertical Speed Encoder
| Action | SimConnect Event | Description |
|---|---|---|
| Rotate Clockwise | AP_VS_VAR_INC | Increase vertical speed |
| Rotate Counter-CW | AP_VS_VAR_DEC | Decrease vertical speed |
| Push | AP_VS_VAR_SET_ENGLISH (data=0) | Level off (set V/S to 0) |
| Pull | AP_VS_HOLD | Toggle V/S hold mode |
FCU Mode Toggle Buttons
| Button | SimConnect Event | Description |
|---|---|---|
| SPD/MACH | AP_PANEL_SPEED_HOLD | Toggle speed hold mode |
| HDG/TRK | AP_HDG_HOLD | Toggle heading hold mode |
| METRIC ALT | AP_ALT_HOLD | Toggle altitude hold mode |
FCU Autopilot Buttons
| Button | SimConnect Event | Description |
|---|---|---|
| AP1 | AP_MASTER | Autopilot master on/off |
| AP2 | YAW_DAMPER_TOGGLE | Toggle yaw damper |
| A/THR | AUTO_THROTTLE_ARM | Arm autothrottle |
| LOC | AP_LOC_HOLD | Localizer mode |
| EXPED | FLIGHT_LEVEL_CHANGE | Flight level change mode |
| APPR | AP_APR_HOLD | Approach mode |
EFIS Baro Encoder (Left & Right)
| Action | SimConnect Event | Description |
|---|---|---|
| Rotate Clockwise | KOHLSMAN_INC | Increase altimeter setting |
| Rotate Counter-CW | KOHLSMAN_DEC | Decrease altimeter setting |
| Push | BAROMETRIC | Set standard pressure (STD) |
EFIS Mode Buttons (Left & Right)
| Button | SimConnect Event | Description |
|---|---|---|
| FD | TOGGLE_FLIGHT_DIRECTOR | Toggle flight director display |
| LS | AP_BC_HOLD | Back course hold mode |
EFIS Nav Mode Selector (Left & Right)
| Button | SimConnect Event | Description |
|---|---|---|
| ROSE ILS | AP_NAV1_HOLD | NAV1 hold mode |
| ROSE VOR | AP_NAV1_HOLD | NAV1 hold mode |
| ROSE NAV | AP_NAV1_HOLD | NAV1 hold mode |
| ARC | AP_NAV1_HOLD | NAV1 hold mode |
| PLAN | AP_WING_LEVELER | Wing leveler mode |
Controls Not Bound by Default
The following controls are not bound in the MSFS Default preset and can be customized as needed:
- V/S-FPA toggle button: No direct MSFS equivalent
- Altitude scale buttons (100/1000): No direct MSFS equivalent for increment toggle
- EFIS CSTR, WPT, VORD, NDB, ARPT buttons: No standard MSFS events
- EFIS inHg/hPa toggle buttons: No standard MSFS events
- EFIS Range selector buttons (10-320): No standard MSFS events
- EFIS ADF/VOR selector positions: No standard MSFS events
- EFIS Baro Pull button: Not bound
MSFS Default Preset Reference
The MSFS Default (GA/Airliners) preset configures the WinWing FCU and EFIS panels to work with standard Microsoft Flight Simulator autopilot SimConnect events. This preset is compatible with most default and third-party aircraft that use standard MSFS autopilot systems.
Display Data Sources
| Display | SimVar | Units |
|---|---|---|
| SPD | AUTOPILOT AIRSPEED HOLD VAR | knots |
| HDG | AUTOPILOT HEADING LOCK DIR | degrees |
| ALT | AUTOPILOT ALTITUDE LOCK VAR | feet |
| V/S | AUTOPILOT VERTICAL HOLD VAR | feet per minute |
| EFIS-L QNH | KOHLSMAN SETTING HG | hPa (converted) |
| EFIS-R QNH | KOHLSMAN SETTING HG | inHg (×100) |
Speed Encoder Bindings
| Control | SimConnect Event | Function |
|---|---|---|
| Rotate CW | AP_SPD_VAR_INC | Increase airspeed bug |
| Rotate CCW | AP_SPD_VAR_DEC | Decrease airspeed bug |
| Push | AP_PANEL_SPEED_HOLD | Toggle IAS hold mode |
| Pull | AP_PANEL_SPEED_HOLD_TOGGLE | Sync to current airspeed |
Heading Encoder Bindings
| Control | SimConnect Event | Function |
|---|---|---|
| Rotate CW | HEADING_BUG_INC | Increase heading bug |
| Rotate CCW | HEADING_BUG_DEC | Decrease heading bug |
| Push | AP_HDG_HOLD | Toggle heading hold mode |
| Pull | AP_PANEL_HEADING_HOLD | Sync to current heading |
Altitude Encoder Bindings
| Control | SimConnect Event | Function |
|---|---|---|
| Rotate CW | AP_ALT_VAR_INC | Increase altitude bug |
| Rotate CCW | AP_ALT_VAR_DEC | Decrease altitude bug |
| Push | AP_ALT_HOLD | Toggle altitude hold mode |
| Pull | AP_PANEL_ALTITUDE_HOLD | Sync to current altitude |
Vertical Speed Encoder Bindings
| Control | SimConnect Event | Function |
|---|---|---|
| Rotate CW | AP_VS_VAR_INC | Increase vertical speed |
| Rotate CCW | AP_VS_VAR_DEC | Decrease vertical speed |
| Push | AP_VS_VAR_SET_ENGLISH (0) | Level off (set V/S to 0) |
| Pull | AP_VS_HOLD | Toggle V/S hold mode |
EFIS Baro Encoder Bindings (Left & Right)
| Control | SimConnect Event | Function |
|---|---|---|
| Rotate CW | KOHLSMAN_INC | Increase altimeter setting |
| Rotate CCW | KOHLSMAN_DEC | Decrease altimeter setting |
| Push | BAROMETRIC | Toggle STD / QNH |
EFIS Panel Button Bindings (Left & Right)
| Button | SimConnect Event | Function |
|---|---|---|
| FD | TOGGLE_FLIGHT_DIRECTOR | Toggle flight director display |
| LS | AP_BC_HOLD | Back course hold mode |
| ROSE ILS | AP_NAV1_HOLD | NAV1 hold mode |
| ROSE VOR | AP_NAV1_HOLD | NAV1 hold mode |
| ROSE NAV | AP_NAV1_HOLD | NAV1 hold mode |
| ARC | AP_NAV1_HOLD | NAV1 hold mode |
| PLAN | AP_WING_LEVELER | Wing leveler mode |
Unbound Controls
The following controls are not bound in the MSFS Default preset and can be customized as needed:
- CSTR, WPT, VORD, NDB, ARPT buttons: No standard MSFS equivalent
- inHg / hPa buttons: No standard MSFS unit toggle event
- ADF/VOR selector positions: Aircraft-specific functionality
- Range selector buttons: Aircraft-specific map range control
- SPD/MACH, HDG/TRK, METRIC ALT, V/S-FPA toggles: Can be customized for specific aircraft
WinWing PAP-3 MCP Configuration
The WinWing PAP-3 is a Boeing 737-style Mode Control Panel (MCP) that provides comprehensive autopilot control with dedicated displays for IAS/MACH, Heading, Altitude, Vertical Speed, and dual Course settings (Captain and First Officer). HangarControl provides full support for live display output, encoder input handling, button binding, and advanced brightness control.
Accessing PAP-3 Configuration
When a WinWing PAP-3 is connected, it appears in the Controls & Devices view. Click on the WinWing PAP-3 entry to open the dedicated configuration window.
Configuration Window Overview
The WinWing PAP-3 MCP Configuration window is divided into the following sections:
- Preset Toolbar
- Visual MCP Panel Layout
- Brightness Controls
- F/O Brightness Override
- Binding Summary
- Footer Actions
Preset Management
The PAP-3 configuration includes a preset system to quickly configure all displays and bindings for specific aircraft types.
| Preset | Description |
|---|---|
| (Unconfigured) | Clears all PAP-3 bindings. Use this to start fresh or prepare for manual configuration. |
| MSFS Default (Generic) | Standard SimConnect events for generic aircraft. Configures displays using autopilot SimVars and encoders using standard MSFS events. |
| PMDG 737 NG3 | Configured for the PMDG 737 NG3, using PMDG SDK events for accurate MCP operation. Display values are read directly from PMDG ClientData. |
User-created presets appear in the dropdown with a 📄 icon prefix.
Preset Management Buttons
- 💾 Save: Save the current configuration as a named preset to
Documents\HangarControl\Pap3Presets\ - 📂 Load: Load a previously saved preset from a file picker
- 📤 Export: Export a preset to a JSON file for backup or sharing with other users
- 📥 Import: Import a preset from a JSON file
Configure your displays and bindings, then click 💾 Save. Enter a descriptive name (e.g., "My 737 Config") and click OK. The preset is saved to your Documents folder.
Click 📂 Load to open a file browser. Navigate to your preset JSON file and select it. All display bindings, encoder bindings, and brightness settings will be applied.
Visual MCP Panel Layout
The main configuration area displays an interactive visual representation of the Boeing MCP panel. Click on any display, encoder, or button to configure its binding.
| Element | Location | Function |
|---|---|---|
| COURSE (Captain) | Far left | 3-digit amber display for VOR1/ILS course |
| F/D Captain | Below Course CPT | Flight Director ON/OFF switch |
| A/T ARM | Left center | Autothrottle ARM/OFF switch |
| N1 / SPEED | Left section | Thrust mode buttons with LED indicators |
| IAS/MACH | Center-left | 3-digit blue display with large encoder |
| C/O | Below IAS | Changeover button |
| SPD INTV | Below IAS | Speed intervention button |
| VNAV / LVL CHG | Center | Vertical navigation mode buttons with LEDs |
| HEADING | Center | 3-digit blue display with large encoder |
| BANK LIMIT | Below HDG | Bank angle selector (10/15/20/25/30°) |
| HDG SEL / LNAV | Center | Lateral navigation mode buttons with LEDs |
| VOR LOC / APP | Center-right | Navigation mode buttons with LEDs |
| ALTITUDE | Right-center | 5-digit blue display with large encoder |
| ALT HLD / V/S | Right | Altitude mode buttons with LEDs |
| ALT INTV | Right | Altitude intervention button |
| VERT SPEED | Right | Signed 4-digit blue display with vertical wheel |
| A/P ENGAGE | Far right | CMD A, CMD B, CWS A, CWS B buttons |
| DISENGAGE BAR | Far right | Red autopilot disconnect bar |
| F/D First Officer | Far right | F/O Flight Director ON/OFF switch |
| COURSE (F/O) | Far right | 3-digit amber display for VOR2/ILS course |
Display Bindings
Click on any display to open the Display Binding dialog. The dialog allows you to bind the display to a SimVar, LVar, or constant value.
| Display | MSFS Default Binding | PMDG 737 NG3 |
|---|---|---|
| IAS/MACH | AUTOPILOT AIRSPEED HOLD VAR (knots) | PMDG ClientData |
| HDG | AUTOPILOT HEADING LOCK DIR (degrees) | PMDG ClientData |
| ALT | AUTOPILOT ALTITUDE LOCK VAR (feet) | PMDG ClientData |
| V/S | AUTOPILOT VERTICAL HOLD VAR (feet per minute) | PMDG ClientData |
| CRS CPT | NAV OBS:1 (degrees) | PMDG ClientData |
| CRS F/O | NAV OBS:2 (degrees) | PMDG ClientData |
Encoder Bindings
Click on any encoder knob to open the Encoder Binding dialog. Configure separate actions for clockwise (CW) and counter-clockwise (CCW) rotation.
| Encoder | MSFS Default CW | MSFS Default CCW |
|---|---|---|
| CRS Captain | VOR1_OBS_INC | VOR1_OBS_DEC |
| IAS/MACH | AP_SPD_VAR_INC | AP_SPD_VAR_DEC |
| HDG | HEADING_BUG_INC | HEADING_BUG_DEC |
| ALT | AP_ALT_VAR_INC | AP_ALT_VAR_DEC |
| V/S Wheel | AP_VS_VAR_INC (UP) | AP_VS_VAR_DEC (DN) |
| CRS First Officer | VOR2_OBS_INC | VOR2_OBS_DEC |
PMDG:70016.cw for IAS increase). The runtime automatically sends these as mouse wheel commands to the PMDG aircraft.
Brightness Controls
The Brightness Controls section provides direct control over three independent brightness channels:
| Control | Description | Range |
|---|---|---|
| Panel Backlight | Controls the overall panel backlight illumination | 0-100% |
| LCD Display | Controls the 7-segment display brightness for all six displays | 0-100% |
| LED Indicators | Controls the brightness of button LED indicators | 0-100% |
Brightness changes are applied immediately to the hardware and saved with your configuration.
F/O Brightness Override
This advanced feature repurposes the First Officer's Course encoder to control panel brightness, using the F/O Flight Director switch to select which brightness channel is adjusted.
How F/O Brightness Override Works
| FD2 Switch Position | Course F/O Encoder Function |
|---|---|
| FD2 OFF | Rotating the Course 2 encoder adjusts LCD Display brightness |
| FD2 ON | Rotating the Course 2 encoder adjusts Panel Backlight brightness |
Check the Use F/O Flight Director for Brightness Control checkbox in the Brightness Controls section.
Use the Step Size slider (1-25%) to set how much the brightness changes per encoder detent. Default is 5%.
With FD2 in the OFF position, rotate the Course 2 encoder to adjust LCD display brightness. Switch FD2 to ON, then rotate Course 2 to adjust panel backlight brightness.
Binding Summary
The Binding Summary section shows a quick overview of configured displays and encoders:
- Displays column: Shows the source variable or "(not configured)" for each of the 6 displays
- Encoders column: Shows the CW action or "(not configured)" for each of the 6 encoders
Footer Actions
- Clear All Bindings: Removes all PAP-3 display and encoder bindings for the current profile
- Save Configuration: Saves all changes and applies them immediately to the running hardware
- Cancel: Discards unsaved changes and closes the window
MSFS Default (Generic) Preset Reference
The MSFS Default (Generic) preset configures the PAP-3 MCP to work with standard Microsoft Flight Simulator autopilot SimConnect events. This preset works with most default aircraft and third-party add-ons that use the standard MSFS autopilot system.
Button Bindings
| Button | SimConnect Event | Function |
|---|---|---|
| N1 | AUTO_THROTTLE_TO_GA | Go-around / TOGA |
| SPEED | AP_PANEL_SPEED_HOLD | IAS hold mode |
| VNAV | FLIGHT_LEVEL_CHANGE | Flight level change (no VNAV in generic MSFS) |
| LVL CHG | FLIGHT_LEVEL_CHANGE | Flight level change |
| HDG SEL | AP_HDG_HOLD | Heading hold mode |
| LNAV | AP_NAV1_HOLD | NAV1 hold mode |
| VOR LOC | AP_LOC_HOLD | Localizer hold mode |
| APP | AP_APR_HOLD | Approach hold mode |
| ALT HLD | AP_ALT_HOLD | Altitude hold mode |
| V/S | AP_VS_HOLD | Vertical speed hold mode |
| CMD A | AP_MASTER | Autopilot master toggle |
| CMD B | AP_MASTER | Autopilot master toggle |
| CWS A | YAW_DAMPER_TOGGLE | Yaw damper (no CWS in generic MSFS) |
| CWS B | YAW_DAMPER_TOGGLE | Yaw damper |
| C/O | AUTOPILOT_OFF | Autopilot disconnect |
| SPD INTV | AP_PANEL_SPEED_HOLD | Speed intervention |
| ALT INTV | AP_ALT_HOLD | Altitude intervention |
| DISENGAGE | AUTOPILOT_OFF | Autopilot disconnect |
| F/D CPT ON/OFF | TOGGLE_FLIGHT_DIRECTOR | Toggle flight director |
| A/T ARM | AUTO_THROTTLE_ARM | Arm autothrottle |
| A/T OFF | AUTO_THROTTLE_DISCONNECT | Disconnect autothrottle |
Bank Angle Selector
| Button | SimConnect Event | Data Value |
|---|---|---|
| 10 | AP_MAX_BANK_SET | 10 |
| 15 | AP_MAX_BANK_SET | 15 |
| 20 | AP_MAX_BANK_SET | 20 |
| 25 | AP_MAX_BANK_SET | 25 |
| 30 | AP_MAX_BANK_SET | 30 |
PMDG 737 NG3 Preset Reference
The PMDG 737 NG3 preset uses PMDG SDK events for proper Boeing 737 MCP operation. All buttons and encoders send PMDG-specific commands that correctly interact with the aircraft systems.
PMDG:{eventCode} where eventCode is the PMDG SDK event ID. Encoders append .cw or .ccw suffixes to indicate rotation direction. HangarControl automatically handles the translation to PMDG mouse wheel commands.
Key PMDG Event Mappings
| Control | PMDG Event ID | SDK Name |
|---|---|---|
| Course CPT | 70008 | EVT_MCP_COURSE_SELECTOR_L |
| IAS/MACH | 70016 | EVT_MCP_SPEED_SELECTOR |
| HDG | 70022 | EVT_MCP_HEADING_SELECTOR |
| ALT | 70032 | EVT_MCP_ALTITUDE_SELECTOR |
| V/S | 70033 | EVT_MCP_VS_SELECTOR |
| Course F/O | 70041 | EVT_MCP_COURSE_SELECTOR_R |
| N1 | 70013 | EVT_MCP_N1_SWITCH |
| SPEED | 70014 | EVT_MCP_SPEED_SWITCH |
| VNAV | 70018 | EVT_MCP_VNAV_SWITCH |
| LNAV | 70029 | EVT_MCP_LNAV_SWITCH |
| CMD A | 70034 | EVT_MCP_CMD_A_SWITCH |
| CMD B | 70035 | EVT_MCP_CMD_B_SWITCH |
| Disengage | 70038 | EVT_MCP_DISENGAGE_BAR |
| FD CPT | 70010 | EVT_MCP_FD_SWITCH_L |
| FD F/O | 70039 | EVT_MCP_FD_SWITCH_R |
| A/T | 70012 | EVT_MCP_AT_ARM_SWITCH |
| Bank Angle | 70021 | EVT_MCP_BANK_ANGLE_SELECTOR |
Typical PAP-3 Setup Workflow
Connect your WinWing PAP-3 MCP via USB. The device should appear in the Controls & Devices view within a few seconds.
Click on the WinWing PAP-3 entry in the device list to open the configuration window.
Choose the appropriate preset for your aircraft: MSFS Default (Generic) for standard aircraft or PMDG 737 NG3 for the PMDG Boeing 737.
Set your preferred brightness levels for Panel Backlight, LCD Display, and LED Indicators using the sliders.
If you want hardware brightness control, enable the F/O Brightness Override and configure your preferred step size.
Click Save Configuration to apply all settings and close the window. Your configuration is automatically applied when the profile is active.
Stream Deck Plugin
Installing the Plugin
The HangarControl Stream Deck plugin can be installed directly from within HangarControl:
Navigate to Settings from the HangarControl main menu.
Scroll down to find the STREAM DECK PLUGIN card. The status indicator shows whether the plugin is installed and which version. If a newer plugin is bundled with HangarControl, the status turns orange and shows both versions.
Click Install Plugin (or Update Plugin / Reinstall Plugin if already installed). The Elgato Stream Deck installer will open automatically, and the status updates once the install finishes.
Click Install in the Stream Deck dialog that appears. The plugin will be added to your Stream Deck software immediately.
Requirements
Before using the Stream Deck plugin:
- HangarControl must be installed and running
- An active profile must be selected for your simulator (MSFS 2020, MSFS 2024, or X-Plane)
- The simulator must be connected (flight loaded, not just at the main menu)
- Stream Deck software must be installed (version 6.0 or later recommended)
Connection Status
Every action's Property Inspector displays a Connection status at the bottom:
- Connected — HangarControl is running and the plugin can send commands
- Disconnected (Icons OK) — HangarControl is not running; icons display but actions won't execute
If disconnected, buttons will show a ⚠ warning indicator. Start HangarControl and load a profile to restore functionality.
Available Actions
The HangarControl plugin provides nine action types, each designed for specific use cases:
| Action | Purpose | Best For |
|---|---|---|
| SimConnect Event | Execute MSFS SimConnect events | Standard cockpit controls, autopilot, systems |
| SimVar Write | Write values to simulator variables | LVars, aircraft-specific controls |
| Keyboard | Send keyboard shortcuts | Third-party addon hotkeys, sim keybinds |
| X-Plane Command | Execute X-Plane commands | X-Plane autopilot, systems, custom commands |
| X-Plane DataRef | Write values to X-Plane DataRefs | X-Plane variable manipulation |
| Flag | Control HangarControl flags | Custom state management, conditional logic |
| Conditional | Execute actions based on conditions | Smart buttons that adapt to aircraft state |
| LCD Display | Show live data on Stream Deck+ touchscreen | Radio frequencies, autopilot values, custom gauges |
| Encoder | Rotary encoder with LCD for Stream Deck+ | Heading bug, altitude selector, radio tuning |
SimConnect Event Action
Execute standard Microsoft Flight Simulator events through SimConnect.
Configuration
| Setting | Description |
|---|---|
| Prefix | Event type prefix: None, K: (Event), L: (LVar), A: (AVar), B: (BVar), H: (HTML) |
| Event | The SimConnect event name — click the ... browse button to open the Event/Variable Picker |
| Value | Data value sent with the event (default: 0) |
Using the Event/Variable Picker
Click the ... button next to the Event field to open the picker dialog. This provides access to the full HangarControl event catalog:
- K: Events — Standard SimConnect key events
- A: SimVars — Aircraft simulation variables
- L: LVars — Local variables (aircraft-specific)
- B: BVars — Boolean/binary variables
- H: HTML Events — HTML gauge events
- PMDG — PMDG-specific actions
Use the Type dropdown to filter by variable type, and the Search field to find specific events. Double-click an item or select it and click Select to populate the Event field. The appropriate prefix will be set automatically.
Using Presets
Click the Presets button to quickly configure buttons with common aviation functions. The preset picker provides 90+ ready-to-use configurations organized by category:
- Autopilot — Master, HDG, NAV, APR, ALT, VS, FLC, speed controls
- Radios — COM/NAV frequency swap, ADF, transponder
- Electrical — Battery, alternator, avionics, GPU
- Lights — Navigation, beacon, strobe, landing, taxi, panel
- Flight Controls — Gear, flaps, spoilers, trim, parking brake
- Navigation — GPS/NAV source, flight director, course adjust
- Fuel — Fuel pumps, tank selectors, fuel quantity display
- Environment — Pitot heat, de-ice, cabin lights, wipers
Combo Presets: Special presets like COM1 Display + Swap configure buttons to show both active and standby frequencies with press-to-swap functionality. These display the active frequency (larger, top) and standby frequency (smaller, bottom) on a single button.
When applying a preset that includes an icon, you can select from available icon variants to customize the appearance. Use the category dropdown and search field to quickly find presets.
SimVar Write Action
Directly write values to simulator variables for precise control.
Configuration
| Setting | Description |
|---|---|
| Type | Variable type: LVar, AVar, BVar, JVar, or Custom SimVar |
| Name | Variable name without prefix (e.g., XMLVAR_Autopilot_1_Status) |
| Units | Required for AVars (number, bool, feet, knots, percent, etc.) |
| Action | Set Value, Toggle (0↔1), Increment, Decrement, or Pulse |
| Value | Value to set, or increment/decrement amount |
Keyboard Action
Send keyboard shortcuts to control the simulator or third-party applications.
Configuration
| Setting | Description |
|---|---|
| Key Chord | Keyboard combination (e.g., Ctrl+Shift+P, Alt+F4, F1) |
| Record Button | Click to open the key recorder — press any key combination to capture it automatically |
Using the Key Recorder: Click the Record button next to the Key Chord field. A dialog will appear prompting you to press your desired key combination. The recorder captures modifier keys (Ctrl, Alt, Shift, Win) and the final key press automatically. Press Escape to cancel without saving.
Supported Modifiers: Ctrl, Alt, Shift, Win
Examples: Ctrl+Shift+P, Alt+F4, F1, NumPad5, Shift+Tab, Space
X-Plane Command Action
Execute X-Plane command references for X-Plane 11 and 12.
Configuration
| Setting | Description |
|---|---|
| Command | Full X-Plane command path (e.g., sim/autopilot/heading_sync) |
| State DataRef | Optional DataRef to monitor for ON/OFF icon state |
Common X-Plane Commands:
sim/autopilot/heading_syncsim/flight_controls/flaps_downsim/lights/landing_lights_toggle
X-Plane DataRef Action
Write values directly to X-Plane DataRefs.
Configuration
| Setting | Description |
|---|---|
| DataRef | Full DataRef path (e.g., sim/cockpit/autopilot/heading_mag) |
| Value | Value to set the DataRef to |
| State DataRef | Optional DataRef to monitor (uses above if empty) |
Flag Action
Control HangarControl internal flags for state management and conditional logic.
Configuration
| Setting | Description |
|---|---|
| Flag Name | Name of the flag (case-insensitive, e.g., AP_ACTIVE) |
| Action | Toggle, Set (On), or Clear (Off) |
| State Var | Use FLAG:name to monitor this flag, or any SimVar |
Conditional Action
Execute different actions based on simulator state conditions.
Configuration
| Setting | Description |
|---|---|
| Logic | AND (all conditions must match) or OR (any condition can match) |
| Conditions | Add multiple conditions to evaluate |
| Action When TRUE | Action to execute when conditions are met |
| Action When FALSE | Optional action when conditions are not met |
Each condition can check SimVars, flags, or other state values. The TRUE/FALSE actions can be any action type: SimConnect, SimVar, Keyboard, X-Plane Command, X-Plane DataRef, or Flag.
LCD Display Action (Stream Deck+ Only)
Display live simulator data on the Stream Deck+ touchscreen LCD panel.
Configuration
| Setting | Description |
|---|---|
| Background | Background color for the display |
| Icon | Optional icon to display |
| Touch Event | SimConnect event to execute when touching the LCD |
Text Slots (Up to 4)
Each display supports up to 4 independent text slots for showing live data:
| Setting | Description |
|---|---|
| Enabled | Toggle slot on/off |
| SimVar | Variable to display (e.g., A:COM ACTIVE FREQUENCY:1) or leave blank for static text |
| Units | Units for the SimVar (MHz, number, degrees, etc.) |
| Format | Display format using {value} placeholder (e.g., COM1: {value}) |
| Decimals | Number of decimal places (0-3) |
| Font / Size / Weight | Text styling options |
| Color | Per-slot text color (color picker) — each slot can have a different color |
| X / Y Position | Absolute position on the 200×100 pixel LCD |
Encoder Action (Stream Deck+ Only)
Configure the rotary encoders on Stream Deck+ with optional LCD display.
Rotation Modes
| Mode | Description |
|---|---|
| Adjust SimVar | Directly adjust a simulator variable with rotation |
| Execute Actions | Execute separate CW and CCW actions |
Adjust SimVar Mode Settings
| Setting | Description |
|---|---|
| SimVar | Variable to adjust (include prefix like L:, A:) |
| Units | Variable units (number, degrees, etc.) |
| Increment | Amount to change per tick |
| Fine Increment | Amount when dial is pressed while rotating |
| Min / Max | Optional value limits |
| Wrap | Wrap from max to min and vice versa |
Execute Actions Mode
Configure separate actions for clockwise (CW) and counter-clockwise (CCW) rotation. Each direction can use any action type: SimConnect, Keyboard, X-Plane Command, or X-Plane DataRef.
Press & Touch Events
| Setting | Description |
|---|---|
| Press Event | SimConnect event when pressing the encoder dial |
| Touch Event | SimConnect event when touching the LCD strip |
LCD Display Slots
Encoders include the same text slot system as the LCD Display action, allowing you to show the current value or other relevant data on the touchscreen. Each slot supports individual font size, position (X/Y), and color settings.
Common Settings (All Actions)
State Toggle
Most actions support state toggling to reflect ON/OFF states on the button icon. Choose how the state is determined:
| Mode | Description |
|---|---|
| No State Change | Button icon remains static — no ON/OFF switching |
| SimVar Monitoring | Icon state reflects a simulator variable value |
| Toggle on Press | Icon toggles between ON/OFF each time the button is pressed (or touched for LCD actions) |
When using SimVar Monitoring mode, configure these additional settings:
| Setting | Description |
|---|---|
| State Var | SimVar to monitor (e.g., L:XMLVAR_MASTER_SWITCH, A:ELECTRICAL MASTER BATTERY) |
| Units | Variable units (number, bool, percent) |
| Threshold | Value above which the state is considered "ON" (default: 0.5) |
Icon Selection
All actions provide an icon selector with bundled icons organized by category:
- Autopilot — A/P, HDG, ALT, SPD, V/S, NAV indicators
- Electrical — Battery, alternator, bus switches
- Lighting — Landing, taxi, nav, beacon, strobe lights
- Adjustment — Increase/decrease, rotary indicators
- Generic — General purpose icons
Icons that support state display both ON and OFF variants in the preview. Select None (Text / Variable Only) to display only text without an icon.
Button Appearance
| Setting | Description |
|---|---|
| Background | Background color (color picker) |
| Icon Width / Height | Icon size as percentage of button (20-100%) |
| Icon X / Y | Icon position (0=left/top, 50=center, 100=right/bottom) |
Label Settings
| Setting | Description |
|---|---|
| ON Text / OFF Text | Custom text for each state (leave blank for no text) |
| Font | Font family (Arial, Segoe UI, Consolas, etc.) |
| Font Size | Text size in pixels (8-32) |
| Font Weight | Normal, Bold, Light, or numeric weight (100-900) |
| Font Color | Text color (color picker) |
| Position | Bottom, Top, Center, or Hidden |
Live Display Variables (SimConnect & SimVar Actions)
These actions support up to 3 "stacked" variable displays on the button face. Each slot can be individually styled:
| Setting | Description |
|---|---|
| Enabled | Toggle each slot on/off |
| SimVar | Variable to display — use the ... browse button to select from the catalog |
| Units | Variable units |
| Format | Display format with {value} placeholder |
| Y Offset | Vertical position adjustment (-100 to +100) |
| Font Size | Text size for this slot (8-48) |
| Color | Text color for this slot (color picker) — allows different colors per slot |
Typical Setup Workflow
- Start HangarControl and ensure it's connected to your simulator
- Open Stream Deck software and navigate to the HangarControl category
- Drag an action to a button position
- Configure the action in the Property Inspector panel
- Select an icon and customize appearance as desired
- Set up state monitoring if you want the icon to reflect simulator state
- Test the button with your simulator running
App Hangar
App Hangar is HangarControl's application launch management system that allows you to organize, configure, and launch groups of applications with optional hardware integration. Create custom workflows for different activities, automatically manage application windows, and use hardware buttons to toggle window visibility.
Accessing App Hangar
Click 🚀 App Hangar in the Home View navigation sidebar. You'll enter the App Hangar system starting with the Hangars overview, where you can create and manage your application groups.
App Hangar Concepts
Hangars
Hangars are top-level containers that organize related application profiles. Think of them as categories for different types of work or activities:
- Flight Simulation Hangar: Applications for flight simulation (simulators, weather tools, flight planners)
- Work Hangar: Professional applications (office software, development tools, communication apps)
- Gaming Hangar: Gaming platforms and related utilities
- Productivity Hangar: Daily productivity applications and tools
Profiles
Profiles are collections of applications that you want to launch together for specific scenarios. Each profile can contain multiple applications with individual launch settings:
- Morning Flight Session: MSFS, weather app, flight planner, ATC simulator
- Development Environment: Visual Studio, database tool, browser, terminal
- Streaming Setup: OBS, chat applications, media players, control software
Applications
Individual applications within profiles that can be executables, shortcuts, or web URLs, each with customizable launch parameters and behavior settings.
Hangar Management
The Hangars view provides comprehensive management of your application organization system.
Creating Hangars
Click + New Hangar to create a new application hangar.
Enter a descriptive name and optional description for your hangar in the Edit Hangar dialog.
Click Save to create your hangar. The new hangar will appear in the Hangars view ready for profile creation.
Hangar Card Interface
Each hangar displays as a card with the following elements:
| Element | Description |
|---|---|
| Hangar Name | The name of your hangar displayed prominently |
| Description | Optional description text (if provided) |
| Profile Count | Shows "X profile(s)" indicating how many profiles are in this hangar |
| Profile Dropdown | Quick-select dropdown to choose a profile (only shown if profiles exist) |
| ▶ Launch | Launch the selected profile (only shown if profiles exist) |
| Manage Profiles | Enter the Profiles view to add, edit, or delete profiles |
| Edit | Modify the hangar name and description |
| Delete | Remove the hangar and all its profiles (requires confirmation) |
Quick Launch
For hangars containing profiles, you can launch directly from the Hangars view:
Use the dropdown menu to select which profile to launch from the available options.
Click ▶ Launch to execute the selected profile. The button will show "Launching..." while applications are starting.
Profile Management
Click Manage Profiles on any hangar to enter the Profiles view, which provides detailed control over application collections.
Profile Card Interface
Each profile displays as a card with:
| Element | Description |
|---|---|
| Profile Name | User-defined profile identifier |
| Application Count | Shows "X application(s)" in this profile |
| ▶ Launch | Launch all applications in the profile |
| ⏹ Close | Close all applications launched by this profile |
| Edit | Open the Profile Editor for detailed configuration |
| Delete | Remove the profile (requires confirmation) |
Creating Profiles
Click + New Profile to create a new application profile within the current hangar.
The profile is created with the name "New Profile". Click Edit to open the Profile Editor and add applications.
Profile Editor
The Profile Editor provides comprehensive management of applications within a profile.
Profile Name
Edit the profile name directly in the text field at the top of the Profile Editor. Changes are automatically saved after you stop typing.
Application List
Each application in the profile displays as a card showing:
| Element | Description |
|---|---|
| Sequence Number | #1, #2, etc. - indicates launch order |
| Application Name | The display name of the application |
| Path | Full path to the executable, shortcut, or URL |
| Type, Delay & Flags | Shows "Type: Executable | Delay: 5s" and appends "⏳ Wait for window" when that option is enabled for the application |
| Position Status | Shows "✔ Position saved: X,Y (WxH)" if window position is saved |
Application Controls
| Button | Function |
|---|---|
| ▲ | Move application up in launch order |
| ▼ | Move application down in launch order |
| 🎮 Bind Toggle | Bind a hardware button to toggle window visibility |
| ✕ Clear | Remove the toggle binding (only shown when binding exists) |
| Center | Center the running application window on primary display |
| Edit | Modify application settings |
| ✕ | Remove application from profile |
Profile Editor Toolbar
| Button | Function |
|---|---|
| + Add App | Add a new application to the profile |
| Save All Positions | Capture window positions for all running applications at once |
| ← Back | Return to the Profiles view |
Application Configuration
The Add Application dialog provides comprehensive configuration for each application.
Application Types
| Type | Description | Use Cases |
|---|---|---|
| Executable (.exe) | Standard Windows applications | Flight simulators, games, development tools |
| Shortcut (.lnk) | Windows shortcut files | Start menu applications, custom shortcuts |
| Web URL | Web pages (http:// or https://) | Web tools, online applications, documentation |
Application Discovery
Browse Running/Recent Apps
Available for Executable type. Opens the Select Application dialog with filter options:
- All: Shows both running and recent applications
- Running Only: Shows only currently running applications with visible windows
- Recent Only: Shows applications from Windows Recent folder
Double-click any application to select it, or select and click Select.
Browse Shortcuts Folder
Available for Shortcut type. Opens the Select Shortcut dialog showing shortcuts from the Start Menu Programs folder. Double-click a shortcut to select it.
Browse Button
Opens a standard file dialog to manually locate executables or shortcuts.
Application Settings
| Setting | Description |
|---|---|
| Application Name | Display name shown in the profile |
| Path / URL | Full path to executable/shortcut, or complete URL for web apps |
| Delay before launch | Seconds to wait before launching this application (useful for staggered startup) |
| Open in new browser window | For URLs only - opens in new window instead of new tab |
| Command-Line Arguments | Arguments passed to the program on launch. Only shown for the Executable application type. |
| Make this a toggleable window | Enable hardware button integration for show/hide functionality |
| Wait for window | Wait for the application's main window to appear before continuing (up to a 30 second timeout). Useful for slow-starting apps so window positioning lands on the real window. |
| Wait for SimConnect | Hold this application's launch until HangarControl has an active SimConnect connection to the simulator. |
| Auto-close on service stop | Automatically close this application when the HangarControl input service is stopped. |
Hardware Integration
App Hangar integrates with DirectInput devices to provide button-based window management.
Binding a Toggle Button
Click the 🎮 Bind Toggle button on any application in the Profile Editor.
The Button Picker dialog opens. Select your device from the dropdown, then press a button on your hardware. The button will highlight in the interface - click it to select.
Select how the button press should trigger the window toggle:
| Trigger Type | Behavior |
|---|---|
| ⚡ Short Press | Quick tap toggles window (like a light switch) |
| ⏱ Long Press | Hold button for 1 second to toggle window |
| 🔄 On Release | Toggle happens when you release the button |
| 👆 While Held | Show window while holding, hide when released |
Toggle Behavior
When a toggle binding is activated:
- Minimized window: Restored and brought to front
- Visible and focused: Minimized to taskbar
- Visible but not focused: Brought to front
Clearing Bindings
Click the ✕ Clear button next to an existing binding to remove it. This removes the hardware integration while keeping all other application settings.
Window Position Management
App Hangar can save and restore window positions for consistent multi-application layouts.
Saving Window Positions
Launch your profile to start all applications.
Manually position and resize each application window as desired.
Click 📍 Save Positions in the toolbar. A confirmation shows how many positions were saved. Apps that are minimized at that moment are skipped, so restore them first if you want their spot saved.
HangarControl never moves a window to a spot that isn't on one of your monitors, so unplugging a screen can't strand an app off screen.
Clearing a Saved Position
Each app with a saved position gets a ✕ Position button on its card. Click it and confirm to forget that position. The app then opens wherever Windows places it until you save a new one.
Center Window
Click the Center button on any running application to immediately center its window on your primary display. This is useful for quickly finding windows that may have moved off-screen.
Automatic Position Restoration
When launching a profile, HangarControl automatically attempts to restore saved window positions. For applications with Wait for window enabled, it waits for the application's main window to appear (up to that application's 30 second timeout) and then moves and resizes the window to its saved location once it is found.
Launch and Close Operations
Launching a Profile
When you click ▶ Launch:
- Applications launch in sequence according to their order
- Each application waits for its configured delay before starting
- The button shows "Launching..." during the process
- After all apps launch, saved window positions are restored
Closing a Profile
When you click ⏹ Close:
- Each application receives a close request
- Browser windows receive a close message
- Desktop applications attempt graceful shutdown with a 2-second timeout
- Applications that don't close gracefully are force-terminated
Professional Use Cases
Flight Simulation Workflows
- Pre-Flight Setup: Launch weather tools, flight planners, and ATC software before starting the simulator
- Study Sessions: Open flight training materials, procedure documents, and reference applications
- Streaming Setup: Configure OBS, chat tools, and overlay applications for flight simulation streaming
Development Environments
- Project Setup: Launch IDE, database tools, browsers, and terminal applications
- Testing Environment: Start test databases, mockup services, and monitoring tools
- Documentation Session: Open editors, browsers, and reference materials
Multi-Monitor Cockpit Setups
- Hardware Button Integration: Use physical buttons to toggle checklist and reference windows
- Consistent Layouts: Save window positions once, restore them every session
- Quick Window Access: While Held trigger shows windows only when needed
Mods Hangar
Mods Hangar is HangarControl's modification management system that provides tools for organizing, deploying, and maintaining game modifications. This feature enables safe mod deployment with conflict detection, backup creation, container-based organization, and comprehensive rollback capabilities.
Accessing Mods Hangar
Click 📦 Mods Hangar in the Home View navigation sidebar. You'll enter the Mods Hangar system with a two-panel interface: Hangars & Profiles on the left, and Containers on the right.
Mods Hangar Concepts
Hangars
Hangars are top-level containers that organize mod profiles by game type. Each hangar is configured for a specific game, enabling specialized handling of game-specific mod formats and deployment requirements:
- MSFS Hangar: Microsoft Flight Simulator mods (Community folder management)
- X-Plane Hangar: X-Plane plugins and scenery
- DCS Hangar: DCS World modules and missions
- Generic Hangar: Universal file management for any game
Profiles
Profiles define deployment environments with specific paths for mod storage, game installation, and backups. A single hangar can contain multiple profiles for different configurations:
- Repository Path: Where your downloaded mod files are stored
- Target Path: The game's mod directory (e.g., MSFS Community folder)
- Backup Path: Where original files are backed up before deployment
Containers
Containers are organized groups of related modifications within a profile. Each container can hold multiple mod items and be enabled or disabled independently:
- Category Organization: Aircraft, Liveries, Scenery, Airports, Navigation, Weather, Effects, Sound, Utilities, Other
- Status Tracking: Enabled (deployed), Disabled (not deployed), or Partial
- Priority Control: Determines deployment order when conflicts exist
Hangar Management
The left panel displays all hangars with their nested profiles.
Hangar Toolbar
| Button | Function |
|---|---|
| + Hangar | Create a new hangar for a specific game type |
| + Profile | Add a new profile to the selected hangar |
| 📋 Copy | Duplicate the selected profile within the same hangar |
| → Hangar | Copy the selected profile to a different hangar |
Creating a Hangar
Click the + Hangar button to open the Hangar Editor dialog.
Provide a descriptive name for your hangar (e.g., "MSFS 2024 Mods", "X-Plane Scenery").
Choose the appropriate game from the dropdown:
| Game Type | Description |
|---|---|
| Generic | Universal file management for any game |
| Microsoft Flight Simulator | MSFS 2020/2024 with Community folder support |
| DCS World | Digital Combat Simulator modules and missions |
| American/Euro Truck Simulator | ATS and ETS2 mod management |
| X-Plane | X-Plane 11/12 plugins and scenery |
Hangar Card Controls
Each hangar displays as a card with:
- Hangar Name: Displayed at the top of the card
- Profile Count: Shows "X profiles" indicating how many profiles exist
- ✎ Edit: Modify hangar name and game type
- 🗑 Delete: Remove the hangar and all its profiles
Profile Management
Profiles appear nested within their parent hangar. Click a profile name to select it and view its containers.
Profile Card Controls
- Profile Name: Click to select and load containers
- ▶ Activate: One-click profile activation (disables all active mods, then enables this profile's containers)
- ✎ Edit: Open the Profile Editor dialog
- 🗑 Delete: Remove the profile
Creating a Profile
Click on a hangar to select it as the parent for the new profile.
Click the + Profile button to open the Profile Editor.
Set the three essential paths for mod deployment:
| Path | Purpose | Example |
|---|---|---|
| Repository | Where mods are stored | D:\FlightSim\ModLibrary |
| Target | Game's mod folder | C:\Users\...\Community |
| Backup | Backup storage location | D:\FlightSim\Backups |
Profile Editor Options
| Option | Description |
|---|---|
| Browse | Open folder browser for each path |
| Auto-Detect | Automatically detect game installation path (for Target) |
| Enable logging | Enable deployment logging for this profile |
| Log Directory | Custom log location (optional, uses default if empty) |
Duplicating and Copying Profiles
Mods Hangar provides two ways to copy profiles:
| Action | Button | Description |
|---|---|---|
| Duplicate | 📋 Copy | Creates a copy of the profile within the same hangar. Useful for creating variations of an existing configuration. |
| Copy to Hangar | → Hangar | Copies the profile to a different hangar. All containers are copied and start in a disabled state in the destination. |
Select the profile you want to copy, then click → Hangar. A dialog will display all available destination hangars.
Choose the target hangar from the list and click Copy.
Enter a name for the profile in the destination hangar. If a profile with the same name already exists, a suggested name with "- Copy" suffix is provided.
Container Management
When a profile is selected, its containers appear in the right panel as a data grid.
Container Toolbar
| Button | Function |
|---|---|
| + Container | Create a new container in the selected profile |
| Category Filter | Filter containers by category (Aircraft, Scenery, etc.) |
| Enable Selected | Deploy all selected containers |
| Disable Selected | Undeploy all selected containers |
| Enable All | Deploy all containers in the profile |
| Disable All | Undeploy all containers in the profile |
| Delete Selected | Delete all selected containers. Each is disabled first so deployed files and backups are cleaned up properly |
| Delete All | Delete every container currently shown in the profile, with the same disable-first handling |
| 📋 Show All Mods | Open dialog showing all available mods |
Deleting Multiple Containers
Select any number of containers and click Delete Selected, or clear the whole current view with Delete All. A confirmation appears showing how many containers are involved, then the operation runs behind a progress dialog you can cancel partway through.
Any container that is currently Enabled or Partial is disabled first, so its deployed files, links, and backups are cleaned up before the container record goes away. If a container cannot be disabled cleanly, it is left in place and not deleted — this is deliberate, since deleting it anyway would strand files in your deploy folder with nothing left to track them.
When the run finishes you get a summary showing how many were deleted, how many failed, and the total attempted. Anything that was skipped is listed by name with the reason, so you know exactly what still needs attention.
Deleted containers are gone. The mods themselves stay in your repository — only the container definitions are removed — but any per-container overrides, notes, and item configuration are lost.
Container Grid Columns
| Column | Description |
|---|---|
| Status | Visual indicator: ● Enabled (orange), ○ Disabled (gray) |
| Category | Icon and category name (e.g., ✈️ Aircraft, 🏔️ Scenery) |
| Container | Container name with item count |
| 📝 | Notes indicator (hover for tooltip) |
| Actions | Enable, Disable, Edit, Delete, Copy, Paste buttons |
Hovering over a container row shows a tooltip listing the items inside it, so you can check what a container holds without opening the editor.
Container Categories
Containers can be assigned to predefined categories for organization:
| Category | Icon | Use For |
|---|---|---|
| Aircraft | ✈️ | Aircraft addons and modifications |
| Liveries | 🎨 | Aircraft paint schemes and textures |
| Scenery | 🏔️ | Terrain, landmarks, and environment |
| Airports | 🛬 | Airport enhancements and additions |
| Navigation | 🧭 | Navigation data and charts |
| Weather | ☁️ | Weather enhancements and textures |
| Effects | ✨ | Visual effects and lighting |
| Sound | 🔊 | Audio enhancements and sounds |
| Utilities | 🔧 | Tools and utility mods |
| Other | 📦 | Miscellaneous modifications |
Refreshing Containers from the Repository
HangarControl can scan a profile's Repository path for mod folders that aren't already tracked and turn them into containers. This saves you from adding containers by hand after dropping new mods into your library.
- Refresh Profile: Scans the selected profile's repository. Existing containers are left untouched.
- Refresh Hangar: Runs the same scan across every profile in the hangar at once. The preview adds a column showing which profile each addon would land in.
Scan Preview
A scan never creates anything on its own. When it finds new addons, a preview window lists everything discovered with its name, path, and details, each with a checkbox. Select All and Select None are provided, a running count shows how many of the total are ticked, and only the ones you accept are turned into containers.
Every container created this way starts out disabled, so nothing is deployed to your simulator until you say so. When the scan completes you are told how many containers were created and how many addons were skipped because an existing container already tracks them.
If nothing new is found, HangarControl tells you whether that is because everything was already tracked, or because the repository folder contained no subdirectories with a manifest.json in them.
If your Repository path is the same folder as your deploy/Community path — or sits inside it — HangarControl warns you before scanning and asks whether to continue.
This setup does not work. Mods stored there are already live in the simulator, so there is nothing to deploy, and enabling any container built from them is blocked outright to protect your files from being moved or deleted. Your repository should be a separate storage folder, with the Community folder as the deploy target.
The same scan is available at container level. Scan Folder in the Container Editor lets you point at any parent folder and pick which of its addons to add to the container you are currently editing, using the same preview window.
Container Editor
The Container Editor provides comprehensive configuration for mod containers.
Container Settings
| Setting | Description |
|---|---|
| Container Name | Display name for the container |
| Tags | Comma-separated tags for organization |
| Category | Select from predefined categories |
| Custom Repository Directory | Override the profile's repository path (optional) |
| Custom Deploy Directory | Override the profile's target path (optional) |
| Dependencies | A checklist of the other containers in this profile. Any container you tick is enabled automatically before this one |
| Notes | Expandable section for documentation, instructions, or links. A character count is shown as you type |
Dependencies
Use the Dependencies (auto-enable with this container) checklist when a container needs something else deployed first — a livery pack that requires its base aircraft, or a scenery addon that needs a shared library. Tick the containers it depends on, and enabling this container enables those first, in order.
🔍 Detect Dependencies scans the container's contents and suggests relationships it can work out on its own, so you do not have to map them all by hand.
Container Items
Items are the individual files or folders that make up a container. The toolbar above the items grid provides:
- + Add File: Add a single file to the container
- + Add Folder: Add a folder to the container
- ⟳ Scan Folder: Point at a parent folder and scan it for addons — every subdirectory containing a
manifest.jsonis offered in the scan preview, and you pick which ones to add. The browser opens at the container's repository path by default. See Scan Preview - Remove: Remove the selected item from the container
Click the Operation cell on any row to change how that item deploys between Auto, Copy, and Link. Each item has:
| Property | Description |
|---|---|
| Source Path | Location in your repository |
| Target Path | Destination in the game folder (optional override) |
| Type | File, Folder, or Archive |
| Operation | Auto, Copy, or Link |
| Backup | Backup original before deploying |
| On | A checkbox controlling whether this individual addon is included when the container is deployed. Checked by default. This is the first column in the items grid |
| Relative | Read-only. Ticked when the item's path is stored relative to the Repository rather than as a full path, which makes the container portable between machines |
Per-Addon Enable
The On column gives each item in a container its own enable checkbox. Unchecking one leaves it in the container but excludes it from deployment, so you can drop a single addon for a flight without deleting it and rebuilding the container afterwards.
Enabling a container deploys only the addons that are checked. If you uncheck an item on a container that is already enabled and then re-enable the container, the unchecked addon is removed from your deploy folder before the rest is redeployed — so what is in the Community folder always matches what is actually ticked.
Operation Types
The Container Editor shows a Quick Guide panel summarizing these on screen:
- Auto — smart choice: folders become links, config files are copied
- Copy — duplicate files into the game directory
- Link — junction for a folder, hard link for a file
- Relative — path stored relative to the Repository, which keeps the container portable
| Operation | Behavior | Best For |
|---|---|---|
| Auto | Automatically choose Copy or Link based on item type | Most situations |
| Copy | Copy files/folders to target directory | Small files, files that need modification |
| Link | Create junction (folder) or hard link (file) | Large folders, save disk space |
Deployment Operations
Enabling a Container
Click the Enable button on a container row, or select multiple containers and click Enable Selected.
The system scans for file conflicts with currently enabled containers. If conflicts are found, the Conflict Dialog appears.
A progress dialog shows the deployment status with current item, progress counter, and completion percentage.
Disabling a Container
Click Disable to remove deployed files and restore any backups. The container returns to Disabled status.
Deployment Progress Dialog
During deployment, the progress dialog shows:
- Current Status: Active operation description
- Progress Counter: Completed vs. total operations
- Current Item: Specific file being processed
- Progress Bar: Visual completion percentage
Conflict Detection
Mods Hangar includes conflict detection to prevent file overwrites and deployment issues.
Conflict Dialog
When conflicts are detected, the Conflict Dialog appears showing:
- Summary: Total conflicts and affected containers
- Conflict Details: Specific files that conflict
- Resolution Options: How to handle the conflicts
Resolution Options
| Option | Behavior | Use When |
|---|---|---|
| Overwrite conflicts | Replace existing files with new versions | Updating to newer mod versions |
| Skip conflicts | Keep existing files, skip conflicting items | Preserving critical modifications |
| Cancel | Abort deployment entirely | Need to analyze conflicts first |
Backup System
Mods Hangar can automatically backup files before deployment for safe rollback.
Per-Item Backup
Enable the Backup checkbox on individual items in the Container Editor to backup existing files before they're replaced.
Backup Storage
Backups are stored in the profile's Backup path, organized by timestamp and container ID. When a container is disabled, backups are automatically restored.
Backup Sets
Each deployment that includes backups creates a backup set with:
- Timestamp of the deployment
- Container ID for identification
- Original file structure preserved
All Mods View
Click 📋 Show All Mods to open a comprehensive view of all available mods in your repository.
All Mods Dialog Features
| Feature | Description |
|---|---|
| Search | Filter mods by name |
| Status Filter | Show All, Enabled Only, or Disabled Only |
| Mod Grid | Title, Container, Creator, Version, Operation, Action columns |
| Enable Selected | Deploy selected mods |
| Disable Selected | Undeploy selected mods |
| Add to Container | Add selected mods to existing or new container |
Batch Operations
Multi-Select
Hold Ctrl or Shift to select multiple containers in the grid, then use batch operation buttons:
- Enable Selected: Deploy all selected containers
- Disable Selected: Undeploy all selected containers
Enable/Disable All
Use Enable All or Disable All to perform operations on every container in the profile. A confirmation dialog shows how many containers will be affected.
Batch Progress
During batch operations, the progress dialog shows:
- Current container being processed
- Overall progress across all containers
- Success and failure counts
Container Copy/Paste
Containers can be duplicated within or across profiles:
- Copy: Copy the container configuration to clipboard
- Paste: Create a new container from the copied configuration
Professional Workflows
Flight Simulation Mod Management
- Aircraft Library: Organize payware and freeware aircraft in separate containers
- Scenery Layers: Group scenery by region or type for selective deployment
- Performance Profiles: Create low/medium/high performance mod configurations
Multi-Environment Setup
- Stable Profile: Tested, reliable mod configuration for regular use
- Testing Profile: Experimental mods with easy rollback
- Vanilla Profile: Clean game installation for troubleshooting
Shared Configurations
- Profile Duplication: Copy profiles for team members or multiple installations
- Container Templates: Create standard container configurations to reuse
Tools - System Utilities and Simulator Tools
HangarControl's Tools section provides specialized utilities for system management, simulator configuration, and advanced flight simulation workflows. These professional-grade tools extend HangarControl's capabilities with system-level utilities, simulator-specific configuration managers, and automation tools for enhanced flight simulation experiences.
Accessing the Tools Section
Access tools through the Home View navigation or directly from the main interface:
Click 🛠️ Tools in the Home View navigation sidebar to open the comprehensive Tools window with categorized utilities.
Explore organized tool categories: System Tools, MSFS Tools, ATS Tools, and DCS Tools. Each category contains specialized utilities for specific workflows.
Tools Window Interface
Category Organization
| Tool Category | Primary Focus | Key Tools |
|---|---|---|
| ⚙️ System | System-level utilities and management | Process Priority Manager, Snapshot Manager, HC Variable Manager, Binding List, SimVR Optimizer, Clean Up Orphaned Data |
| ✈️ Microsoft Flight Simulator | MSFS configuration | MSFS 2020/2024 Config Managers |
| 🚛 American Truck Simulator | Truck Simulator utilities | Configuration managers (planned) |
| 🎮 DCS World | DCS World utilities | DCS Export Manager |
Interface Navigation
Click category headers to expand or collapse tool groups. The ▼ indicator shows expanded categories, ▶ shows collapsed.
Each tool displays a title and comprehensive description explaining its functionality and use cases.
Click any tool item to launch it directly. Tools open as dialog windows with appropriate parent relationships.
DCS Export Manager
The DCS Export Manager is located under the 🎮 DCS World category in the Tools window. Click it to launch the Export Manager as a standalone application for configuring multi-monitor DCS cockpit display exports.
From the Home View, click 🛠️ Tools in the navigation sidebar. Expand the 🎮 DCS World category, then click DCS Export Manager to launch.
The DCS Export Manager documentation is located in the same directory as the HangarControl documentation. Click the Documentation button in the top-left corner of HangarControl's main view to open the documentation folder. Inside, you will find DCSExportManager_UserGuide.html alongside the HangarControl Walkthrough and other documentation files.
Tools Window Buttons
| Button | Function |
|---|---|
| ➕ Add Category | Add custom tool categories (future feature) |
| Close | Close the Tools window |
System Tools
Process Priority Manager
Automatically manages CPU priority for specific applications to optimize flight simulation performance and system resource allocation.
Accessing Process Priority Manager
Click ⚡ Process Priority Manager in the System category to open the process management interface.
Priority Manager Interface
The Process Priority Manager window contains:
- Info Banner: Description, service status indicator, and auto-start checkbox
- Toolbar: Add Rule, Edit, Remove buttons
- Rules Grid: Displays all configured priority rules with status
- Service Controls: Start Service and Stop Service buttons
Priority Rule Configuration
| Priority Level | System Impact | Recommended Uses |
|---|---|---|
| Idle | Lowest priority, background processing only | Non-essential background applications |
| Below Normal | Reduced priority, yields to normal processes | Utility applications, monitoring tools |
| Normal | Standard system priority | General applications, default setting |
| Above Normal | Elevated priority, preferred scheduling | Flight simulators, important applications |
| High | High priority, significant CPU preference | Critical flight simulation processes |
| Real Time | Maximum priority, preempts most processes | Expert use only - can freeze system |
Creating Priority Rules
Click ➕ Add Rule to open the rule creation dialog.
Use Pick Process to select from running processes, or manually enter the executable name (e.g., "FlightSimulator.exe").
Select the desired priority level from the dropdown. Above Normal is recommended for flight simulators.
Rules Grid Columns
| Column | Description |
|---|---|
| Enabled | Shows if the rule is active |
| Executable | Name of the target process |
| Priority | Configured priority level |
| Status | Current process state (Running/Stopped) |
Service Management
| Control | Function |
|---|---|
| ▶ Start Service | Begin monitoring and applying priority rules |
| ⏹ Stop Service | Stop monitoring (rules no longer applied) |
| Auto-start checkbox | Automatically start service when HangarControl launches |
| Service Status | Shows RUNNING (green) or STOPPED (red) |
Professional Use Cases
- Flight Simulator Optimization: Ensure MSFS.exe, X-Plane.exe, or DCS.exe receive high priority for smooth performance
- Background Process Management: Set streaming software and recording applications to appropriate priority levels
- System Resource Control: Prevent non-essential processes from impacting critical flight simulation applications
- Multi-Application Scenarios: Balance priority between simulator, voice communication, and streaming applications
Snapshot Manager
Provides VM-style snapshots for HangarControl configurations and mod directories, enabling rapid configuration backup, restoration, and environment switching.
Accessing Snapshot Manager
Click 📸 Snapshot Manager in the System category to open the snapshot management interface.
Snapshot Manager Interface
The Snapshot Manager window contains:
- Action Bar: Create Snapshot and Settings buttons
- Snapshots List: Grid showing all existing snapshots with name, date, type, and size
- Details Panel: Detailed information about the selected snapshot
- Footer Controls: Re-run, Restore, Delete, and Close buttons
Re-run
Select an existing snapshot and click Re-run to take a fresh capture using the same selection. The Create Snapshot dialog opens preloaded with that snapshot's directories and individual files and its name, so you can confirm and go. This is the quickest way to keep a rolling backup of the same set without rebuilding the selection each time.
Re-run creates a new snapshot — it does not overwrite the one you selected.
Snapshot Types
| Snapshot Type | Included Content | Use Cases |
|---|---|---|
| HangarControl Complete | Everything: Profiles, Calibration, ModsHangar, DeviceLayouts, AppHangar, MSFS Config Profiles, Documentation, Logging, and the HangarControl AppData folder | Full backup before a major change or a machine move |
| ModsHangar | ModsHangar containers and metadata only | Mod configuration snapshots for testing |
| Control Bindings | All control profiles plus the device binding files kept in AppData | Backup before rebinding or reorganizing devices |
| Custom | Any directories and individual files you choose | Specialized backup needs, custom workflows |
The Control Bindings preset excludes four bootstrap files: settings.json, simpaths.json, uisettings.json, and diagnostics.json. This is intentional. Restoring your bindings will not quietly revert your storage paths, simulator paths, interface preferences, or logging setup to whatever they were when the snapshot was taken.
Use HangarControl Complete when you do want those included.
Creating Snapshots
Click 📸 Create Snapshot to open the snapshot creation dialog.
Select a Quick Preset (HangarControl Complete, ModsHangar, or Control Bindings) to load its directory selection, or build your own from Add Directory and Add File. Adding or removing anything after picking a preset switches the snapshot to Custom, so the preset itself is never modified.
Provide a descriptive name for easy identification later (e.g., "Before PMDG Update", "Working Config 2024-01").
Enable compression (recommended) and verification. Add an optional description for documentation.
Click 📸 Create Snapshot to begin the snapshot process with progress tracking.
Create Snapshot Dialog Options
| Option | Description |
|---|---|
| Snapshot Name | Required identifier for the snapshot |
| Description | Optional notes about the snapshot purpose |
| Directories | List of directories to include (from preset or custom) |
| + Add Directory | Browse to add additional directories. Added folders default to including all subdirectories |
| + Add File | Browse to add one or more individual files, for capturing a specific file such as UserCfg.opt alongside your folder selections. Multi-select is supported |
Each entry in the list shows its display name, its full path, and its scope beneath — All subdirectories, Depth: n level(s), or Individual file. The 🗑️ button next to an entry removes it.
An entry whose path no longer exists on disk is flagged in the list rather than silently dropped, so a preset pointing at a folder you have since moved is obvious before you create the snapshot.
| Compress files | Enable compression to reduce storage (recommended) |
| Verify after creation | Validate snapshot integrity after creation |
| Estimated Size | Shows projected snapshot size and available space |
Managing Snapshots
Select a snapshot in the list to view detailed information including creation date, file count, storage size, compression ratio, and included directories.
Select a snapshot and click ⏮️ Restore to restore files to their snapshot state. A confirmation dialog shows what will be restored.
Select a snapshot and click 🗑️ Delete to remove it and free storage space.
Snapshot Settings
Click ⚙️ Settings to configure snapshot system behavior:
| Setting | Description | Default |
|---|---|---|
| Storage Location | Where snapshots are saved | HangarControl data folder |
| Max Snapshot Count | Maximum number of snapshots to keep | 10 |
| Max Age Days | Delete snapshots older than X days | 90 |
| Max Storage Size | Maximum total storage for snapshots | 50 GB |
| Cleanup Behavior | Action when limits reached | Delete Oldest |
| Compress Enabled | Default compression setting | Enabled |
Cleanup Behaviors
| Behavior | Action When Limit Reached |
|---|---|
| Delete Oldest | Automatically remove oldest snapshots |
| Prompt User | Ask user before deleting |
| Prevent New | Block new snapshot creation until space freed |
Professional Snapshot Workflows
- Configuration Testing: Create snapshots before major configuration changes for rapid rollback capability
- Mod Environment Switching: Maintain multiple mod configurations for different aircraft or scenarios
- Team Collaboration: Share known-good configurations through snapshot export and distribution
- Training Environments: Rapidly reset to clean configurations for training or demonstration purposes
HC Variable Manager
📊 HC Variable Manager — create and manage named numeric values for use in bindings and conditions. Opening it from here is the same manager you reach from a binding's Browse button, and it is the quickest way to add variables or check their live values without opening a binding first. See HC Variables for full documentation.
Binding List
📋 Binding List — view, search, and export every binding active in the current profile, across all devices at once.
This is the tool to reach for when you are trying to work out which control is firing something unexpected, or when you want a single readable list of a setup you have built up over months. It can be left open alongside the rest of the application, and offers an always-on-top option so you can keep it visible while working in another window.
The same list is available per profile from the Profiles list right-click menu as List Bindings….
SimVR Optimizer
🥽 SimVR Optimizer — a separate bundled utility for optimizing VR performance settings for flight simulators. Selecting it launches the tool as its own application.
Full documentation for the optimizer lives alongside this guide. Click the Documentation button in the top-left corner of HangarControl's main view to open the documentation folder, and you will find VR_Auto_Optimizer_Documentation.docx there.
Clean Up Orphaned Data
🧹 Clean Up Orphaned Data — reclaims leftover profile and hangar folders, and binding entries left behind by profiles that were deleted or renamed in earlier versions.
The tool previews exactly what it intends to remove before doing anything, so you can review the list and cancel. It never touches data belonging to a profile you still have.
MSFS Tools
MSFS Configuration Managers
Comprehensive configuration management for Microsoft Flight Simulator 2020 and 2024, providing advanced UserCfg.opt editing and profile management capabilities.
MSFS 2020 Configuration Manager
Click ⚙️ MSFS 2020 Configuration Manager in the Microsoft Flight Simulator category.
Use the categorized interface to modify advanced MSFS 2020 settings with validation and descriptions.
Create and switch between multiple configuration profiles for different use cases.
MSFS 2024 Configuration Manager
Click ⚙️ MSFS 2024 Configuration Manager in the Microsoft Flight Simulator category.
Access MSFS 2024-specific settings including new graphics options, cloud streaming configurations, and enhanced multiplayer settings.
Configuration Categories
| Category | Configuration Areas | Key Settings |
|---|---|---|
| Graphics | Rendering, quality, performance | Resolution, texture quality, shadows, reflections |
| VR | Virtual reality optimization | VR rendering scale, motion smoothing, eye tracking |
| Multiplayer | Online features and connectivity | Live traffic, multiplayer settings, bandwidth |
| Input | Control sensitivity and response | Control curves, deadzone settings, sensitivity |
| Audio | Sound processing and output | Audio device selection, spatial audio, effects |
Profile Management
Save different configuration sets for specific use cases: High Performance, High Visual, VR Optimized, Multiplayer.
Rapidly switch between profiles before flights without manually adjusting individual settings. Profiles automatically backup current settings before activation.
Built-in validation ensures configuration changes are compatible with system capabilities and MSFS requirements.
ATS Tools Category
Tools specifically designed for American Truck Simulator and Euro Truck Simulator workflows and configuration management.
Planned ATS Utilities
- ATS Configuration Manager: Profile management for truck simulation settings
- Mod Manager: Truck simulator mod organization and deployment
- Route Planner Integration: Tools for route planning and cargo management
- Hardware Integration: Specialized support for truck simulation hardware
DCS Tools Category
Specialized utilities for DCS World military simulation integration and workflow enhancement.
DCS Integration
HangarControl provides native DCS World cockpit control through a TCP bridge and aircraft-specific command libraries. When your hangar is configured for DCS World, HangarControl connects to the Lua export script running inside DCS and sends cockpit commands, axis values, and universal flight control inputs in real time. See the DCS World Integration section in Control Bindings for full documentation.
Coming Soon
- DCS Configuration Manager: Mission and module configuration management
- Lua Script Manager: DCS Lua script organization and deployment
Best Practices for Tool Usage
System Tools Best Practices
- Process Priority: Start with Above Normal for flight simulators, use High only when necessary
- Snapshot Timing: Create snapshots before major changes, major updates, or new mod installations
- Storage Management: Configure automatic cleanup to maintain optimal disk space usage
- Service Monitoring: Enable auto-start for critical services like Process Priority Manager
MSFS Tools Best Practices
- Profile Backup: Always backup current configurations before making changes
- Testing Approach: Test configuration changes in non-critical scenarios first
- Documentation: Document custom configurations and their intended use cases
- Version Management: Maintain separate profiles for different MSFS versions