HangarControl Documentation

Complete Step-by-Step Guide

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.

💡 Before You Begin HangarControl requires registration before accessing most features. You can start a 5-day free trial or activate with a full license key purchased from OverkillSimulations.com. Registration instructions are provided in the Settings section.

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
⚠️ Connection Status Note The connection status reflects the currently active simulator type configured in your profile. If you switch simulators (for example, from MSFS to X-Plane), you may need to navigate into Control Bindings and back out for the status indicator to refresh and display the correct simulator connection.

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:

  1. Control Bindings: Activates the selected bindings profile
  2. Mods Hangar: Deploys the selected mod profile (disabling active mods first if configured)
  3. App Hangar: Launches applications in the configured order
  4. Controller Bridge: Starts the runtime service after a delay to ensure SimConnect is ready
ℹ️ Note The Controller Bridge starts after applications launch with a short delay. This ensures SimConnect is fully initialized before HangarControl attempts to connect, preventing connection failures when launching MSFS through Quick Launch.
💡 Quick Launch Tip Create separate Quick Launch profiles for different scenarios, such as "VR Flying," "Streaming Setup," or "Training Session." Each profile can activate different bindings and launch different companion applications.

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
1 Exiting Restricted Mode

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.

1 Full License Activation

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.

2 Trial Activation

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.

⚠️ Important Set your storage paths early before creating hangars, profiles, or calibrations. Changing paths later does not move existing data—you would need to manually copy files to the new location.
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.

ℹ️ Not Included On Purpose Your license, logs, crash reports, Snapshot Manager archives and the documentation folder are left out. The license is tied to the PC it was activated on, so register again with your email and license key after restoring on a new PC.

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.

💡 Backup From a Newer Version If the backup was made with a newer HangarControl than the one you are running, the summary warns you. Update HangarControl first, then restore.
ℹ️ If HangarControl Can't Restart Itself The restore is already prepared at that point. Exit HangarControl completely (right click the tray icon and choose Exit), then start it again and the restore finishes.

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
💡 Verify Auto-Detect Results After using Auto-Detect, verify that the path is correct—especially if you have moved your Community folder to a custom location or have multiple MSFS installations. An incorrect path will prevent the HangarControl bridge from installing properly.

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.
ℹ️ Note The change is applied immediately if HangarControl is already connected to X-Plane — no restart needed. It is also written to the X-Plane plugin folder so the plugin picks it up the next time X-Plane loads, which means the setting survives across sessions and applies from the moment the plugin starts.

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.

💡 Yoke or Rudder Not Responding in X-Plane? If you have bound your flight controls through HangarControl and they do nothing in X-Plane, this checkbox is the first thing to look at. It is off by default, so a fresh installation leaves X-Plane in charge of flight controls until you turn it on.

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 aircraft
  • EnableCDUBroadcast.0=1 – Enables Captain's CDU broadcast
  • EnableCDUBroadcast.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.

ℹ️ Administrator Rights Are Required Changing Windows power settings needs elevation. If HangarControl is not running as administrator, it offers to restart itself with elevated access so the fix can be applied. Accepting closes and reopens the application. If the restart fails, right-click 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.

💡 Random Device Dropouts If a device disconnects and reconnects at seemingly random intervals, USB power management is the most common cause and worth ruling out before anything else. It is particularly common on powered hubs and on front-panel USB ports.

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.

⚠️ Caution Modifying USB power settings affects your entire system, not just HangarControl. While these optimizations help prevent device disconnections, they may increase power consumption. Monitor your system closely after making changes, and use Restore Defaults if you experience any issues.

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.

⚠️ Critical: Simulator Type Selection The simulator type you select for a hangar determines which communication service HangarControl uses. Selecting the correct type is essential for proper operation and system efficiency.

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
ℹ️ About Custom Mode When set to Custom, HangarControl runs all simulator services simultaneously (SimConnect, X-Plane plugin, DCS, and ATS). While this provides maximum compatibility, it creates additional system overhead since multiple communication services are running whether needed or not. For best performance, select the specific simulator you intend to use.

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:

1 Enter Hangar Name

Give your hangar a descriptive name that identifies the simulator or use case, such as "MSFS 2024", "X-Plane 12", or "DCS Warbirds".

2 Select Simulator Type

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.

3 Save

Click Save to create the hangar. It will appear in the Hangars list and be ready for profiles.

💡 Best Practice Create separate hangars for each simulator you use. For example, create an "MSFS 2024" hangar with the Microsoft Flight Simulator type, and an "X-Plane 12" hangar with the X-Plane type. This ensures optimal performance since only the required services run when you activate profiles in that hangar.

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.

1 Select Source Profile

Select the profile you want to copy in the Profiles list.

2 Click Copy to Hangar

The Hangar Selector dialog opens, showing all available hangars except the current one.

3 Select Target Hangar

Choose the destination hangar and click Copy.

4 Name the New Profile

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.

💡 Clearing an Override Clearing a binding on a child profile clears it for that profile — it does not fall back to showing the parent's binding again, and it will not fire in the sim. The clear is recorded against the child, so it survives reloading. If you want the parent's binding back, use Remove Parent and re-assign it, or re-create the binding on the child.
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 Are Never Inherited

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.

⚠️ Requirements for Bind Aircraft

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.

1 Start the Service

Click ▶ START SERVICE to initialize HangarControl and connect to your simulator.

2 Load an Aircraft

In your simulator, load the aircraft you want to bind to this profile. Wait for the aircraft to fully load.

3 Select the Profile

In HangarControl, select the profile you want to associate with this aircraft.

4 Click Bind 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:

  1. HangarControl detects the aircraft identity from the simulator
  2. It matches the aircraft against your saved bindings
  3. If a match is found, HangarControl automatically switches to the associated profile
  4. The profile's indicator changes from orange to green, confirming the bound aircraft is detected
  5. All device configurations for that profile become active
💡 Aircraft Ticker The aircraft ticker at the top of the Controls & Devices column displays the currently detected aircraft name. This scrolling display shows the aircraft title reported by your simulator, helping you confirm which aircraft HangarControl has identified.

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 .hcprofile file. 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 .hcprofile file 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 .hchangar file.
  • Import Hangar: Choose Import Hangar… to recreate a hangar and all of its profiles from a .hchangar file.

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
💡 Aircraft Detection The marquee provides immediate visual feedback that HangarControl is communicating with your simulator. If the marquee shows "Waiting for aircraft..." while you have an aircraft loaded, check your connection status and ensure the service is started.

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
ℹ️ Active Profile Required You must have a profile selected and marked as active before starting the service. If no active profile is found, HangarControl displays a warning message.

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.

ℹ️ A Separate Application Sim Monitor is its own application, bundled with HangarControl and installed automatically to %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.

💡 "SimMonitor.exe not found" If you see this message, the bundled copy has not been extracted — most often because security software quarantined it, or because HangarControl has not completed a startup since the files were removed. Restart HangarControl to trigger extraction, and if the message persists, add the folder named in the error to your antivirus exclusions.

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 GEAR to 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.

💡 Performance Tip Complex aircraft like the PMDG 737 or FlyByWire A32NX can have thousands of L:Vars. Use vendor filters to exclude vendors you don't need (such as P42 system variables) to significantly improve Sim Monitor performance.

Using Sim Monitor for Binding Discovery

The Sim Monitor is invaluable for discovering which variables control specific aircraft functions:

  1. Open Sim Monitor while your aircraft is loaded
  2. Check Show only changed to filter to active variables
  3. Interact with a control in the cockpit (click a switch, move a lever)
  4. Watch for variables that change — these are candidates for your binding
  5. 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.

⚠️ Experimental Feature

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:

  1. Select a device in either the Active Devices or Available Devices list
  2. Click Rename Selected…
  3. Enter a friendly name in the dialog
  4. Click OK to apply

To reset a device's name back to its original hardware name:

  1. Select the renamed device
  2. Click Reset Name
💡 Custom Device Names Renaming devices is useful when you have multiple identical controllers (e.g., two Thrustmaster throttles). Assign descriptive names like "Left Throttle" and "Right Throttle" to easily distinguish them in the Attached Devices list.
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
⚠️ Important: Save Your 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:

  1. Right-click on a device in the device dropdown
  2. Select Hide in calibration menu from the context menu

To show a hidden device again:

  1. Check Show hidden devices to reveal hidden devices
  2. Right-click on the hidden device (marked with "(hidden)")
  3. 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:

1 Click Calibrate

Click the Calibrate button next to the axis you want to calibrate. A 5-second countdown timer begins.

2 Move Through Full Range

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)"

3 Calibration Complete

When the timer expires, calibration is complete. The status bar shows "Calibration complete." The progress bar now reflects the calibrated range.

💡 Calibration Tip Push the axis all the way into its mechanical stops and hold it there for about a second at each end, rather than sweeping quickly through the range. For a throttle, run the lever to idle, hold, then to full, and hold. For a joystick, hold briefly in each corner. Holding at the true endpoints gives HangarControl the cleanest possible range.
ℹ️ Spikes at the Stops Are Filtered Out Some potentiometers throw a momentary garbage reading right at the mechanical stops — the Warthog throttle slider is a well known example. Previously a single bad reading could become your calibrated minimum or maximum and throw off the whole range, and the workaround was to back off the ends slightly.

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
⚠️ Important: Save Your 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.

1 Connect the Device

Make sure the controller you want the settings moved onto is plugged in and detected. Only currently connected controllers are offered as targets.

2 Right-Click the Old Entry

Right-click the device whose settings you want to move — the stale entry, typically the one showing the red dot — and choose Replace Device….

3 Pick the Target

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.

4 Choose the Scope

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.

5 Confirm

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.

💡 Cleaning Up the Duplicate If the same controller is currently showing twice — the stale entry plus a fresh unbound one — Replace Device collapses the two into a single entry. Your custom name and active state are kept from the entry that was actually configured.
⚠️ This Cannot Be Undone

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.

ℹ️ Nothing to Reconnect? If every saved controller is already connected, HangarControl says so and there is nothing to do. If no controllers are connected at all, plug them in, wait a few seconds for Windows to detect them, and try again. Each connected controller can only take the place of one saved device.

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.

ℹ️ Specialized Device Configuration Some devices have their own dedicated configuration windows with device-specific features. These include:
  • Keyboards
  • MIDI devices
  • Logitech Radio Panel
  • WinWing FCU/EFIS panels
  • Knobster encoders
  • Dedicated USB encoders
  • Stream Deck
These specialized devices are documented in their own sections of this documentation.

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.

💡 Sharing Configurations Export and Import make it easy to share device configurations with the flight simulation community. Export your throttle quadrant setup, share the .hcdevice file, and others can import it to get the same bindings instantly.
Clear All Bindings

Click 🗑 Clear All Bindings to remove all button and axis bindings for this device. A confirmation dialog appears before clearing.

⚠️ Cannot Be Undone

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.

💡 Removing a Library Encoder Sticks If HangarControl's device library auto-detected an encoder on your hardware and you would rather bind those two buttons individually, removing it is permanent. The suppression is recorded, so the encoder will not come back the next time the device loads.
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 .hcnames file, 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.

💡 Identical Devices A device with no name of its own on a control borrows the name from another device of the same model. That is what lets a shared names file or an imported profile work straight away on a different PC. If you run two of the same device, name the second one's controls separately to override the borrowed names.

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.

ℹ️ When Auto-Cancel Is Not Available Auto-cancel works by writing to whatever activates the layer, so it is only offered for conditions HangarControl is able to write to:
  • 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.
In each of these cases the dialog opens with the option disabled and tells you why.
💡 Not on the Default Layer The Default layer is what auto-cancel returns to, so it cannot cancel itself. Selecting it and clicking Auto-Cancel simply tells you so.
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:

  1. For each non-default layer (in order), the condition is evaluated
  2. The first layer whose condition evaluates to true becomes the active layer
  3. The Default layer is always evaluated last, regardless of where it sits in the list
  4. If the Default layer has no condition set, it activates as the unconditional fallback when nothing else matched
  5. If the Default layer does have a condition set, it activates only when that condition is met, exactly like any other layer
  6. If nothing matches at all, all input from the device is blocked until something does
  7. 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.

💡 Practical Example: Mode Switch Set up an HC Variable called "ThrottleMode" and create two layers. Layer 1 has the condition HC:ThrottleMode == 1 and contains bindings for approach mode. Layer 2 (Default) contains your normal bindings. Assign a button to increment HC:ThrottleMode with a cycle range of 0 to 1, and pressing that button toggles your entire throttle quadrant between two complete binding sets.
⚠️ Layer Order Matters

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.

ℹ️ Segmented Axis Control The Axis Binding system excels at converting a single physical axis into multiple discrete commands. For example, you can configure a throttle lever to trigger different flap positions as you move through its range, or set up a rotary encoder to send specific autopilot commands at defined positions.

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.
💡 Between Mode Use "Between" when you want an action to fire while the axis is within a specific range, rather than just when crossing a single point. This is useful for defining zones along an axis where different behaviors should apply.
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
💡 Re-arm Tip A small re-arm value (1-2%) works well for precise detents. A larger value (5-10%) helps prevent jitter on analog axes that have electrical noise near their endpoints.
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
💡 When to Use LoSetCommand vs Aircraft Axes Use LoSetCommand (LOSET_) axes for your primary flight controls — pitch, roll, rudder, and throttle. These work on every aircraft in DCS without needing an aircraft library. Use aircraft-specific axes for cockpit-specific controls like brightness knobs, radar elevation wheels, IFEI brightness, and other per-aircraft dials.
⚠️ Clear the Axis in DCS First When HangarControl drives a flight control, remove that axis from the aircraft's controls in DCS (Options → Controls, Axis Commands). DCS assigns axes to many sticks automatically, and if both DCS and HangarControl drive the same control they fight each other, which shows up as jitter or small jumps, most noticeably in helicopters.
ℹ️ DCS Axis Tune Does Not Apply Deadzone and curve settings made in DCS's Axis Tune are skipped when HangarControl sends the axis. Set them in HangarControl's Axis Tune Dialog instead. For helicopter cyclics, a small deadzone and a Curvature above 50% (less sensitive near center) is a good starting point.

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)
💡 When to Use Reload L:Vars only exist once an aircraft has created them, so the list depends on what is loaded in the simulator right now. If you have just switched aircraft, or you have loaded into the cockpit since opening the picker, press F5 to pick up the variables the new aircraft has published. The same applies after adding custom B:Events or A:Vars through their managers.

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 heading finds entries matching both words, not either one
  • A minus sign excludes. Prefix a term with - to hide anything containing it. Searching view -pan -chase finds 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.

💡 The Same Syntax Works Everywhere Multi-term and minus-exclusion searching is shared across every picker in HangarControl — the SimConnect Event Picker, the SimVar Picker, and all of the DCS pickers. Learn it once and it works everywhere you are hunting for a command.
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:

  1. A user catalog at %AppData%\HangarControl\catalog\bevents.json
  2. The catalog shipped with the application, in its Data folder
  3. 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.

ℹ️ Your Aircraft's Event Is Not in the List? Because the list is a fixed catalog, an event specific to an add-on aircraft will not appear unless it happens to be one of the common ones. This is not a fault — it is the nature of B: variables, which vary from aircraft to aircraft.

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.

💡 Browse Every Command Without Opening HangarControl HangarControl_DCS_Binding_Reference.html sits in the same documentation folder as this guide. It is a searchable catalog of every command, axis, and cockpit indicator in the shipped aircraft libraries, covering 53 modules, with the device ID, command code, control type, press and release values, and export variables all listed. Handy for planning a panel layout away from your sim PC, or for checking whether a control exists before you go hunting for it in the picker.
ℹ️ Aircraft Detection When you load a mission in DCS, the Lua bridge reports which aircraft you are flying. HangarControl uses this to automatically look up the correct aircraft library when executing commands. If no library exists for the current aircraft, cockpit commands will not function (universal LoSetCommand controls will still work).

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 9 and 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.

⚠️ Both Directions Must Use The Same Command Text Use Value 1 for clockwise / up and Value -1 for counter clockwise / down. The two bindings must carry the byte for byte identical 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.
ℹ️ Answering No Choosing No leaves the pick as an ordinary DCS command sending a single fixed value. That is the right answer when you want one button to jam the selector to one specific detent, for example a button that always selects MASTER ARM SAFE.

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
⚠️ Common Pulse Mistakes If a momentary button (like gear handle) is configured without Pulse, DCS sees it as though you're holding the button down permanently. If a toggle switch (like master arm) is configured with Pulse, DCS sees a quick flip and immediate flip back — the switch effectively does nothing. When in doubt, the DCS Command Picker auto-detects the correct setting based on the command's control type. Trust the auto-detection unless you have a specific reason to override it.
💡 Two-Position Switches on Physical Hardware For physical two-position toggle switches on your hardware, you typically want to bind the ON position to send the DCS switch ON command (Pulse OFF) and bind the OFF position to send the DCS switch OFF command (Pulse OFF). This way your physical switch position matches the cockpit switch position. Use HangarControl's Single Press and Release press types to map different actions to each position of a physical toggle.

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
1 Open the DCS Command Picker

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.

2 Click Add Custom Command

Click + Add Custom Command in the bottom-left of the picker. This opens the custom command editor.

3 Fill in the Command Details

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.
4 Save and Use

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.

💡 Overriding Library Commands If a built-in command has incorrect values (wrong device ID, wrong press value, etc.), add a custom command with the corrected values. Custom commands with the same ID as a library command will override the library version. This lets you fix issues immediately without waiting for an update.
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:

1 Locate the Module 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\.

2 Find Device IDs

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.

3 Find Command Codes

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.

4 Use Device ID 0 for Universal Controls

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.

ℹ️ Community Resources The DCS modding community maintains documentation for cockpit controls. Searching for "{aircraft name} clickabledata" or "{aircraft name} cockpit commands" will often turn up reference sheets with device IDs and command codes already mapped out.
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.

⚠️ Aircraft ID Must Match Custom commands are tied to the aircraft ID as it appears in the DCS Command Picker dropdown. At runtime, HangarControl looks up commands using the aircraft ID reported by DCS itself. If these IDs do not match, the command will not be found during execution. Always add custom commands to the aircraft as it appears in the picker dropdown.

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
💡 Setting a Throttle Idle Floor Some aircraft (such as turboprops) have a physical reverse or beta detent that you want to exclude. Set Use full axis range checked, then enter a Min value corresponding to the idle gate in the sim. For example, entering Min = 0.3 and Max = 1.0 on a B: throttle event means physical axis 0% sends 0.3 (flight idle) and physical axis 100% sends 1.0 (full power), with no reverse zone reachable regardless of lever position.
💡 Partial Range Usage Use partial ranges when you want only a portion of your physical axis to control a specific function. For example, map 0-25% of a throttle lever to reverse thrust, 25-100% to forward thrust, each with their own segment and range configuration.

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.

💡 Neutral Point vs Deadzone These solve different problems. Deadzone widens an insensitive band so small movements near center are ignored. Neutral Point moves where center is. If your stick reads slightly right of center at rest, deadzone will hide it but you will still lose travel on one side — Neutral Point corrects it properly.

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.

ℹ️ Scenario You have a throttle quadrant with a flaps lever and want to map it so that different positions along the lever travel correspond to Flaps Up, Flaps 1, Flaps 2, Flaps 3, and Flaps Full.

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:

  1. Click ➕ Add to create a new segment
  2. Check Between in the At/Between column
  3. Enter the range (e.g., 0 – 15 for Flaps Up)
  4. Set Direction to "Both" so it triggers regardless of movement direction
  5. Set Method to "SimConnect"
  6. Click Pick… and search for "FLAPS_SET"
  7. Enter the appropriate data value for that flap position
  8. 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.

💡 Alternative: Continuous Axis Control If you prefer smooth, proportional flap control rather than discrete positions, create a single segment with "Use axis" checked. The axis position will be continuously sent to the FLAPS_SET event, and the simulator will map it to the appropriate flap position based on the aircraft's flap detent configuration.

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.

💡 Asymmetric Switches This is what makes Toggle useful for startup and shutdown controls where the two directions are not mirror images. Flip a switch ON to run battery, APU start, anti-collision, and circuit breakers in order, then flip it OFF to send a single APU stop.
💡 Mix and Match Each press type can have its own Action Mode. For example, you could configure Single Press to use a single action, Long Press to run a 5-step sequence, and Double Tap to cycle through 3 states — all on the same button.
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.

💡 Sequence Or Step? Ask what one press should do. If one press should fire everything in the list — cold and dark startup, a shutdown flow — you want Sequence. If one press should advance a switch to its next position and wait for the next press, you want Step. A three position flap selector is Step. A five command engine start is Sequence.

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
ℹ️ The Step Editor's DCS Panel Is Deliberately Simpler The DCS panel inside the Step Action editor offers Pulse only. It does not carry the Relative knob or the "Hold while button is held" options that the main Button Configuration window has. Both of those depend on how the physical button is pressed and released, which has no meaning partway through a sequence or a step cycle. If you need either behaviour, configure the command as a Single Action rather than as a step.

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
💡 Set Default Action Type Right-click on the Action Type dropdown and select "Set as Default" to make the current action type the default for all new bindings.
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 _SET or begins with AXIS_, 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
💡 Sync A Bug To Your Current State This is how you build a "set the heading bug to my current heading" button. Bind 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.
ℹ️ The Offset Field Is For Frame Of Reference Use Offset when the variable you are reading and the value the event expects do not share a zero point — a reciprocal course needs +180, and some add-on gauges index from a different origin. If the numbers come out consistently wrong by a fixed amount, Offset is the field to correct it in.
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
💡 Cycle On A Push Button Cycle exists for push buttons, where you have no way to go back down. For a three position switch, set Step to 1, Min limit to 0, and Max limit to 2. Presses then give you 0, 1, 2, 0, 1, 2 and so on. Use Increment and Decrement instead when you have two buttons or an encoder and can travel both ways.
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.
💡 Relative Knob Step Size When Relative knob is ticked and the Value box is left blank, the step defaults to 0.1 — not the library's PressValue. On the levers this feature exists for, PressValue is 1.0, which would slam the knob to full travel on the very first click. Set the Value explicitly to get the resolution you want, for example 0.05 for a fine dimmer.
ℹ️ Remembered Positions Reset With The Aircraft Knob positions are tracked per aircraft, per device, per command. Changing aircraft in DCS clears every remembered position, so a knob always starts from Min again in a new jet rather than inheriting where you left the last one.
⚠️ Pulse Mode Is Critical Getting the Pulse setting wrong is the most common issue with DCS bindings. If a cockpit button that should click and release is set to non-pulse, it will behave as if you are holding the button down forever. If a two-position toggle switch is set to pulse, it will flip and immediately flip back. The DCS Command Picker auto-sets Pulse based on the command's control type (momentary vs toggle), but you can always override it manually.
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 toggle asks 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 rotary or multiposition asks 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.

⚠️ Yes Overwrites Your Existing Steps If the press type you are editing already has a Step list built, answering Yes throws it away and replaces it with the two step toggle pair. Answer No if you were adding this command to an existing cycle rather than starting a new one.
💡 When To Answer No Answer No when you want the physical switch position to match the cockpit switch position rather than cycling. In that case bind the ON value to Single Press and the OFF value to Release, both with Pulse unchecked, so your hardware toggle and the cockpit toggle stay in sync. A Step cycle is the better choice for a momentary button that has to drive a two position switch.
ℹ️ Where Each Prompt Lives The toggle prompt above is specific to the Button Configuration window. The rotary and multiposition selector prompt is built into the DCS Command Picker itself, so it appears from every dialog that opens the picker, including axis and Stream Deck binding. Picking a toggle command from one of those other dialogs will not offer to build a Step cycle.

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
💡 HC Variables vs Flags Flags are binary — they are either ON or OFF. HC Variables are numeric and can hold any value, making them ideal for mode cycling, counters, and multi-state logic. Use flags for simple two-state toggles and HC Variables when you need more than two states.
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.
ℹ️ Fire and Forget The launch happens on a background thread and HangarControl never waits for the program to finish, so a slow-starting application can never hold up your controls or delay the next input. If the program cannot be started, the failure is written to the log and the binding simply does nothing.
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.
ℹ️ Off the Input Thread Messages are sent on a background thread, so there is no impact on sim or control performance. TCP connection attempts are given two seconds to complete — if the destination is not listening, the attempt is abandoned and logged rather than stalling.
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.

ℹ️ Automatic Release Binding When you save a Reverse Thrust action on a Single Press type, HangarControl automatically creates a matching Release press type that runs the disengage sequence. You do not need to manually configure the release binding.
💡 When to Use Reverse Thrust vs SimConnect Event Use the Reverse Thrust action type when your aircraft requires a specific sequence of commands to properly engage reverse, or when you need hold-to-repeat behavior (like continuously sending DECREASE_THROTTLE). For aircraft that support a simple toggle event for reverse thrust, a standard SimConnect Event binding may be sufficient.
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 Logic Build your condition flow step-by-step. Add conditions and use AND/OR/IF operators between them to create complex logic. The last operator in the list is ignored (it has nothing following it to connect to).

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:

  1. A condition to evaluate: What state to check (flag, variable, or button)
  2. An action when TRUE: What to do when the condition is met
  3. 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.

ℹ️ Not Just Buttons Conditional operations are available on encoders too — dedicated encoders, RotAIR stations, and Knobster controls all open the same editor with the same condition types and the same action types. A single encoder detent can therefore do something different depending on aircraft state, which is what makes one physical knob able to serve as heading, course, and altitude selector depending on a mode variable.

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
ℹ️ L:Var and A:Var Are MSFS Only L:Var and A:Var conditions read MSFS values and will not evaluate under X-Plane or DCS. Use Flag, Button State, or HC Variable instead — all three work identically regardless of which simulator you are running.

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.

ℹ️ Flags Are Global Once created, a flag can be referenced from any device and any button configuration. This allows you to create a flag on one device (e.g., a Stream Deck button) and use it as a condition on another device (e.g., a joystick button). Flags provide a powerful way to coordinate behavior across your entire cockpit setup.
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
💡 Autopilot Mode Cycler Example Create an HC Variable called 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
💡 Modifier Button Example Create a "Shift" button that enables alternate functions: Set up a Button State condition checking if Button 1 is Held. When TRUE, the action sends one command; when FALSE, it sends a different command. Now Button 1 acts as a modifier that changes what other buttons do.

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.

⚠️ Important: Save Your Configuration After creating conditional operations, you must click Save All in the Button Configuration window to persist your changes. Closing the window without saving will discard all conditional operations you've created or modified.

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:

  1. Condition Type: L:Var (Local Variable)
  2. Variable Name: A32NX_FCU_HDG_MANAGED_ACTIVE
  3. Operator: == (Equals)
  4. Value: 0
  5. When TRUE (HDG mode is OFF): SimConnect Event "A32NX.FCU_HDG_PULL" (engages heading mode)
  6. 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
ℹ️ Limits Are Enforced Everywhere Min, Max, and wraparound are properties of the variable itself, so they apply to every binding that modifies it — buttons, encoders, Stream Deck keys, touch panels, and conditional actions alike. You only have to define the range once.

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.

💡 Per-Binding Range vs Variable Range This Min and Max belongs to this binding. The variable itself can also carry its own Min, Max, and wraparound setting in the HC Variable Manager, which applies to every binding that touches it. Set the range on the variable when the limits are a property of what it represents — a four-position mode selector is always 0 to 3. Set it here when one particular button should only work within part of the range.

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 Variable List Is Fixed While the Overlay Is Open

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.

ℹ️ Devices With Their Own Configuration Panel Bind Toggle works with DirectInput hardware — sticks, throttle quadrants, button boxes, and the Honeycomb Bravo. Devices that have a dedicated configuration panel, such as MIDI controllers and other specialized hardware, are bound from that panel instead. If you pick one here, HangarControl explains this rather than saving a binding that would not work: open that device's own configuration, choose any button or encoder, and bind it to the SimConnect action HC Variable OSD: Toggle On-Screen Display — searching the picker for "OSD" finds it.
💡 Debugging a Cycle If a mode cycler is skipping states or sticking, put the OSD up and press the button. You will see immediately whether the variable is advancing by the amount you expect, whether it is wrapping where it should, and whether it is being reset by something else you forgot about.

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.

  1. Open HC Variable Manager and create a variable named AP_MODE with a default value of 0
  2. 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
  3. 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.

💡 Coming From a Hand Made Setup If you set up encoders on a Funky Coder by hand before this support existed, remove them so the built in setup takes over. If you use HangarControl's encoder acceleration, leave the Funky Coder's own acceleration switched off.

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.

⚠️ Genuine Knobster Only HangarControl currently supports the genuine Knobster device manufactured by the official Knobster project. DIY clones and third-party replicas are not yet supported. Support for DIY variants may be added in a future update.

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:

  1. Click the Configure button next to the control you want to set up
  2. The Knobster Binding Dialog opens
  3. Select the action type and configure the specific action
  4. Optionally add conditional operations
  5. 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 like AVIONICS MASTER SWITCH and voltages like ELECTRICAL MAIN BUS VOLTAGE both work.
ℹ️ Displays Staying On? If the variable has no reading (the simulator isn't connected, or the name is misspelled), the displays stay lit rather than going dark. If the panel never turns off in a particular aircraft, try a different Power SimVar for that aircraft.

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
💡 Quick Setup Tip For standard radio operation, simply click each mode position once — the smart defaults will configure everything automatically. You only need to make changes if your aircraft uses non-standard radio events or you want custom behavior.

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.

ℹ️ Display Multiplier The Multiplier field controls how the raw SimVar value is scaled for display. For COM/NAV frequencies stored in Hz, a multiplier of 100 converts to the standard MHz display format. ADF frequencies typically use a multiplier of 1 since they're already in KHz.

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)
⚠️ Hardware Limitation The Multi-Panel has only a single encoder knob. When in IAS, HDG, or CRS modes, the encoder typically controls only one value - configure the top row display to show the value being adjusted. The bottom row can display a related reference value or be set to show 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
  1. Configure your Multi-Panel as desired
  2. Click Export in the preset controls
  3. Choose a location and filename for the JSON file
  4. Click Save
Importing a Configuration
  1. Click Import in the preset controls
  2. Browse to and select a Multi-Panel preset JSON file
  3. Click Open
  4. The preset is added to your preset list and can be loaded onto any device
💡 Quick Setup Tip For standard MSFS autopilot operation, load the "MSFS Default (Generic)" preset. This configures all modes, buttons, and LED feedback automatically. You only need to make changes for aircraft with non-standard autopilot implementations.

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.

ℹ️ LED Threshold The LED Threshold setting determines when a button LED illuminates. For boolean SimVars (0 or 1), the default threshold of 0.5 works correctly. For other value ranges, adjust the threshold accordingly.

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:

  1. Click the Configure button next to the control
  2. The Binding Dialog opens
  3. Select the action type and configure the specific action
  4. Optionally add conditional operations
  5. 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
ℹ️ Dedicated HID Handling RotAIR encoders use dedicated HID-based processing that bypasses DirectInput. This provides more reliable pulse detection and prevents the "double-step" issues that can occur with fast encoder rotation. HangarControl automatically detects RotAIR devices and routes them through this optimized path.

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:

  1. Preset Selection and Management
  2. Display Bindings
  3. LED Indicator Bindings
  4. Encoder Bindings
  5. 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
1 Configure Your Bindings

Set up your display bindings, LED bindings, and encoder actions as desired.

2 Save the Preset

Click the 💾 Save button in the Preset area. Enter a name for your preset in the dialog that appears.

3 Access Your Preset

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.

1 Open Display Binding Dialog

In the Display Bindings section, click the Configure button next to the display you want to set up (SPD, HDG, ALT, or V/S).

2 Select Source Type

Choose SimVar for standard MSFS variables or LVar for aircraft-specific local variables.

3 Enter Variable Name

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).

4 Set Units and Multiplier (Optional)

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.

1 Open LED Binding Dialog

In the LED Indicators section, click the Configure button next to the LED you want to set up.

2 Select Source Type and Variable

Choose SimVar or LVar and enter the variable name. For example, AUTOPILOT MASTER for AP1/AP2, or I_FCU_AP1 for Fenix.

3 Set Threshold

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.

4 Invert Option

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.

1 Open Encoder Configuration

Click on an encoder in the Encoder Bindings section to open the encoder configuration dialog.

2 Configure CW/CCW Actions

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
3 Configure Push Action

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.

💡 Tip Start with a built-in preset that matches your aircraft, then customize individual bindings as needed. This saves time compared to configuring everything from scratch.
⚠️ Important Remember to click Save Configuration after making changes. Unsaved changes will prompt you when closing the window.

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:

  1. Preset Selection and Management
  2. Radio Mode Definitions (display variables, encoder events, transfer events)
  3. Button Bindings (left-click any button)
  4. LED Bindings (click any triangle LED indicator)
  5. Encoder Bindings (click the outer or inner encoder ring)
  6. Mode Editor (right-click any mode button)
  7. 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.

💡 Tip Use the Mode Editor to adapt the RMP for aircraft that use LVars instead of standard SimConnect events. For example, the Fenix A320 uses LVars like 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.

⚠️ Important Remember to click Save Config after making changes. Unsaved changes will prompt you when closing the window. Mode editor changes also require saving the main configuration to persist.

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
ℹ️ Future Expansion Support for additional WinWing devices (throttle quadrants, overhead panels, etc.) is planned for future releases. The configuration system is designed to accommodate new devices as they are added.

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:

  1. Preset & EFIS Panel Selection
  2. Brightness Controls
  3. Brightness Control Bindings
  4. EFIS Baro Brightness Override
  5. Visual Panel Layout (FCU + optional EFIS panels)
  6. Autopilot Controls
  7. Binding Summary
  8. 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

  1. Select your aircraft preset from the Preset dropdown (GA/Airliners or Fenix A320)
  2. Enable EFIS panels if connected (use Auto-Detect or check manually)
  3. Adjust brightness to your preference using the sliders
  4. Optionally bind brightness controls to physical inputs
  5. Customize button bindings as needed for your aircraft
  6. Click Save Configuration to apply your settings
💡 Quick Tip The built-in presets configure all essential bindings automatically. Start with the appropriate preset, then customize individual buttons or encoders as needed. You can always save your customized configuration as a user preset for later use.

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
ℹ️ Customizing Unbound Controls Many of the unbound EFIS controls can be configured manually using aircraft-specific LVars or keyboard shortcuts. Click on any control in the visual panel to open the binding dialog and assign your preferred action.

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
ℹ️ Customization Note The MSFS Default preset provides a solid foundation for general aviation and airliner flying. For aircraft with unique autopilot implementations (PMDG, FlyByWire, iniBuilds, etc.), you may need to customize specific bindings or create a dedicated preset. Click any control in the visual panel to modify its binding.

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:

  1. Preset Toolbar
  2. Visual MCP Panel Layout
  3. Brightness Controls
  4. F/O Brightness Override
  5. Binding Summary
  6. 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
1 Create a New Preset

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.

2 Load an Existing Preset

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 Encoder Note When using the PMDG 737 NG3 preset, encoders use PMDG SDK events with directional suffixes (e.g., 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.

⚠️ Important When F/O Brightness Override is enabled, the F/O Flight Director switch and F/O Course encoder lose their normal aircraft functions. Only enable this if you don't need separate F/O flight director or VOR2 course control.
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
1 Enable F/O Brightness Override

Check the Use F/O Flight Director for Brightness Control checkbox in the Brightness Controls section.

2 Configure Step Size

Use the Step Size slider (1-25%) to set how much the brightness changes per encoder detent. Default is 5%.

3 Adjust Brightness In-Flight

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.

💡 Tip This feature is particularly useful for night flying where you need quick access to brightness adjustment without leaving your flight controls. The step size slider lets you choose between fine control (1-2%) or rapid adjustment (15-25%).
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 SDK Integration PMDG events use the format 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
💡 PMDG Display Values When using the PMDG 737 NG3 preset, display values are read directly from PMDG ClientData rather than SimVars. This provides accurate readings that match the aircraft's actual MCP state, including proper handling of MACH mode and managed speeds.
Typical PAP-3 Setup Workflow
1 Connect Hardware

Connect your WinWing PAP-3 MCP via USB. The device should appear in the Controls & Devices view within a few seconds.

2 Open Configuration

Click on the WinWing PAP-3 entry in the device list to open the configuration window.

3 Select Preset

Choose the appropriate preset for your aircraft: MSFS Default (Generic) for standard aircraft or PMDG 737 NG3 for the PMDG Boeing 737.

4 Adjust Brightness

Set your preferred brightness levels for Panel Backlight, LCD Display, and LED Indicators using the sliders.

5 Configure F/O Brightness Override (Optional)

If you want hardware brightness control, enable the F/O Brightness Override and configure your preferred step size.

6 Save Configuration

Click Save Configuration to apply all settings and close the window. Your configuration is automatically applied when the profile is active.

⚠️ Profile-Specific Configuration PAP-3 configurations are saved per-profile. If you switch to a different profile, you'll need to configure the PAP-3 for that profile as well, or use the preset system to quickly apply your preferred setup.

Stream Deck Plugin

⚠️ Early Access / Preview The HangarControl Stream Deck Plugin is currently in early development and is subject to change. Features, configuration options, and behavior may be modified in future updates. This documentation reflects the current implementation and will be updated as the plugin evolves.

Installing the Plugin

The HangarControl Stream Deck plugin can be installed directly from within HangarControl:

1 Open Settings

Navigate to Settings from the HangarControl main menu.

2 Locate Stream Deck Plugin Section

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.

3 Install or Reinstall

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.

4 Confirm Installation

Click Install in the Stream Deck dialog that appears. The plugin will be added to your Stream Deck software immediately.

💡 Tip If the automatic installer doesn't open, ensure the Elgato Stream Deck software is installed and running. The plugin requires Stream Deck software version 6.0 or later.

Requirements

🔴 HangarControl Service Required The Stream Deck plugin requires the HangarControl application to be running with an active profile for your simulator. Without HangarControl running and connected to your flight simulator, button actions will not execute. Icons will display correctly even when disconnected, but all simulator interactions require the HangarControl service.

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.

💡 Tip The picker requires HangarControl to be running and connected to your simulator for the full catalog to be available. If you see limited results, ensure HangarControl is connected.
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_sync
  • sim/flight_controls/flaps_down
  • sim/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

  1. Start HangarControl and ensure it's connected to your simulator
  2. Open Stream Deck software and navigate to the HangarControl category
  3. Drag an action to a button position
  4. Configure the action in the Property Inspector panel
  5. Select an icon and customize appearance as desired
  6. Set up state monitoring if you want the icon to reflect simulator state
  7. Test the button with your simulator running
💡 Quick Tip Start with SimConnect Event actions for standard aircraft controls. Use SimVar Write for aircraft-specific LVars (like Fenix A320 or PMDG). The Conditional action is powerful for creating smart buttons that adapt behavior based on aircraft state.

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

1 Add New Hangar

Click + New Hangar to create a new application hangar.

2 Configure Hangar Details

Enter a descriptive name and optional description for your hangar in the Edit Hangar dialog.

3 Save Hangar

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:

1 Select Profile

Use the dropdown menu to select which profile to launch from the available options.

2 Launch

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

1 Create New Profile

Click + New Profile to create a new application profile within the current hangar.

2 Configure Applications

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.
💡 Tips Use delay to stagger application launches and prevent system overload. Window positions can be saved after launching the profile. Toggleable windows can be shown/hidden with hardware buttons - great for checklists and reference windows. For URLs, the system default browser will be used.

Hardware Integration

App Hangar integrates with DirectInput devices to provide button-based window management.

Binding a Toggle Button

1 Click Bind Toggle

Click the 🎮 Bind Toggle button on any application in the Profile Editor.

2 Select Device and Button

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.

3 Choose Trigger Type

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

1 Launch Profile

Launch your profile to start all applications.

2 Arrange Windows

Manually position and resize each application window as desired.

3 Save All Positions

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:

  1. Applications launch in sequence according to their order
  2. Each application waits for its configured delay before starting
  3. The button shows "Launching..." during the process
  4. After all apps launch, saved window positions are restored
ℹ️ UWP Applications Apps installed from the Microsoft Store (in WindowsApps folder) are automatically handled with special launch procedures to work around Windows permission restrictions.

Closing a Profile

When you click ⏹ Close:

  1. Each application receives a close request
  2. Browser windows receive a close message
  3. Desktop applications attempt graceful shutdown with a 2-second timeout
  4. 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
💡 Best Practice For single-monitor setups, use the "toggleable window" feature with Short Press triggers to quickly show/hide reference materials without losing focus on your primary application.

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

1 Click + Hangar

Click the + Hangar button to open the Hangar Editor dialog.

2 Enter Hangar Name

Provide a descriptive name for your hangar (e.g., "MSFS 2024 Mods", "X-Plane Scenery").

3 Select Game Type

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
💡 Tip The ▶ Activate button provides a quick way to switch between mod profiles. It performs a clean-slate deployment by first disabling all currently active mods in the hangar, then enabling all containers in the selected profile. This is ideal for switching between different aircraft configurations or mod sets.

Creating a Profile

1 Select a Hangar

Click on a hangar to select it as the parent for the new profile.

2 Click + Profile

Click the + Profile button to open the Profile Editor.

3 Configure Paths

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)
💡 Tip Use the Auto-Detect button to automatically find your game's mod directory. This works for MSFS, X-Plane, and DCS installations.

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.
1 Copy Profile to Another Hangar

Select the profile you want to copy, then click → Hangar. A dialog will display all available destination hangars.

2 Select Destination

Choose the target hangar from the list and click Copy.

3 Name the New Profile

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.

ℹ️ Note When copying a profile to another hangar, all containers are copied but start in a disabled state. This prevents accidental deployment conflicts until you're ready to enable them in the new location.

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.

⚠️ Batch Delete Cannot Be Undone

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.

⚠️ Repository Overlapping the Deploy Folder

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.json is 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.

💡 Seasonal and Situational Mods This is handy for a container holding a set of related addons where you only sometimes want all of them — a scenery bundle with a heavy photogrammetry package, or an aircraft container with optional liveries. Untick what you do not need, re-enable the container, and everything else stays exactly as it was.

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
ℹ️ About Links Link operations create junctions (for folders) or hard links (for files) instead of copying data. This saves disk space and allows instant "deployment" since the files aren't actually moved. However, links only work on the same drive and require appropriate permissions.

Deployment Operations

Enabling a Container

1 Click Enable

Click the Enable button on a container row, or select multiple containers and click Enable Selected.

2 Conflict Check

The system scans for file conflicts with currently enabled containers. If conflicts are found, the Conflict Dialog appears.

3 Deployment Progress

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
⚠️ Important Overwriting conflicts may break other mods that depend on those files. Use the Skip option if you're unsure, or disable the conflicting container 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
💡 Best Practice Use the Link operation for large scenery packages and aircraft to save disk space. Reserve Copy operations for small files or items that may need modification in the target location.

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:

1 Open Tools Window

Click 🛠️ Tools in the Home View navigation sidebar to open the comprehensive Tools window with categorized utilities.

2 Navigate Tool Categories

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

1 Expandable Categories

Click category headers to expand or collapse tool groups. The ▼ indicator shows expanded categories, ▶ shows collapsed.

2 Tool Descriptions

Each tool displays a title and comprehensive description explaining its functionality and use cases.

3 Direct Tool Launch

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.

1 Launching DCS Export Manager

From the Home View, click 🛠️ Tools in the navigation sidebar. Expand the 🎮 DCS World category, then click DCS Export Manager to launch.

2 Finding the Documentation

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
1 Open 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
1 Click Add Rule

Click ➕ Add Rule to open the rule creation dialog.

2 Select Process

Use Pick Process to select from running processes, or manually enter the executable name (e.g., "FlightSimulator.exe").

3 Choose Priority Level

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)
⚠️ Caution Use High and Real Time priorities carefully. Real Time priority can cause system instability if the application consumes excessive CPU resources.
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
1 Open 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
ℹ️ Presets Follow Your Data Folders The built-in presets are rebuilt from your live configured paths every time the Snapshot Manager loads. If you have relocated your HangarControl data to another drive, the presets capture your real locations rather than the default Documents folder — there is nothing to update by hand.
⚠️ What Control Bindings Deliberately Leaves Out

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
1 Click Create Snapshot

Click 📸 Create Snapshot to open the snapshot creation dialog.

2 Choose Quick Preset or Custom

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.

3 Enter Snapshot Name

Provide a descriptive name for easy identification later (e.g., "Before PMDG Update", "Working Config 2024-01").

4 Configure Options

Enable compression (recommended) and verification. Add an optional description for documentation.

5 Create

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
1 View Snapshot Details

Select a snapshot in the list to view detailed information including creation date, file count, storage size, compression ratio, and included directories.

2 Restore Snapshot

Select a snapshot and click ⏮️ Restore to restore files to their snapshot state. A confirmation dialog shows what will be restored.

3 Delete Snapshot

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
💡 Tip Create snapshots before major configuration changes, MSFS updates, or new mod installations. This provides a quick rollback path if issues occur.
ℹ️ The Snapshot Folder Is Always Skipped Wherever you put your snapshot storage location, it is never captured by a snapshot — including when it sits inside a folder that is being backed up. Without this, each run would capture every previous snapshot and grow without limit.
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.

💡 Connect Your Devices First For the most thorough cleanup of orphaned binding entries, plug in your hardware before running the tool. Bindings belonging to a device that is not currently connected are treated cautiously, so a device that is unplugged at the time may leave entries behind.

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
1 Access MSFS 2020 Config Manager

Click ⚙️ MSFS 2020 Configuration Manager in the Microsoft Flight Simulator category.

2 Edit UserCfg.opt Settings

Use the categorized interface to modify advanced MSFS 2020 settings with validation and descriptions.

3 Manage Configuration Profiles

Create and switch between multiple configuration profiles for different use cases.

MSFS 2024 Configuration Manager
1 Access MSFS 2024 Config Manager

Click ⚙️ MSFS 2024 Configuration Manager in the Microsoft Flight Simulator category.

2 Configure MSFS 2024 Settings

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
1 Create Configuration Profiles

Save different configuration sets for specific use cases: High Performance, High Visual, VR Optimized, Multiplayer.

2 Switch Profiles

Rapidly switch between profiles before flights without manually adjusting individual settings. Profiles automatically backup current settings before activation.

3 Validate Settings

Built-in validation ensures configuration changes are compatible with system capabilities and MSFS requirements.

ℹ️ Note MSFS must be closed when making UserCfg.opt changes. The configuration manager will warn you if MSFS is running.

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
💡 Best Practice Combine the Process Priority Manager with your flight simulation profiles. Set flight simulators to Above Normal priority and supporting applications (charts, weather) to Normal or Below Normal for optimal performance distribution.