-
Notifications
You must be signed in to change notification settings - Fork 6
3D and 2D Visualization
The Controller tab shows a real-time visualization of every button press, stick movement, trigger pull, key press, and MIDI note. PadForge picks the view automatically based on virtual controller type.


| Controller Type | Condition | View | 2D/3D Toggle |
|---|---|---|---|
| Xbox | Default | 3D model | Yes |
| Xbox | "Use 2D View" enabled | 2D overlay | Yes |
| PlayStation | Default | 3D model | Yes |
| PlayStation | "Use 2D View" enabled | 2D overlay | Yes |
| Extended | Always | Procedural schematic | . |
| Keyboard+Mouse | Always | Keyboard + mouse layout | . |
| MIDI | Always | Piano keyboard + CC sliders | . |
When a view has no toggle, the button is hidden automatically.
A detailed 3D model rendered with HelixToolkit.WPF. The mesh swaps with the assigned profile: Xbox 360, Xbox One / Elite / Adaptive, Xbox Series, DualShock 4, and DualSense each ship native artwork. Xbox Series profiles add a clickable Share button on the mesh; the same mesh is used for non-Series Xbox profiles but the Share region stays inert so it doesn't fire on press. Extended slots running a gamepad-shaped HIDMaestro profile show the matching model.
| Action | Mouse | Touch |
|---|---|---|
| Rotate | Left-click + drag | Single-finger drag |
| Zoom | Scroll wheel | Two-finger pinch |
| Pan | Right-click + drag | Two-finger drag |
| Reset View | Button (top-right) | Button (top-right) |
Rotation is turntable-style: horizontal drag controls yaw, vertical drag controls pitch (clamped to +/-60 degrees). Sensitivity is 0.5 degrees per pixel.
Default camera: FOV 55 degrees, position (0, -172, 132), look direction (0, 0.793, -0.609). Reset View restores these exact values, matching the startup angle.
Tip: Zoom in before using click-to-map so you can target small buttons accurately. Right-click drag to re-center after zooming. Click Reset View to snap back to the default angle.
| Element | Behavior |
|---|---|
| Buttons | Swap to accent color when pressed. Multi-mesh buttons highlight together. |
| Thumbsticks | Tilt proportionally to deflection. Ring blends toward accent color based on distance from center. |
| Triggers | Rotate downward proportionally to pull depth. Material blends toward accent color (0--1). |
| D-Pad | Active direction swaps to accent color. |
Click any button, trigger, D-Pad direction, or stick ring to start recording a mapping. Press or move an input on your physical controller and PadForge assigns it. This is a quick alternative to the Button and Axis Mappings grid.
Stick ring quadrant detection. Click position determines the axis:
| Click Position | Maps To |
|---|---|
| Center | Stick button (L3/R3) |
| Right / Left | X axis positive / negative |
| Top / Bottom | Y axis negative / positive |
During "Map All" (from Button and Axis Mappings), outputs flash orange in sequence at 400 ms intervals. For stick axes, a directional arrow and quadrant wedge appear on the ring. The flash holds until the mapping is recorded, then advances.
Toggle between 3D and 2D with the view-mode button in the top-right corner of the Controller tab. The 2D view uses PNG overlays on a flat controller diagram and supports the same interactions: live highlighting, click-to-map, hover previews, and Map All flash.
Your choice persists across sessions.
| Element | Behavior |
|---|---|
| Sticks | Slide to follow input (no tilt). Hovering shows a quadrant wedge indicating which axis a click would map. |
| Triggers | Fill rises from the bottom as you pull. Zero = empty; full pull = solid highlight. |
| Buttons / D-Pad | Same accent-color highlighting as the 3D view. |
Tip: The 2D view is lighter on GPU. Use it on low-end hardware or if you prefer a flat diagram.
PlayStation slots (DualShock 4, DualSense) show a live touchpad preview on both the 3D model and the 2D overlay.
| View | Touchpad rendering |
|---|---|
| 3D model | Live finger contact spheres positioned on the touchpad surface mesh. Sphere position and count update with active touches received from the source controller. |
| 2D overlay | Finger dots drawn on a flat representation of the touchpad area. Same source data as the 3D view. |
The touchpad surface is a click target for mapping. Click anywhere on the touchpad in either view to start recording a TouchpadClick mapping. During Map All on PlayStation outputs, TouchpadClick is the final item in the recording sequence after every other button and axis.
The finger spheres and dots are driven by Sony Report 0x01 passthrough on the source device, so they only render when a DS4 or DualSense feeds the slot.
Extended slots show a procedurally generated schematic instead of a controller model, regardless of which HIDMaestro profile is active. The layout rebuilds when the active profile or count overrides change.
| Element | Appearance | Max |
|---|---|---|
| Thumbsticks | Crosshair circle with position dot. Each stick uses two axes (X + Y). | 4 |
| Triggers | Vertical bar filling bottom-to-top. | 8 |
| POV hats | Compass with rotating arrow. One POV is labeled "D-Pad"; extras are numbered. | 4 |
| Buttons | Numbered circles in rows of 8, accent-filled when pressed. | 128 |
Sticks and triggers share a pool of 8 axes.
Click-to-map, Map All flash, stick quadrant detection, and POV cardinal detection all work the same as in the 3D/2D views.
The schematic always represents the live HID layout for the Extended slot, regardless of which HIDMaestro profile is selected. There is no separate "show controller model" mode for Extended — that was a v2 vJoy concept (the dropped ExtendedPreset enum with Xbox360/DualShock4/Custom values). In v3, Xbox or PlayStation visuals only render for actual Xbox or PlayStation slots, not for Extended slots that happen to be running an Xbox- or PlayStation-style HM profile.
Keyboard+Mouse slots show a full ANSI QWERTY keyboard and mouse diagram. The 2D/3D toggle is hidden.
| Element | Description |
|---|---|
| Keyboard | Full layout including numpad. Keys show labels, mapping tooltips, and accent highlighting when active. |
| LMB / RMB | Shaped around the scroll wheel gap. Accent highlight on press. |
| Scroll wheel | Center pill for middle-click. Up/down arrows highlight during scroll output. |
| Movement circle | Dot deflects to show mouse movement. Click a quadrant to map MouseX, MouseXNeg, MouseY, or MouseYNeg. |
| Side buttons | X1 and X2 on the left edge (back/forward). |
Click any key or mouse element to record a mapping. Same workflow as click-to-map on the 3D model.
Tip: Hover over a key to see its current mapping target in the tooltip before clicking to remap.

MIDI slots show a piano keyboard and CC slider panel. The 2D/3D toggle is hidden.
| Element | Description |
|---|---|
| CC sliders | Vertical bars filling bottom-to-top (0--127). CC number labeled below each slider. Click to map. |
| Piano keyboard | Standard layout with note labels (e.g., "C4", "F#5"). Keys highlight on active note output. Black keys appear raised. Click to map. |
The layout rebuilds when you change MIDI configuration (note count, start note, CC count, start CC). If no notes are configured, only sliders appear, and vice versa. Click-to-map and Map All flash work on all elements.
Tip: Adjust the start note and note count in the MIDI config bar first. The piano keyboard resizes to match, making click-to-map targets larger and easier to hit.
- Button and Axis Mappings: Map inputs using the grid instead of click-to-map
- Controller Slots: Change the controller type shown in the visualization
- Stick Deadzones: See a circular preview of stick deadzones
- Trigger Deadzones: Trigger range and deadzone settings
- Macros: Macro triggers and action sequences