Skip to main content

Human-like mouse and keyboard input simulation based on neuromotor research. Nothing to see here. 🐭

Project description

nothingtoseehere

PyPI Tests Changelog License

A python package that is certainly only for human mouse movement and keyboard input. 🐭

Built on neurophysiology research (Fitts' Law, minimum jerk trajectories, signal-dependent noise) to produce mouse movements and keyboard input that pass behavioral biometric detection.

Key Statistics (see RESEARCH.md for full details):

Human Trait Our Implementation
Throughput < 12 bits/s ✓ Enforced
Peak velocity at 38-45% ✓ 42% default
Straightness 0.80-0.95 ✓ ~0.91
8-12 Hz tremor ✓ 10 Hz
Log-normal clicks ~100ms

Installation

pip install nothingtoseehere

For browser automation with nodriver:

pip install nothingtoseehere[browser]

Quick Start

import asyncio
from nothingtoseehere import NeuromotorInput

async def main():
    human = NeuromotorInput()
    
    # Move mouse with human-like kinematics and click
    await human.mouse.move_to(500, 300, target_width=100, click=True)
    
    # Type with realistic timing
    await human.keyboard.type_text("Hello, world!")

asyncio.run(main())

API Overview

Mouse Methods

await human.mouse.move_to(x, y, target_width=50, click=True)
await human.mouse.hover(x, y)           # Move without clicking
await human.mouse.click()               # Click at current position
await human.mouse.double_click(x, y)    # Double-click
await human.mouse.right_click(x, y)     # Right-click
await human.mouse.triple_click(x, y)    # Select paragraph
await human.mouse.drag_to(x, y)         # Drag and drop
await human.mouse.scroll(-5)            # Scroll down
await human.mouse.move_relative(dx, dy) # Move by offset

Keyboard Methods

await human.keyboard.type_text("Hello!", with_typos=True)
await human.keyboard.press_key("enter")
await human.keyboard.hotkey("ctrl", "c")  # Or "command" on macOS

nodriver Integration

import nodriver as uc
from nothingtoseehere import NeuromotorInput

async def main():
    human = NeuromotorInput()
    browser = await uc.start()
    page = await browser.get("https://example.com")
    
    # Click elements directly - no manual coordinate conversion!
    button = await page.select("button.submit")
    await human.click_nodriver_element(button, page)
    
    # Fill input fields
    search = await page.select("input[name='q']")
    await human.fill_nodriver_input(search, page, "search query")

Demos

Try the interactive demos:

# Simple mouse movement demo (no browser needed)
python examples/mouse_demo.py

# Browser automation demo with Wikipedia
python examples/wikipedia_demo.py

Documentation

See nothingtoseehere/README.md for detailed documentation on the neuromotor models and configuration options.

Future Improvements

The following features are planned for future releases:

Persona Presets

Pre-configured profiles for different user types:

# Coming soon!
human = NeuromotorInput.gamer()     # Fast reactions, high precision
human = NeuromotorInput.elderly()   # Slower, more careful movements
human = NeuromotorInput.mobile()    # Touch-screen patterns
human = NeuromotorInput.novice()    # Hesitant, meandering paths

Device Profiles

  • Trackpad simulation (different movement patterns)
  • Touch screen gestures
  • Gaming mouse profiles

Recording & Replay

  • Record real human movements for analysis
  • Replay recorded patterns with variation

Development

To contribute to this library, first checkout the code. Then create a new virtual environment:

cd nothingtoseehere
python -m venv venv
source venv/bin/activate

Now install the dependencies and test dependencies:

pip install -e ".[dev]"

To run the tests:

python -m pytest

License

Apache 2.0 - See LICENSE for details.

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

nothingtoseehere-1.0.0.tar.gz (28.7 kB view details)

Uploaded Source

Built Distribution

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

nothingtoseehere-1.0.0-py3-none-any.whl (24.5 kB view details)

Uploaded Python 3

File details

Details for the file nothingtoseehere-1.0.0.tar.gz.

File metadata

  • Download URL: nothingtoseehere-1.0.0.tar.gz
  • Upload date:
  • Size: 28.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for nothingtoseehere-1.0.0.tar.gz
Algorithm Hash digest
SHA256 33c5fcd3d63a88553804b432f42c2d99e0244f648bcd0dbab7c434794fe0bbb8
MD5 edd9764732edf61139ec87c097090584
BLAKE2b-256 212c381faf85d167732ccbf8a33cc4afe30e72e7c50af1d47212f4195bfcf81d

See more details on using hashes here.

Provenance

The following attestation bundles were made for nothingtoseehere-1.0.0.tar.gz:

Publisher: publish.yml on Super-44/nothingtoseehere

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nothingtoseehere-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for nothingtoseehere-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f0ed24e296623ed1d6ac7f2efc99fb59d065550281cf5d4675a30521c4054e71
MD5 dc158f0f79907b930b566d0988983802
BLAKE2b-256 c44204fe3d9e6aee54f4622eae002f8c11444782121a5c723e3b5a15c5e8d442

See more details on using hashes here.

Provenance

The following attestation bundles were made for nothingtoseehere-1.0.0-py3-none-any.whl:

Publisher: publish.yml on Super-44/nothingtoseehere

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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