CA CursorAssist
Accessibility

Assistive cursor control, deterministic by design.

DSP-grounded tremor compensation, adaptive deadzones, and target magnetism — every frame is hash-verified and reproducible. Plus MouseTrainer for building dexterity over time.

Install

dotnet add package CursorAssist.Engine

Pipeline

var pipeline = new TransformPipeline() .Add(new SoftDeadzoneTransform()) .Add(new SmoothingTransform()) .Add(new PhaseCompensationTransform());

Run

var result = engine.FixedStep(in raw, ctx); // result.DeterminismHash → FNV-1a

Features

DSP-grounded accessibility, not toy filters.

Tremor compensation

Velocity-adaptive EMA smoothing with closed-form cutoff from tremor frequency, optional dual-pole, and phase compensation.

Fully deterministic

Same input always produces the same output. No DateTime.Now, no Random, no platform-dependent floats. FNV-1a hash verification on every tick.

Modular NuGet packages

Canon (schemas), Trace (recording), Policy (profile mapping), Engine (pipeline). Use only what you need — no forced coupling.

Usage

Map a motor profile

using CursorAssist.Canon.Schemas;
using CursorAssist.Policy;

var profile = new MotorProfile {
  TremorFrequencyHz = 6f,
  TremorAmplitudeVpx = 4.5f,
  PathEfficiency = 0.72f,
};

var config = ProfileToConfigMapper.Map(profile);
// SmoothingMinAlpha → ~0.31
// DeadzoneRadiusVpx → ~2.7

Build the pipeline

using CursorAssist.Engine.Core;
using CursorAssist.Engine.Transforms;

var pipeline = new TransformPipeline()
  .Add(new SoftDeadzoneTransform())
  .Add(new SmoothingTransform())
  .Add(new PhaseCompensationTransform())
  .Add(new TargetMagnetismTransform());

var engine = new DeterministicPipeline(
  pipeline, fixedHz: 60);

NuGet Packages

Four independent packages, one-way dependencies.

Package
Depends on
Description
CursorAssist.Canon
(nothing)
Versioned immutable schemas and DTOs
CursorAssist.Trace
(nothing)
JSONL trace format for cursor recording
CursorAssist.Policy
Canon
Deterministic profile-to-config mapper
CursorAssist.Engine
Canon, Trace
Transform pipeline with 60 Hz accumulator

Two Products, One Engine

Real-time assistance and dexterity training.

CursorAssist Pilot

System tray app that intercepts and transforms raw pointer input in real time — tremor compensation, deadzones, edge resistance, target magnetism.

MouseTrainer

.NET MAUI desktop game with fixed-timestep simulation, composable blueprint mutators, and drag-and-drop gauntlet mode for building dexterity.

214+ tests

Every transform, every policy rule, every edge case. Platform-stable run identity via xorshift32 RNG and FNV-1a hashing.