Skip to content

Bindable 360-degree flick-stick calibration

Historical record. This preserves the source, tests and limitations recorded at the time; it is not current setup guidance. See the documentation index.

This records the initial implementation in 62c6a6e. The subsequent Axis Config revision replaces the remapper UI described below; the runtime and binding compatibility tests remain relevant.

Implements issue #104, using the existing profile's left/right Real World Calibration rather than a second mapping system or separately stored sensitivity. Usage and primary references are documented in the calibration guide.

Behavior and containment

  • New output IDs 45/46 append without renumbering existing bindings. Both normal and shifted bindings round-trip through the actual ProfileDTO XML serializer.
  • Each tap requests one approximately one-second turn, with total mouse counts rounded once from 360 * RWC. The normal per-controller mapper handles the action, consumes its original game button, and keeps physical observations unchanged. Reports produce cumulative integer differences, not lossy per-tick fractional mouse values.
  • Held inputs do not repeat; presses while turning are ignored, not queued. RWC is captured at the start. The two calibration choices never combine into an accidental double turn on simultaneous activation.
  • Connection/mouse-owner, output-handler, profile revision, cancellation generation, invalid availability, clock rollback and over-250-ms report-gap boundaries cancel old motion. Cold resets use atomic generations rather than racing the mapper's per-slot state. Terminal Nintendo neutral publication cancels calibration; an ordinary report without motion does not.
  • Macro-recording/unmapped frames cancel instead of catching up on resume.
  • Calibration-only backend flushing preserves pending gyro/touch motion and uses an atomic FakerInput operation. A bounded pair of movements can require two signed-16-bit reports: counts survive, wheel deltas appear only once, and held buttons remain held. Existing normal/immediate mouse methods, input transports, virtual-pad presentation, audio and haptics are unchanged.

Evidence

The final focused Release run passed 91 tests, no failures or skips:

  • Exact counts at 125/250/500/1,000 Hz and irregular intervals; fractional RWC, valid maximum RWC, malformed values, one-shot latch and cancellation cases.
  • Zero managed allocations in 5,000 measured active/idle calibration frames.
  • Actual MapCustom execution with an in-memory controller and recording output backend: no leaked game button, preserved input snapshots, shifted bindings, terminal/nonterminal behavior and reconnect without a profile reload.
  • Bounded output splitting, buffered movement preservation, default immediate dispatch, and the bundled managed mouse-report wrapper's wheel/button reset semantics. No native driver connection is made by these tests.
  • Actual production tab markup rendered offscreen in Default/Dark themes at 630/812 DIP widths and 96/144 DPI. Six layout tests pass; the main agent also inspected the rendered default and 150%-scale dark images for clipping.

An intermediate test build caught a missing direct reference to the existing FakerInput managed wrapper. The test project now references the same bundled, platform-matched assembly as the application; no package/version was changed. The rerun compiled and passed all focused checks.

Artifacts are under isolated_results/flick-calibration-20260914/, including calibration-focused-complete.trx and six flick-calibration-*.png renders. The complete Release suite passed 5,913 tests, zero failures, with 11 opt-in tests skipped (three live audio capture and eight Go/DS4 process interop cases), 5,924 total. Evidence is calibration-full.trx. No failing assertion was disabled.

Validation boundary

These tests do not run a game, inject Windows input, connect a driver or replace the installed application. Actual in-game degrees depend on the user's mouse look/sensitivity/acceleration; that is precisely what this manual calibration action measures. No claim of universal camera-angle detection is made. This source work does not alter already-published RC4.6 release assets.