Skip to content

History

Revisions

  • Engine-Library: TouchpadClick is Buttons[16], not [21] (matches current SdlDeviceWrapper layout)

    @hifihedgehog hifihedgehog committed May 20, 2026
    0e4a23c
  • Driver-Management: OpenXInput is embedded in single-file EXE; devobj.dll deliberately not bundled

    @hifihedgehog hifihedgehog committed May 20, 2026
    4dbbe78
  • Wiki Pass 3 user-facing audit Installation: OpenXInput now embedded in single-file EXE (drop the "and devobj.dll" — devobj is NOT bundled, per the architectural rule that ships only xinput1_4.dll and lets system32 resolve devobj unaided). Replace the obsolete Accept/Decline UAC table — PadForge declares requireAdministrator now, so the non-elevated branch is gone. Force-Feedback: fix "dualSense" → "DualSense" casing typo in the Related pages list.

    @hifihedgehog hifihedgehog committed May 20, 2026
    81070fb
  • Wiki Pass 3: dev-deep-dive accuracy corrections ViewModels: HMaestro SDK assembly is HIDMaestro.Core (not Microsoft.HIDMaestro.SDK); user-mode driver still needs first-run installation, not just an embedded assembly. SDL3-Integration: drop the _filteredVigemInstanceIds field documentation. That field is gone from current InputService.cs. HM virtuals are filtered upstream by the SDL3 fork's patched SDL_GetJoysticks (walks container ID to the HM root enumerator and drops matches before returning the list), so the engine no longer needs the rumble-killing-close guard. Architecture-Overview / Driver-Installation-Internals / Build-and-Publish / HIDMaestro-Deep-Dive: OpenXInput corrections. xinput1_4.dll is bundled inside the single-file EXE via Content + IncludeNativeLibrariesForSelfExtract, not "copied adjacent to PadForge.exe". devobj.dll is deliberately NOT shipped (a bundled stub would hijack setupapi.dll's own DevObj* imports and crash HID class enumeration per PadForge #69). System devobj.dll resolves from System32 unaided. Also: refresh pad-playstation-configbar.jpg to match the canonical PS slot screenshot (DualSense (PS5, Bluetooth) profile, dualsense-bt).

    @hifihedgehog hifihedgehog committed May 20, 2026
    5efdc7f
  • Wiki: Pass 2 — dev-deep-dive accuracy + Home page voice match Architecture-Overview: AssemblyInfo.cs → SharedVersion.cs; expanded Data/ file list to include MappingSet/MappingSource/MappingRow/ ShiftActivator/MappingSetMigrator/DeviceTuning. Input-Pipeline: drop preserveExtendedNodes parameter; rebuild field table to match current InputService. Virtual-Controllers: VendorId==0xBEEF check replaced with DescriptorHasPidFfbBlock(descriptorHex) gate in three locations. HIDMaestro-Deep-Dive: Microsoft.HIDMaestro.SDK → HIDMaestro.Core (bundled at Resources/HIDMaestro/HIDMaestro.Core.dll); fix context.CreateController(profile) call shape. Services-Layer: drop preserveExtendedNodes from Stop(); remove the "step 9" preserve-nodes branch. Engine-Library: add TOUCHPAD = 0x0800 button flag row. SDL3-Integration: SDL3 fork now filters HM virtuals at SDL_GetJoysticks, so the engine no longer maintains _filteredVigemInstanceIds. Updated Mermaid flowchart and renumbered the connect-side step list. Home: "New in 3.2" rewritten from bullet lists to story paragraphs to match the website voice. Added Gyro / Impulse Triggers / Shift Layers to the navigation tables.

    @hifihedgehog hifihedgehog committed May 20, 2026
    527cde8
  • Pass 11/25: trim 'actually' filler from Button-and-Axis-Mappings, Adaptive-Triggers, Macros

    @hifihedgehog hifihedgehog committed May 20, 2026
    72c80eb
  • Pass 10/25: refreshed screenshots for 3.2 + image refs on every user-facing page Screenshots - Recaptured all 21 PNGs in images/ against a 6-slot setup (Xbox + Xbox + PlayStation + Extended + KBM + MIDI) so every controller-type screenshot reflects the live 3.2 UI. - New pad-gyro.png covers the dedicated Gyro tab (Calibration, Sensitivity, Response Shaping, Engage, Easy Aim cards). - pad-adaptive-triggers and pad-lighting captured on slot 1 where a DualSense source makes those tabs visible. The old captures were the Controller 3D view instead of the actual tab content -- the Tab(...) Click was being called before the tab strip had switched, and on PS slot 3 the AT/Lighting tabs are hidden when a DS4 (not DualSense) is the source. capture.ps1 + convert-screenshots.ps1 - capture.ps1 now self-elevates. PadForge runs requireAdministrator; a non-elevated UIA reader returns zero descendants (UIPI), which silently made every Nav/Tab call fall through to a no-op. - Dropdown captures target by AutomationId (DeadZoneShapeCombo, SensitivityXCombo, TriggerPresetCombo) instead of iterating every ComboBox looking for an item by name -- the old approach kept expanding the HMaestroProfileCombo and assigned-device combo by accident. - Tab() ScrollIntoView before Click for wrapped tab strips. - Capture for Gyro / Adaptive Triggers / Lighting on slot 1, gated on each tab being visible (Tab returns false if collapsed, the Cap call is skipped instead of capturing whatever's stale on screen). - convert-screenshots.ps1: added pad-gyro / pad-impulse-triggers / pad-shift-layers to the name map. Image refs on pages that previously had none - Gyro.md: pad-gyro.png - Installation.md: add-controller-popup.png (first thing you reach after install) - DSU-Motion-Server.md: dashboard.png (the Motion Server card lives there) - Troubleshooting.md: settings.png (where most troubleshooting starts) - Input-Precision.md: pad-sticks.png (where the precision pipeline ends up visible) - Shift-Layers.md: pad-mappings.png (shift layers live in the mappings tab strip) - Impulse-Triggers.md: pad-forcefeedback.png as a stand-in (Impulse Triggers tab is only visible when an Xbox One+ pad is assigned, which the dev environment doesn't have; the Force Feedback tab shares the same layout pattern).

    @hifihedgehog hifihedgehog committed May 20, 2026
    1261954
  • Pass 9b/25: capture.ps1 now targets TriggerPresetCombo by AutomationId + adds Gyro and Impulse Triggers captures. Home.md nav table grows. capture.ps1: - Trigger sensitivity dropdown switched from item-probe (which kept hitting HMaestroProfileCombo / device dropdown by accident) to AutomationId "TriggerPresetCombo". All three dropdown captures now target by AutomationId. - Added pad-impulse-triggers and pad-gyro captures on slot 1, gated on the tab being visible. Home.md: - "Map a button or axis" now links Button-and-Axis-Mappings and Shift Layers explicitly. - "Tune the feel" includes Gyro and Impulse Triggers alongside the existing tuning tabs. - "Power features" mentions Custom Expression triggers in the Macros row and the bulk virtual-controller toggle in the Profiles row.

    @hifihedgehog hifihedgehog committed May 20, 2026
    2a04ee9
  • Pass 9/25: capture.ps1 fixes -- self-elevate + ScrollIntoView tabs + AutomationId-targeted dropdowns - Self-elevate at the top of the script. PadForge runs requireAdministrator, so a non-elevated UIA reader returns zero descendants (UIPI). Without this, FindAll on PadForge's window returns nothing and every Nav/Tab call falls through to a coordinate-click on stale UI. - Tab() now ScrollIntoView before clicking. The TabStripButton style fires its handler on the Click event, not on IsChecked-via-SelectionItemPattern, so a real click is required. When the strip wraps at narrow widths, ScrollIntoView brings the target row into view first. - Dropdown captures use AutomationId where the XAML has one: DeadZoneShapeCombo and SensitivityXCombo for the Sticks dropdowns. The old "iterate every ComboBox and probe item names" approach kept expanding the Preset and Assigned-Devices combos on the slot header, capturing the wrong dropdown. - For combos without an AutomationId (Triggers sensitivity), the fallback Capture-PadPageDropdownByItemName confines the search to the PadPageView subtree and explicitly skips AssignedDevicesCombo / ProfileCombo / PresetCombo / DeviceCombo. Macros.md: Custom Expression Variables section rewritten in a less defensive tone. "Add as many variables as the formula needs. Each one becomes a letter -- 'a' for the first, 'b' for the second, then 'c', 'd', 'e', and as many more as you add." Replaces the AI-shaped "Each row in the **Variables** table binds one letter to one input."

    @hifihedgehog hifihedgehog committed May 20, 2026
    a04ed7b
  • Pass 8/25: Related-pages first-word lowercase normalization + Stick-Deadzones 'Best for:' pseudo-colon sweep 41 Related-pages bullet first-words lowercased to match the established 'Page: lowercase description.' convention. Proper nouns (Xbox, DualSense, Sony, HIDMaestro, etc.) kept capitalized. One DualSense->dualSense miss caught and restored. Stick-Deadzones 'Best for:' colon-pseudo pattern dropped on all five deadzone-shape captions.

    @hifihedgehog hifihedgehog committed May 20, 2026
    7c0f818
  • Pass 7/25: rebuild Related-pages sections on Adaptive-Triggers, 3D-and-2D-Visualization, Lighting The earlier Related-pages normalization script collapsed lines like '- [[Force Feedback]] and [[Trigger Deadzones]]: tuning the body rumble and trigger floor' into '- [[Force Feedback]]: [[Trigger Deadzones]].' because it treated the first colon as the description separator. Each affected line now has a real description and links break out into separate bullets when they describe distinct pages.

    @hifihedgehog hifihedgehog committed May 20, 2026
    7e7f590
  • Pass 6/25 cont'd: Impulse-Triggers placeholder image reference removed -- pad-impulse-triggers.png doesn't exist yet, so rendering was broken on the live wiki

    @hifihedgehog hifihedgehog committed May 20, 2026
    1df8fbe
  • Pass 6/25: Architecture-Overview 'Reverse data flow' heading lost its trailing colon (AI smell)

    @hifihedgehog hifihedgehog committed May 20, 2026
    a423d0c
  • Pass 5/25: VC abbreviation purge from user-facing prose Replaced "VC" with "virtual controller" or "controller" in user-visible text on Home.md (Misc 1 -> Share bullet), Controller-Slots.md (yellow power-icon explanation, disabled-slot reorder note), Driver-Management.md (HIDMaestro stuck-on-initializing troubleshooting). "Xbox virtual gamepad" and "PlayStation virtual gamepad" labels in the Add-controller type table now say "virtual controller" to match the rest of the wiki.

    @hifihedgehog hifihedgehog committed May 20, 2026
    063483b
  • Pass 4/25: verification pass -- fixed one broken intra-page anchor on Input Pipeline (double-dash slug)

    @hifihedgehog hifihedgehog committed May 20, 2026
    ede4695
  • Pass 3/25: Stick-Deadzones Scaled Radial caption rhythm tightening (three-fragment burst into two)

    @hifihedgehog hifihedgehog committed May 20, 2026
    bc223d0
  • Pass 2/25: italic hook consistency, Related pages normalization, em-dash sweep - Italicized hook line on 12 user-facing pages that had plain hooks (Stick-Deadzones, Trigger-Deadzones, Force-Feedback, Adaptive-Triggers, Lighting, Devices, DSU-Motion-Server, Web-Controller, Settings, Driver-Management, Input-Precision, 3D-and-2D-Visualization) and Troubleshooting. - Normalized Related-pages bullet formatting across 16 user-facing pages to one convention: '- [[Page]]: lowercase description.' - Home.md: cut filler 'long list of smaller wins' from the 3.2 intro paragraph; replaced em-dash pseudo-colon with a period; converted em-dash pseudo-colon in Gyro motion bindings bullet. - Controller-Slots.md: Open-a-slot tab list now reflects 3.2 reality (Gyro tab, Adaptive Triggers and Lighting on PS slots, Impulse Triggers on Xbox + PS). Related pages expanded to link the new pages. - Devices.md and Impulse-Triggers.md: em-dash pseudo-colons converted to periods.

    @hifihedgehog hifihedgehog committed May 20, 2026
    b795ae7
  • Pass 1/25: wiki link audit + empty-header table cleanup + 2026 Steam Controller mention - All 29 reversed [[Display|Target]] gollum links fixed - 1 broken anchor on Virtual-Controllers link to HIDMaestro Deep Dive resolved against actual heading slug - Lighting.md image path corrected (lighting.png -> pad-lighting.png) - 10 empty-header 2-col "| | |" label tables rewritten as prose paragraphs across Controller-Slots, Installation, Devices, Dashboard, Settings, Web-Controller - Home.md "New in 3.2" now lists 2026 Steam Controller support via the bundled SDL3 fork

    @hifihedgehog hifihedgehog committed May 20, 2026
    6fadca4
  • Wiki: add Gyro / Shift Layers / Impulse Triggers, expand Mappings + Macros for 3.2 features New pages - Gyro: dedicated tab covering calibration, sensitivity, response shaping, engage gates, reference frames, per-(device, slot) persistence, per-source GyroSensitivity multiplier. - Shift Layers: per-slot mapping tables that activate while a button / chord / axis is engaged. Five activation modes, three activator kinds, per-layer color + emoji, Win11 flyout, last-engaged-wins resolution. - Impulse Triggers: split out of Force Feedback since the app has it as its own Pad-page tab. Covers game-driven passthrough (Xbox + DualSense), Constant Trigger Force, Audio Bass Trigger Rumble. Updated - Home.md "New in 3.2" now covers the full 3.2.0 feature set: mapping engine rebuild, shift layers, gyro Steam Input parity, impulse triggers tab, macro custom expression, lighting additions, platform changes. - Button-and-Axis-Mappings.md: per-VC scope, multi-source rows, six combine modes + custom formula, source kinds (Direct / Incremental / Invert On Hold), Bidirectional flag, direction badges, auto-mapping extend behavior. - Macros.md: Custom Expression trigger mode (formula + variables + recipes), multi-device combos in triggers, per-entry axis options. - Force-Feedback.md: trigger-motor sections moved to Impulse Triggers; cross-link added.

    @hifihedgehog hifihedgehog committed May 20, 2026
    079ec80
  • Wiki rewrite: simple-English voice across all user-facing pages Rewrites 18 user-facing pages and adds hooks to 7 dev-deep-dive pages. Each user-facing page now opens with H1 then a one-sentence hook, strips banned vocabulary, replaces em-dash pseudo-colons with periods, and ends with a version marker. User-facing rewrites - Installation, Dashboard, Controller-Slots, Button-and-Axis-Mappings - Stick-Deadzones, Trigger-Deadzones, Force-Feedback, Adaptive-Triggers, Lighting - Macros, Profiles, Devices, DSU-Motion-Server, Web-Controller - Settings, Driver-Management, Input-Precision, Troubleshooting - 3D-and-2D-Visualization New 3.2 content woven into Force-Feedback (Impulse Triggers, Audio Bass Trigger Rumble, Constant Trigger Force) using actual in-app labels from Strings.resx. Profiles documents the new Toggle Virtual Controllers Disabled shortcut mode. Settings notes the stable-across-language-switch fix. DSU Motion Server covers the Gyro Aim Engage picker subtitle. Dev-deep-dive hooks added - Input-Pipeline, Settings-and-Serialization, ViewModels, XAML-Views, Engine-Library

    @hifihedgehog hifihedgehog committed May 20, 2026
    6348420
  • Rewrite Home: simple-English pitch + What's new in 3.2 + reorganized navigation - Lead "Make any input look like any controller." with three concrete pairings - Add "New in PadForge 3.2" with six user-visible changes - Group nav into Get started / Pick a type / Tune the feel / Power features / Behind the scenes / Developer reference tables - Plainer voice across descriptions

    @hifihedgehog hifihedgehog committed May 20, 2026
    d2e4017
  • v3.1.4: web controller artwork note + atomic screenshot refresh

    @hifihedgehog hifihedgehog committed May 10, 2026
    c6ef681
  • v3.1.4: replace pad-controller-2d screenshot with actual 2D view

    @hifihedgehog hifihedgehog committed May 10, 2026
    961b53b
  • v3.1.4: refresh screenshots + Xbox Series Share + per-profile asset notes

    @hifihedgehog hifihedgehog committed May 10, 2026
    014aa02
  • Document constant force + rumble macro action (v3.1.3)

    @hifihedgehog hifihedgehog committed May 5, 2026
    0572aa8
  • Adaptive Triggers: document Load GameCube preset button (#78)

    @hifihedgehog hifihedgehog committed May 5, 2026
    42a4fc0
  • v3.1.1 screenshot refresh

    @hifihedgehog hifihedgehog committed May 5, 2026
    3bb81e6
  • v3.1.1: per-device Lighting / FFB, Input Reactive overlay, macro lightbar actions

    @hifihedgehog hifihedgehog committed May 5, 2026
    175731c
  • Settings: document Keep Devices Cloaked Between Launches toggle

    @hifihedgehog hifihedgehog committed May 5, 2026
    0d93e38
  • Wiki: note Lighting tab reset buttons + Web Controller Touchpad layout

    @hifihedgehog hifihedgehog committed May 4, 2026
    e572e0f