Developer Info: UI Feature to Code Architecture Map
This master matrix directly ties every user interface control and feature in the IOBridge WPF desktop application to the exact XAML files, C# ViewModels, and backend service implementations that drive them.
It serves as the definitive reference for developers and technical contributors to understand what purpose every UI component fulfills, what services power it, and where its operational logic lives in the codebase.
Master UI Feature to Code Architecture Matrix
| UI Feature / Control | Purpose & Flight Sim Value | Driving WPF XAML | ViewModel / Behind | Driving Services | Key Symbols |
|---|---|---|---|---|---|
| Command Strip & Caption | Custom Aero-snap caption bar with zero caption delay and integrated command controls. | ui/IOBridge.UI/MainWindow.xaml |
MainViewModel.cs |
WindowSizingHelper.cs |
WindowChrome, WindowState |
| Profile Selector (PRF) | Instant profile switching between flight sims (Star Citizen, Elite, MSFS, DCS). | ui/IOBridge.UI/MainWindow.xaml |
MainViewModel.cs |
ProfileService.cs |
ActiveProfile, SwitchProfile() |
| Operational Mode Cluster | Displays active mode (Default, Combat, Landing) and real-time Shift layer feedback. | ui/IOBridge.UI/MainWindow.xaml |
MainViewModel.cs |
MappingManager.cs |
CurrentMode, IsShiftActive |
| Master Routing Toggle | Global arming kill-switch for virtual controller injection; safe for tabbed setup. | ui/IOBridge.UI/MainWindow.xaml |
MainViewModel.cs |
NativeDirectInputEngine.cs |
IsRoutingActive, Start(), Stop() |
| Telemetry Dock Toggle | Flyout drawer toggle displaying real-time dispatch streams and driver health metrics. | ui/IOBridge.UI/MainWindow.xaml |
MainViewModel.cs |
OutputLogger.cs |
IsTelemetryFlyoutOpen, OnLogDispatched |
| Rail: MAP View | Primary input remapping matrix, hardware auto-listener, and curve response configurator. | ui/IOBridge.UI/Views/DeviceRemappingPane.xaml |
DevicePaneViewModel.cs |
MappingManager.cs |
SelectedNavigationIndex = 0 |
| Auto-Listen Detection | Listens for physical button presses or axis movements to highlight that mapping row automatically. | ui/IOBridge.UI/Views/DeviceRemappingPane.xaml |
DevicePaneViewModel.cs |
DirectInputDeviceReader.cs |
IsAutoListenArmed, OnInputDetected() |
| Device Selection Tabs | Tabbed controller switcher filtering mappings to currently selected physical stick or throttle. | ui/IOBridge.UI/Views/DeviceRemappingPane.xaml |
DevicePaneViewModel.cs |
DirectInputScanner.cs |
ConnectedDevices, SelectedDevice |
| Auto-Map Sequential | Batch remapping wizard that prompts for sequential hardware controls and maps them in 1-to-1 order. | ui/IOBridge.UI/Views/DeviceRemappingPane.xaml |
DevicePaneViewModel.cs |
MappingManager.cs |
AutoMapSequentialCommand, BatchAssign() |
| Input Search & Filter Bar | Real-time text search and status filter dropdown to isolate unmapped, mapped, or inverted inputs. | ui/IOBridge.UI/Views/DeviceRemappingPane.xaml |
DevicePaneViewModel.cs |
CollectionViewSource |
FilterText, StatusFilterOption |
| Mapping Matrix (Grid) | Dense matrix listing every physical input with mapped action, target channel, curve, and mode. | ui/IOBridge.UI/Views/DeviceRemappingPane.xaml |
DevicePaneViewModel.cs |
MappingManager.cs |
InputMappings, SelectedMapping |
| Action Configurator (Panel) | Detail inspector to bind actions (vJoy, ViGEm, Keystroke, Macro, Mode Shift) and adjust curves. | ui/IOBridge.UI/Views/DeviceRemappingPane.xaml |
DevicePaneViewModel.cs |
MappingManager.cs |
SelectedActionType, TargetChannel |
| Response Curve Studio | Visual spline editor with deadzone, sensitivity, inversion, and monotone Hermite cubic interpolation. | ui/IOBridge.UI/Views/ResponseCurveStudioView.xaml |
ResponseCurveViewModel.cs |
ResponseCurve.cs |
Deadzone, CenterCurve, Saturation |
| Rail: MONITOR View | Real-time diagnostic panel displaying raw DirectInput axis percentages, POV hats, and buttons. | ui/IOBridge.UI/Views/LiveMonitorView.xaml |
MainViewModel.cs |
DirectInputScanner.cs |
SelectedNavigationIndex = 1 |
| Device Cloaking Status | Reports whether physical devices are hidden from games via Nefarius HidHide to prevent double-input. | ui/IOBridge.UI/Views/LiveMonitorView.xaml |
MainViewModel.cs |
HidHideService.cs |
IsCloaked, WhitelistProcess() |
| Digital Button Grid | 128-button live grid illuminating active inputs at 1ms DirectInput 8 granularity. | ui/IOBridge.UI/Views/LiveMonitorView.xaml |
MainViewModel.cs |
DirectInputDeviceReader.cs |
Buttons, PressedButtons |
| Rail: OUTPUT View | Installed output drivers audit and configured virtual joystick / gamepad target management. | ui/IOBridge.UI/Views/OutputDevicesView.xaml |
OutputDevicesViewModel.cs |
VirtualOutputManager.cs |
SelectedNavigationIndex = 2 |
| Rail: MODES View | Operational flight mode manager defining shift layers, momentary/toggle rules, and fallthrough. | ui/IOBridge.UI/Views/StateManagementView.xaml |
MainViewModel.cs |
MappingManager.cs |
SelectedNavigationIndex = 3 |
| Additive Fallthrough | Controls whether unmapped inputs in a shift layer fall through to Default or are silenced. | ui/IOBridge.UI/Views/StateManagementView.xaml |
MainViewModel.cs |
MappingManager.cs |
ModeInheritanceType, IsAdditive |
| Rail: PLUGINS View | Integrations hub managing Stream Deck, Wave Link, YouTube Music, and local REST server. | ui/IOBridge.UI/Views/IntegrationsView.xaml |
MainViewModel.cs |
StreamDeckServerService.cs |
SelectedNavigationIndex = 4 |
| Stream Deck Server | Bidirectional TCP/WebSocket server on port 28155 exchanging mode states and rotary dials. | ui/IOBridge.UI/Views/IntegrationsView.xaml |
MainViewModel.cs |
StreamDeckServerService.cs |
BroadcastModeChange(), Port 28155 |
| Wave Link Submix Routing | Official Elgato Wave Link integration allowing HOTAS dials to control in-flight game vs voice audio. | ui/IOBridge.UI/Views/IntegrationsView.xaml |
MainViewModel.cs |
WaveLinkService.cs |
SetChannelVolume(), MuteToggle() |
| Rail: DEPENDENCIES | Prerequisite audit inspecting vJoy, ViGEmBus, and HidHide driver status and signatures. | ui/IOBridge.UI/Views/DriverServiceView.xaml |
MainViewModel.cs |
VirtualOutputManager.cs |
SelectedNavigationIndex = 5 |
| Rail: COLORS View | Cockpit theme customization with real-time accent shifting across all views, HUDs, and controls. | ui/IOBridge.UI/Views/ProfileThemeView.xaml |
MainViewModel.cs |
ThemeService.cs |
SelectedNavigationIndex = 6 |
| Cockpit Theme Presets | Authentic flight sim HUD palettes: Quantum Cyan, Cockpit Orange, Battlemech Gold, HUD Emerald. | ui/IOBridge.UI/Views/ProfileThemeView.xaml |
MainViewModel.cs |
ThemeService.cs |
ThemePresetEnum, ApplyPreset() |
| Mobile Companion MFD | In-flight mobile touch MFD on port 28156 for one-tap axis inversion and hot-remapping without Alt-Tab. | integrations/mobile/ |
CompanionServerService.cs |
MappingManager.cs |
Port 28156, InvertAxisEndpoint |
| Telemetry Flyout Stream | Bounded FIFO ring buffer logging dispatch telemetry, dropped cycles, and driver latencies in microseconds. | ui/IOBridge.UI/MainWindow.xaml |
MainViewModel.cs |
OutputLogger.cs |
TelemetryDock, DispatchHistory |
| Game Action Picker Dialog | Searchable catalog of simulator bindings and detected flight actions (e.g. Star Citizen, MechWarrior 5). | ui/IOBridge.UI/Views/GameActionPickerDialog.xaml |
GameActionPickerDialog.xaml.cs |
GameBindingsService.cs |
SelectedAction, FilteredActions |
| Profile Theme Customization Dialog | Per-profile cockpit theme editor with live swatch preview, dual hex inputs, and ship HUD presets. | ui/IOBridge.UI/Views/ProfileCustomizationDialog.xaml |
ProfileCustomizationDialog.xaml.cs |
ThemeService.cs |
ResultCustomization, UpdatePreview() |
| Themed Modal Dialog & Seams | High-contrast themed confirmation modals with test seams for automated non-interactive testing. | ui/IOBridge.UI/Views/ThemedDialog.xaml |
ThemedDialog.xaml.cs |
None (UI Presentation) | Show(), DialogHook |
Key Subsystem Specifications
Driving Files: ui/IOBridge.UI/Views/DeviceRemappingPane.xaml, DevicePaneViewModel.cs, MappingManager.cs, NativeDirectInputEngine.cs
Captures low-level DirectInput packets via Vortice DirectInput with timeBeginPeriod(1) scheduling. Each physical button or axis is mapped to an action type (vJoy virtual joystick button/axis, ViGEmBus Xbox 360 controller button/axis, scancode keystroke, mode shift toggle, or multi-step macro). The matrix uses WPF UI virtualization (VirtualizingStackPanel) to guarantee 60 FPS rendering regardless of controller input density.
Driving Files: ui/IOBridge.UI/Views/LiveMonitorView.xaml, DirectInputScanner.cs, HidHideService.cs
Polls physical input devices at the configured poll rate (default 1ms / 1000Hz). Dispatches axis telemetry and button states to real-time progress bars and LED indicators. Integrates directly with the Nefarius HidHide client API to cloak physical joysticks from game processes so flight simulators only recognize the consolidated virtual controller.
Driving Files: ui/IOBridge.UI/Views/OutputDevicesView.xaml, VirtualOutputManager.cs
Feeds virtual controllers via signed drivers. Interops with vJoyInterface.dll to feed up to 16 virtual joysticks with 128 buttons each. Interops with Nefarius.ViGEm.Client to expose a virtual Xbox 360 gamepad for titles that only accept XInput. Injects hardware keyboard scancodes via Windows SendInput using KEYEVENTF_SCANCODE to bypass software hooks.
Driving Files: ui/IOBridge.UI/Views/ResponseCurveStudioView.xaml, ResponseCurve.cs
Provides visual curve shaping using Monotone Cubic Hermite Splines with Fritsch-Carlson tangent calculation. Guarantees strictly monotonic behavior without polynomial overshoot beyond [-1.0, 1.0]. Controls include deadzone tuning, center curve sensitivity, saturation endpoints, and one-tap axis inversion (IsInverted).
Driving Files: ui/IOBridge.UI/Views/IntegrationsView.xaml, StreamDeckServerService.cs (port :28155), WaveLinkService.cs
Hosts an asynchronous HTTP and WebSocket listener on port :28155. The Elgato Stream Deck plugin communicates over this local port to display active flight modes, trigger shift layers, and bind continuous rotary dials to flight axes. The Wave Link service binds hardware rotary knobs to Elgato Wave Link submix channels via local WebSocket IPC.
Driving Files: integrations/mobile/, CompanionServerService.cs (port :28156), MappingManager.cs
Provides a standalone mobile multi-function display (MFD) that runs on the pilot's phone or tablet mounted in their cockpit. The companion communicates over local Wi-Fi with port :28156 using secure PIN pairing. Allows pilots to hot-remap inputs, switch operational modes, and invert axes mid-combat without alt-tabbing or interrupting flight.
Driving Files: ui/IOBridge.UI/Views/ThemedDialog.xaml, GameActionPickerDialog.xaml, ProfileCustomizationDialog.xaml
Provides custom cockpit-themed dialogue windows with consistent glass borders and accent headers. ThemedDialog features test seams (ThemedDialog.DialogHook) allowing CI pipelines to intercept and mock modal responses without blocking headless test runners. GameActionPickerDialog provides category-based filtering and instant search over auto-detected game actions from GameBindingsService.