Skip to content

Technical Reference

The deep tier. These pages document how PadForge works inside: the architecture, the polling pipeline, the drivers, and the wire protocols. Nothing here is required reading for using the app.

Architecture

Page Covers
Architecture Overview The three projects and how data flows between them
Input Pipeline The six-step, 1000 Hz loop from raw input to virtual output
Engine Library PadForge.Engine: the UI-free core
Services Layer The App-side services
ViewModels The WPF view-model layer
XAML Views The view layer
Settings and Serialization PadForge.xml, round-trips, migration
Build and Publish Building from source

Integrations and drivers

Page Covers
SDL3 Integration The input backend and the PadForge SDL3 fork
HIDMaestro Deep Dive The user-mode (UMDF2) driver behind the virtual controllers
Driver Installation Internals How install, repair, and removal work
Updates Internals The update check, the checksum, the helper that replaces the running exe, and the cleanup

Protocols and subsystems

Page Covers
DSU Motion Server The Cemuhook motion server
DSU Protocol The wire protocol itself
Game Mods Internals The DSX game mod packets, the trigger encodings, which controller each mod reaches, and when its effects end
Game Telemetry Internals The telemetry decoders, Auto-Detect, the Game Telemetry row, the wheel lights' hand-off and the Adaptive Trigger Effect action
Remote Link Internals Cross-PC device sharing on the wire
External Control Internals The profile control pipe, its command grammar, and the held-profile state
Steam Workshop Import Internals The VDF parser and config translator
Controller Audio Internals Speaker and haptic audio paths
Steam Controller Haptics Internals The 2026 pad's PCM actuator stream and the tone lane it falls back to
Sensa Haptics Internals Controller rumble as a Razer Sensa HD effect through Interhaptics
Peripheral Outputs Internals Lighting and rumble for mice, keyboards and vendor rows: links, claims, and the HID++, LED SDK, Chroma and GameSense backends
Virtual VR Controllers Internals One slot, a SteamVR hand pair, and the haptic return path
OpenXR Input Internals Talking to the OpenXR runtime directly, the headless session, and the three interaction profiles
Headset Head Tracking Internals The descriptor probe and rotation-to-rate synthesis
Head Tracking Internals The OpenTrack datagram, the FreeTrack heap, and the scaling into six axes
Wheel Force Feedback Internals DirectInput FFB effects
MIDI Input Internals MIDI parsing and routing
Logitech G-Keys Internals Loading the vendor library, the callback, and the 32-bit key word
Analog Keyboards Internals Routes, sessions and the HID channel behind analog keyboard rows, and every supported family's protocol
Bliss-Box Internals The API sidecar beside each port's SDL row, every report, the native channel and the Controller Pak
Keyboard Screens Internals Finding each screen, its row, the drawing engines, and the keys beside it
Novint Falcon Internals Force Dimension's library, the haptic thread per Falcon, and the driver install
Handheld PC Buttons Internals The three delivery paths a hidden button can arrive on, and the learners
Wii Controllers Internals Extensions, Motion Plus, IR camera
2D Overlay System The overlay renderer
3D Model System The 3D controller models

Last updated for PadForge 5.2.0.