Skip to main content

AI Virtual Mouse Controller

Controle seu computador com gestos da mão.

CI PyPI Python License

Webcam → 21 landmarks → cursor do sistema. Sem hardware extra. Sem GPU.

AI-powered virtual mouse controller for Windows, macOS, and Linux. Control the mouse cursor, left and right clicks, drag-and-drop, and presentations with real-time hand gestures captured by a standard webcam. Built with Python, OpenCV, MediaPipe Hands, and PyAutoGUI; runs locally without sending camera images to the cloud.



🖐️ mover

🤏 clique

🤞 clique direito

✌️ duplo clique

✊ pausa

Site oficial →  ·  Guia de uso →  ·  Changelog →


O que é

O AI Virtual Mouse Controller é um mouse virtual com reconhecimento de gestos pela webcam. O MediaPipe identifica 21 pontos da mão em tempo real, uma state machine traduz gestos em eventos do sistema operacional (move, click, drag, scroll), e um holograma 3D opcional renderiza a mão virtual sobre o desktop.

100% local. Sem nuvem, sem telemetria, sem persistir nada da webcam.

Stack: Python 3.10+ · OpenCV · MediaPipe · PyAutoGUI · NumPy · ModernGL/PySide6 (opcional)


Instalar

Requer Python 3.10 ou mais novo (testado de 3.10 a 3.14) + webcam.

pip install ai-virtual-mouse-controller
avmc

Windows — "avmc não é reconhecido"? O instalador novo do Python (padrão no 3.14) não põe a pasta Scripts no PATH. Rode uma vez:

py -m avmc

O AVMC abre e adiciona essa pasta ao PATH do seu usuário (sem admin). A partir daí, num terminal novo, avmc funciona. Pra não mexer no PATH, defina AVMC_NO_PATH_SETUP=1.

Posicione a mão a ~50cm da câmera. Atalhos em runtime:

Tecla Ação
H liga/desliga o holograma 3D
S abre/fecha o painel de configurações
T alterna janela sempre-no-topo
ESC sai
Instalação via clone do repositório
git clone https://github.com/ognistie/ai-virtual-mouse-controller.git
cd ai-virtual-mouse-controller
py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python main.py

Para desenvolvimento: make dev instala dependências + pre-commit hooks.


Atualizar

pip install --upgrade ai-virtual-mouse-controller

Conferir a versão instalada:

pip show ai-virtual-mouse-controller

Vindo da 1.1.2 ou anterior? O projeto trocou opencv-python por opencv-contrib-python (mesmo cv2, usado pelo MediaPipe). Remova o antigo pra os dois não disputarem a mesma pasta:

pip uninstall -y opencv-python
pip install --force-reinstall --no-deps "opencv-contrib-python>=4.10,<5"

Se quiser pular o cache do pip e baixar do PyPI direto:

pip install --no-cache-dir --upgrade ai-virtual-mouse-controller

Para quem instalou via clone do repo:

cd ai-virtual-mouse-controller
git pull origin main
pip install -r requirements.txt

Histórico de mudanças em CHANGELOG.md.


Gestos

Gesto Símbolo Ação
Mão aberta — 4 dedos pra cima 🖐️ Move o cursor
Pinça polegar + indicador 🤏 Clique simples
Pinça polegar + indicador (1,5s+) 🤏 Iniciar arrasto (drag)
Pinça polegar + médio 🤞 Clique direito
Dois dedos (paz) ✌️ Duplo clique
Punho fechado ✊ Cursor congelado
Mão fora do frame — Pausa automática

Os cliques (esquerdo e direito) disparam no press — assim que os dedos se encostam — replicando o feedback de um botão físico.


Configuração

Toda a calibração vive em config.py — constantes nomeadas com docstrings explicando o quê, o porquê e o intervalo de ajuste. Principais grupos:

Seção O que controla
CAMERA índice da câmera, resolução, FPS alvo
CURSOR_ANCHOR qual ponto da mão o cursor segue (-2 = âncora robusta, default)
PINCH thresholds de detecção de clique (com escala adaptativa por tamanho da mão)
DPI / SMOOTHING sensibilidade do cursor + filtro OneEuro
SCREEN_MARGIN_* margens assimétricas (top/bottom < lateral) pra alcançar cantos
CURSOR_FOLLOWTHROUGH_* cinematic prediction quando a mão sai do FOV
HOLOGRAM backend (GL/QPainter), cor, opacidade, FPS

Ajustes em tempo de execução também ficam disponíveis no painel (tecla S) — perfis prontos: smooth, precise, responsive, stable.


Compatibilidade

OS Setup adicional
🪟 Windows 10/11 Nada. Funciona out-of-the-box após pip install.
🍎 macOS Mac Intel: use Python ≤ 3.12 (o MediaPipe novo só publica wheel pra Apple Silicon). Após primeiro run, liberar System Settings → Privacy & Security → Accessibility (cursor) e Camera (webcam). Em Apple Silicon, se PyAutoGUI reclamar: pip install pyobjc-core pyobjc.
🐧 Linux (X11) sudo apt install scrot python3-tk python3-dev libegl1 (Ubuntu/Debian). PyAutoGUI precisa dos três primeiros pra capturar a tela; o MediaPipe precisa do libegl1.
🐧 Linux (Wayland) Suporte limitado de PyAutoGUI. Recomendado mudar pra sessão X11.

MediaPipe: o rastreamento usa a Tasks API (HandLandmarker), disponível em mediapipe >= 0.10.18. O modelo (core/models/hand_landmarker.task) vem dentro do pacote — roda offline, sem download extra.


Como funciona

webcam → MediaPipe Hands (21 landmarks)
          ↓
     RobustHandAnchor  ← combina anatomia + estabilidade + edge extrapolation
          ↓
     GestureDetector   ← state machine: shape → event (CLICK, MOVE, DRAG…)
          ↓
     OneEuroSmoother   ← filtro adaptativo de cursor
          ↓
     CursorController  ← PyAutoGUI move o cursor real

Componentes auxiliares: HologramOverlay (renderização 3D opcional via ModernGL), RuntimeSettings (perfis e sliders), PerfTelemetry (timing p50/p99 por estágio).

Estrutura de pastas:

core/        # camera, hand_tracker, gesture_detector, hand_anchor, smoothing
services/    # orquestração do loop principal
config.py    # constantes de calibração documentadas
main.py      # entry point
tests/       # cobertura dos módulos puros (sem cv2/mediapipe)
docs/        # site estático + assets

Contribuir

Issues, PRs e feedback técnico são bem-vindos. Comece em CONTRIBUTING.md. Bugs em issues.

Workflow local rápido:

make dev        # instala deps + hooks
make check      # ruff + mypy + pytest
make test-fast  # só testes rápidos (sem GPU/integration/slow)
make test-gpu   # só testes que precisam de display/GPU real
make test-cov   # com coverage HTML

Testes marcados com gpu (overlay PySide6/ModernGL) ficam fora do pytest default — eles requerem display real e podem crashar em ambientes headless. Rode-os explicitamente com make test-gpu quando estiver mexendo no holograma.


Metadata

Release files for ai-virtual-mouse-controller 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ai-virtual-mouse-controller 1.2.0
File Size Uploaded
ai_virtual_mouse_controller-1.2.0.tar.gz 6.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for ai-virtual-mouse-controller 1.2.0
File Interpreter ABI Platform
ai_virtual_mouse_controller-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 11.9 MB

Release files / ai_virtual_mouse_controller-1.2.0.tar.gz

Download URL ai_virtual_mouse_controller-1.2.0.tar.gz
Size 6.0 MB
Tags Source
SHA-256 checksum
How to use checksums
ea6d863d66a604c5e49549c39bce87ae0d1c6ac9856fbe7f4d3bac6d597c3267
BLAKE2b-256 checksum
How to use checksums
c887933b44145629fe4facce7cc2efb697a824a4dfb0fb5bd3bc10d5cc168811
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / ai_virtual_mouse_controller-1.2.0-py3-none-any.whl

Download URL ai_virtual_mouse_controller-1.2.0-py3-none-any.whl
Size 6.0 MB
Tags Python 3
SHA-256 checksum
How to use checksums
784c48459571c9f68dc46ae9a6cade2b7f41b687bed4bd47ac0c260e76e47f38
BLAKE2b-256 checksum
How to use checksums
e2df8e6d2b4dbfcef3bc21dfb0803f4dfa7b7a66b279aaa8b66ee3171f6f913b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release history Release notifications | RSS feed

1.3.0

2 release files

This release

1.2.0 This release

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.2

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page