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 · PySide6 (holograma 3D via OpenGL do Qt)


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
PROFILE perfil inicial do painel: smooth, precise, responsive, stable
CURSOR_ANCHOR qual ponto da mão o cursor segue (-2 = âncora robusta, default)
PINCH thresholds de detecção de clique (escala adaptativa por tamanho da mão + histerese pra soltar)
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 estilo (quest, graphite, neon), backend (OpenGL/QPainter), tamanho, 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 (mão 3D estilo headset VR: hand_pose → hand_mesh → shader OpenGL do Qt, com fallback 2D QPainter), 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
scripts/     # eval_motion.py: mede jitter/atraso/cliques com mãos sintéticas
tests/       # unitários + gate de qualidade de movimento
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/OpenGL) 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.3.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.3.0
File Size Uploaded
ai_virtual_mouse_controller-1.3.0.tar.gz 6.0 MB Details

Built distribution (wheel)

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

Total release size: 12.0 MB

Release files / ai_virtual_mouse_controller-1.3.0.tar.gz

Download URL ai_virtual_mouse_controller-1.3.0.tar.gz
Size 6.0 MB
Tags Source
SHA-256 checksum
How to use checksums
8974fbe1955499fb5329c11db7b27c02e5759b814398c5ba0b157eb4c03ef190
BLAKE2b-256 checksum
How to use checksums
6270c3eb3df3aa0903d84adbeb9b0de7bed109d0d59ed0180232b69b49c94c63
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.3.0-py3-none-any.whl

Download URL ai_virtual_mouse_controller-1.3.0-py3-none-any.whl
Size 6.0 MB
Tags Python 3
SHA-256 checksum
How to use checksums
cf3fe6ee628ab6a86d4527793f5c57fc2bae61c6fa07613fee74b9722027169b
BLAKE2b-256 checksum
How to use checksums
0411ac8b058f578afe2888d299e79c9c3a0c10a775b198e53f79f889d9d9e4d4
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

This release

1.3.0 This release

2 release files

1.2.0

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