Skip to main content

Human-like mouse path generation using PD control

Project description

Path Generator

Tests Coverage

A Python library for generating human-like mouse paths using PD (Proportional-Derivative) control.

Installation

Core Library

Install the core library (only requires numpy):

pip install pathgenerator

With Windows Emulator

Install with pywin32 for high-performance cursor emulation (Windows only):

pip install pathgenerator[windows]

With Server

Install with the optional FastAPI server:

pip install pathgenerator[server]

Usage

Human Motion Parameters

  • mouse_velocity: Base movement velocity (unitless, 0.1-1.0).
  • kp_start / kp_end: Correction strength at start vs. end.
  • stabilization: Damping factor to smooth out jitters (0.0-1.0).
  • noise: Amount of random hand tremor (0.0-10.0+).
  • overshoot_prob: Probability of overshooting the target and correcting (0.0-1.0).
  • arc_strength: Tendency to move in a curved arc (0.0-0.5).
  • keep_prob_start / keep_prob_end: Point density (drop probability) at start/end.
  • offset_x / offset_y: Global offset added to all points.

Generating Paths

from pathgenerator import PDPathGenerator

gen = PDPathGenerator()
path, progress, steps, params = gen.generate_path(
    start_x=100.0, start_y=100.0,
    end_x=1800.0, end_y=900.0,
    mouse_velocity=0.65,
    noise=2.6,
    offset_x=0, offset_y=0  # Optional viewport offset
)

Tuning Workflow (Server + JSON)

The easiest way to find realistic parameters is to use the interactive playground. (Requires: pip install pathgenerator[server])

  1. Launch the server:
    python -m pathgenerator.server
    
  2. Tune settings at http://127.0.0.1:8001.
  3. Download JSON: Click "Export Preset" to save your settings as human_relaxed.json.
  4. Load in Python:
    # Initialize generator with your custom preset
    gen = PDPathGenerator("human_relaxed.json")
    
    # All generated paths will now use those settings by default
    path, *_ = gen.generate_path(100, 100, 500, 500)
    

Executing Paths (Windows Only)

The PathEmulator class includes a helper get_position() to simplify generating paths from your current mouse location.

from pathgenerator import PDPathGenerator, PathEmulator

# Requires: pip install pathgenerator[windows]
emulator = PathEmulator()
gen = PDPathGenerator()

# 1. Get current mouse position
start_x, start_y = emulator.get_position()

# 2. Generate path to target (e.g., 500, 500)
# calculate offset if you are targeting a window relative to screen 0,0
path, *_ = gen.generate_path(start_x, start_y, 500, 500)

# 3. Move the mouse (optional delay to control playback speed)
emulator.execute_path(path, delay_between_points=0.001)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pathgenerator-0.1.2.tar.gz (2.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pathgenerator-0.1.2-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

File details

Details for the file pathgenerator-0.1.2.tar.gz.

File metadata

  • Download URL: pathgenerator-0.1.2.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pathgenerator-0.1.2.tar.gz
Algorithm Hash digest
SHA256 2c10e4637c679b0de104290dc57723a72a338ec79977b8b41af5348a37986475
MD5 87ce73dce564e0473d0bf22ec88227c6
BLAKE2b-256 7a4fe87a9b470eebdeb404b447b4ec2dd1731b1af270280b41aef2861c888d29

See more details on using hashes here.

File details

Details for the file pathgenerator-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: pathgenerator-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 24.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pathgenerator-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ca1393aa7067365da626080b8f30139393b3da89939db2bae8c9000167ed37c1
MD5 f708e599fa634487de43dfaaf13a451b
BLAKE2b-256 ecf014b57ec458c13d8bc9fd8dca39d1a782d7a96e49ab815aaeaf1fe34d5aa7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page