Skip to content

History / Force Feedback

Revisions

  • 3.5.0: technical internals docs + screenshot refresh Add Wii-Controllers-Internals (pairing ceremony, SDL hidapi_wii read path, rescan recovery, capability gate). Extend Input-Pipeline (mouse cursor source, shift cycle, trigger routing, source kinds + ramp, macro clipboard + cursor actions) and SDL3-Integration (Wii fork fixes, axis capability gating). Refresh all page screenshots against 3.5.0; add the Trigger Routing card shot and link it from Force Feedback and Home.

    @hifihedgehog hifihedgehog committed Jun 19, 2026
  • 3.5.0 docs: add Wii Controllers page. Trigger routing, mouse-cursor source, queue/shift layers, mouse macros, Latch and No Button modes across pages

    @hifihedgehog hifihedgehog committed Jun 19, 2026
  • Document 3.4 features: Remote Link, Wheel, Controller Audio, MIDI Input New pages for the four 3.4 headline features. Add a 3.4 What's new section and nav links on Home. Cross-link from Force Feedback (native wheel FFB), Devices (MIDI input cards), and Driver Management (MIDI input needs Windows MIDI Services). Audio page states the mirror is a Windows-output loopback, not game-audio packet interception, and that DS4 audio is Bluetooth-only. Remote Link page states local-network-only with no built-in internet path.

    @hifihedgehog hifihedgehog committed Jun 15, 2026
  • Force-Feedback: drop the dev-detail BaseHighBrush note from Test Rumble The Test Rumble user-facing description ended with 'The label uses BaseHighBrush so it stays readable in both light and dark themes.' Two reasons to drop it: (1) the brush name is stale — PadPage.xaml uses TextFillColorPrimaryBrush across the board now, not BaseHighBrush. (2) it's a WPF-internal detail that doesn't help anyone tuning rumble. Removed the sentence entirely; theme-readability is implicit in the WPF-UI Fluent style used everywhere else.

    @hifihedgehog hifihedgehog committed May 26, 2026
  • Wiki: drop stale 'Last updated for PadForge 3.2.0' footers (22 pages) Every page on the wiki carried a '*Last updated for PadForge X.Y.Z.*' italicized footer hard-coded to 3.2.0. With 3.3.0 shipped, those footers become a lie on every page that wasn't actually re-audited for the new version — bumping them to 3.3.0 wholesale would just swap one lie for another since most pages haven't been touched since 3.2.0. Removing the footer entirely: git history of each page is the honest source of truth for currency. Wiki contributors who need to know whether a section reflects the latest behavior can read the page's commit log; no in-page label needed.

    @hifihedgehog hifihedgehog committed May 25, 2026
  • Force-Feedback: dispatcher uses SonyEffectWriter raw WriteFile, not SDL_SendGamepadEffect (the latter is the DualSensePassthroughDispatcher path for game-driven AT)

    @hifihedgehog hifihedgehog committed May 21, 2026
  • SDL3 rumble fn is SDL_RumbleJoystick, not SDL_RumbleGamepad (fix 5 wiki sites + release notes draft)

    @hifihedgehog hifihedgehog committed May 21, 2026
  • Force-Feedback: Sony rumble path follows UserEffectsDispatcher sole-writer architecture, not HM-relayed passthrough

    @hifihedgehog hifihedgehog committed May 21, 2026
  • Force-Feedback: note that Extended FFB is toggle-able via Customize 'The Extended virtual controller advertises full PID FFB capability' read as absolute. v3.0.3 added a ForceFeedbackEnabled toggle on ExtendedSlotConfigData (Customize-gated); when it's off, Step 5 rebuilds the HID descriptor without the PID block so DirectInput games see a non-FFB joystick. Documented the toggle so users chasing a 'why doesn't my game see PID FFB?' question can find the switch.

    @hifihedgehog hifihedgehog committed May 21, 2026
  • Wiki: replace 'per (slot, device)' tuple notation with plain English memory rule feedback_no_tuple_notation_in_prose.md flags 'per (slot, device)' as AI-jargon math notation. Five wiki pages had it. Replaced with 'per pad per slot' so prose reads like prose, not like a Python dict-key lookup.

    @hifihedgehog hifihedgehog committed May 21, 2026
  • 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
  • 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
  • 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
  • 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
  • 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
  • Document constant force + rumble macro action (v3.1.3)

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

    @hifihedgehog hifihedgehog committed May 5, 2026
  • Lighting tab reset buttons + v3 terminology sweep Refreshes pad-lighting screenshot to capture the four new reset buttons (Lightbar Mode, LED Brightness, Player Pattern, Mute LED Mode) plus the rest of the slot-0 PadPage tabs and slot-type config bars against the post-deploy build. Wiki prose: drops residual v2 phrasing (ExtendedConfig.IsGamepadPreset, DualShock4 / Xbox 360 enum names, "Microsoft" / "Sony") and routes through the v3 OutputType / VirtualControllerType vocabulary instead.

    @hifihedgehog hifihedgehog committed May 4, 2026
  • Deep v3 resync: vJoy purge, Microsoft→Xbox terminology, current features Sweep residual v2 vJoy / ViGEmBus content out of user-facing pages and replace stale dev-page class names with the v3 unified HIDMaestro pipeline. Restore correct family-name terminology (Xbox / PlayStation / Extended, not Microsoft / Sony — those enum identifiers exist purely for v2 PadForge.xml back-compat per the in-source enum comment). User-facing pages (Home, Dashboard, Controller-Slots, Devices, Settings, Driver-Management, Troubleshooting, Force-Feedback, Web-Controller, 3D-and-2D-Visualization, 2D-Overlay-System, Installation, Stick-Deadzones, Trigger-Deadzones, Input-Precision): - vJoy slot type, "vJoy driver limit", and vJoy install steps removed - Troubleshooting: "vJoy Phantom Controllers" section deleted (v2 N²-bug, doesn't exist in HIDMaestro), other vJoy sections rewritten for HM - Force-Feedback: HID PID 1.0 framing for Extended; new Sony Report 0x01 rumble passthrough section - 3D-and-2D-Visualization: PlayStation touchpad preview (live finger spheres) and click-to-map TouchpadClick documented - 2D-Overlay-System: touchpad highlight visual spec (sampled colors) - Web-Controller: DS4 layout button-11 collapse for TouchpadClick Dev pages (Architecture-Overview, Engine-Library, Build-and-Publish, HIDMaestro-Deep-Dive, Input-Pipeline, SDL3-Integration, Services-Layer, Settings-and-Serialization, Driver-Installation-Internals, ViewModels, XAML-Views, Virtual-Controllers, Button-and-Axis-Mappings): - Stale Xbox360VirtualController / DS4VirtualController / ExtendedVirtualController / VJoyRawState references replaced with the v3 unified HMaestroVirtualController + ExtendedRawState - Step 5 prose updated to HMContext.SubmitState / SubmitRawReport with Sony Report 0x01 passthrough - HIDMaestro-Deep-Dive: HM 1.1.x → 1.2.0 - Services-Layer: false claim that Extended slots reset to "Microsoft (Xbox 360) gamepad preset" replaced with the actual behavior (ProfileId = GetDefaultProfileId(type), Custom "PadForge Game Controller" for Extended) - Three broken [[vJoy Deep Dive]] links retargeted to [[HIDMaestro Deep Dive]] - Virtual-Controllers gets a top-of-page editor's note flagging it for a full hand-rewrite (the deep sections still describe deleted v2 classes) Microsoft references kept where they are real: NuGet package Microsoft.Windows.Devices.Midi2, registry paths under SOFTWARE\Microsoft\, ".NET runtime download from Microsoft", literal VirtualControllerType.Microsoft enum-value citations, MaxXbox360Slots constant name (preserved from v2), [XmlEnum("Sony")] attribute string, OpenXInput Microsoft-trademark disclaimer.

    @hifihedgehog hifihedgehog committed Apr 27, 2026
  • Force-Feedback: replace residual DirectInput framing with Extended (HID PID)

    @hifihedgehog hifihedgehog committed Apr 27, 2026
  • Sweep em-dash pseudo-colons across developer reference pages

    @hifihedgehog hifihedgehog committed Apr 18, 2026
  • Standardize "dead zone" spelling to "deadzone" per Microsoft convention Rename Stick-Dead-Zones.md → Stick-Deadzones.md and Trigger-Dead-Zones.md → Trigger-Deadzones.md. Update all wiki content and internal links to use one-word "deadzone" spelling. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @hifihedgehog hifihedgehog committed Apr 12, 2026
  • Fix all wiki image references from .jpg to .png

    @hifihedgehog hifihedgehog committed Mar 21, 2026
  • Wiki sync: per-mapping dead zone, BLE HidHide, async enumeration, UI polish 16 pages updated across 7 parallel agents: - Button-and-Axis-Mappings: source dropdown raw buttons, clear resets DZ - Input-Pipeline: async Raw Input, MapToButtonPressed params, half-axis math - Settings-and-Serialization: MappingDeadZones dict, DeviceObjects serialized - Engine-Library: raw button count, DeviceObjects, FindInstanceIdsByVidPid BLE - Dashboard: TypeSwitchButton, driver gating, red stopped indicators, drag fix - Home: feature highlights updated - XAML-Views: branding bar, SyncBarBackgrounds, theme-aware brushes - Architecture-Overview: branding bar, async enumeration, stable 1000 Hz - Services-Layer: async enumeration, offline dropdowns, popup dismiss - Driver-Installation-Internals: removed methods, merge-based cache - Controller-Slots, ViewModels, Force-Feedback, Troubleshooting, SDL3-Integration, 3D-and-2D-Visualization: targeted updates - All 25 screenshots refreshed

    @hifihedgehog hifihedgehog committed Mar 21, 2026
  • Wave 5: Visual overhaul, second polish, cross-page consistency, TOCs, diagrams Home.md: Hero section with centered about.jpg, "New in this release" callout, 6 themed sub-sections, Unicode symbols, verb-led descriptions. Visual: 3 unused dropdown screenshots added to Sticks/Triggers pages. TOCs added to 5 long dev docs. 3 new Mermaid diagrams (save/load flow, class relationships, device discovery). Cross-page consistency (user + dev): Bidirectional Related Pages across all 31 pages (94 dev cross-links, 60+ user cross-links). Feature naming standardized ("Force Raw Joystick Mode", "DualShock 4", "DirectInput (vJoy)"). Setting names matched to UI labels. 9 screenshot alt texts made descriptive. Dev doc links removed from user pages. Second polish (all pages): 200+ edits tightening prose, removing AI voice ("robust", "This ensures", "you can"), standardizing See Also sections, cutting filler. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @hifihedgehog hifihedgehog committed Mar 19, 2026
  • Professional polish: proper typography, concise writing, 33 agents Replace all 590+ double-hyphen (--) instances with proper em dashes (—) and en dashes (–) for numeric ranges. Remaining -- only inside code blocks. Rewrite every page for professional conciseness: - Simple English, short sentences, active voice - Prose converted to tables and bullet lists - Filler words and AI-tell phrases eliminated - Parallel structure in descriptions - Every section scannable in seconds Net result: 632 fewer lines across 32 files while preserving all detail. Verified: 0 broken cross-references, all 9 Mermaid diagrams valid, all 21 image references valid, README fully synchronized. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @hifihedgehog hifihedgehog committed Mar 19, 2026
  • Comprehensive wiki rewrite: 22 agents, 2M+ tokens, all 31 pages improved Every wiki page deeply rewritten by dedicated agents that read full source files (not commit history). Total: ~2 million input tokens across 22 agents. User guide pages (17): - Home: all 32 descriptions rewritten with specific subsection details - Force-Feedback: motor physics, pipeline flow, haptic/condition/audio sections - Macros: 12 action type subsections, 6 practical recipes, fire mode guide - Devices: card layout, raw input viz, GUID persistence, 7 troubleshooting items - Stick-Dead-Zones: per-shape subsections, anti-DZ tuning, 5 genre recommendations - Trigger-Dead-Zones: floor/ceiling examples, 4 genre recommendations - Controller-Slots: "What Is a Slot?", type decision table, limits, reordering - Dashboard: engine states, VC card anatomy, power icon color table - Settings: per-setting guidance, driver comparison table, auto-save behavior - Button-and-Axis-Mappings: source dropdown, descriptor names, mapping tips - Profiles: pipe-separated exe format, 4 practical examples - DSU-Motion-Server: emulator table, sensor requirements, setup guides - Web-Controller: step-by-step setup, network requirements, latency expectations - Installation: Quick Start, auto-elevation, first-launch walkthrough - Driver-Management: graceful degradation, compatibility matrix, troubleshooting - Troubleshooting: 10 new scenarios, Quick Reference 18→33 entries - 3D-and-2D-Visualization: view selection table, MIDI preview, touch tips Developer reference pages (14): - Architecture-Overview: verified project layout, Key Design Decisions, threading - Input-Pipeline: 1538 lines, 3-thread Mermaid, dead zone algorithms, thread safety - Services-Layer: rewritten from scratch, 25+ method table, 5 interaction flows - ViewModels: 1559 lines, all 14 ViewModel classes, 70+ PadSetting properties - Engine-Library: 1811 lines, 31 types, full SDL3 P/Invoke reference - Settings-and-Serialization: 73 CopyablePropertyNames, save/load flowcharts - XAML-Views: layout trees, binding tables, 11 styles, UI Automation IDs - Virtual-Controllers: Mermaid type hierarchy, per-VC axis/button tables - SDL3-Integration: 1133 lines, enumeration flow, rumble, haptic, custom mappings - Build-and-Publish: all build modes, CI/CD, versioning, local NuGet - vJoy-Deep-Dive: HID descriptors, FFB, device lifecycle, restart strategies - Driver-Installation-Internals: Mermaid flowcharts, SetupAPI P/Invoke, registry - DSU-Protocol-Implementation: corrected byte offsets, sequence diagrams, CRC32 - 2D-Overlay-System: MIDI preview, verified file counts, flash timer corrected - 3D-Model-System: material system, coordinate transforms, touch gestures Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @hifihedgehog hifihedgehog committed Mar 19, 2026
  • Update wiki for audio bass rumble, source dropdown, macro volume options, DS3 raw mode User docs: Audio Bass Rumble section in Force-Feedback, source input dropdown in Button-and-Axis-Mappings, InvertAxis/ShowVolumeOsd in Macros, DS3/DsHidMini raw mode in Devices, audio rumble troubleshooting. Dev docs: AudioBassDetector in Architecture-Overview/Engine-Library, Step 2 audio combination in Input-Pipeline, detector lifecycle in Services-Layer, PadSetting audio properties in Settings-and-Serialization, PadViewModel/ MappingItem updates in ViewModels, PadPage UI changes in XAML-Views, NAudio.Wasapi in Build-and-Publish. Retake all 24 screenshots. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    @hifihedgehog hifihedgehog committed Mar 19, 2026
  • Update wiki: add multilingual, Copy From, condition effects, directional FFB docs; retake all screenshots - Button-and-Axis-Mappings: Copy From Translation, Clipboard Metadata sections - Force-Feedback: Directional Haptic Forces, Condition Effects sections - Settings: Language / Multilingual Support section - Virtual-Controllers: condition effects, NumHapticAxes - Engine-Library: MappingTranslation, updated Vibration class, ConditionAxisData - SDL3-Integration: SDL_HapticCondition, SDL_HapticRamp, SDL_GetNumHapticAxes - Architecture-Overview: MappingTranslation.cs in project layout - ViewModels: culture/localization support in ViewModelBase - Settings-and-Serialization: cross-layout mapping translation - vJoy-Deep-Dive: condition effect struct details - All 24 screenshots retaken with current UI Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

    @hifihedgehog hifihedgehog committed Mar 16, 2026
  • Convert all wiki images from PNG to JPG, update all references Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

    @hifihedgehog hifihedgehog committed Mar 15, 2026