Control your PC
with bare hands
A growing collection of browser-based tools that turn any webcam into a gesture interface. No install, no accounts, everything runs locally.
Why AirTouch
Engineered for precision
Every detail — from depth normalisation to hysteresis bands — is tuned so the cursor feels like an extension of your hand, not a novelty toy.
Anti-jitter EMA smoothing
An exponential moving average filters out hand tremors and frame-drop stutter, so the cursor glides fluidly instead of vibrating.
True mouse-button clicks
Tuck your thumb to press, release to lift. Hold to drag, double-tap to double-click — it behaves exactly like a physical button.
Proximity volume control
Open palm and push toward the camera to raise volume, pull back to lower. Depth is inferred from hand-size changes — no extra sensors.
21-point hand skeleton
Every joint is tracked and rendered live. The index-fingertip drives the cursor; the thumb-to-index-MCP distance drives clicks.
Depth-invariant thresholds
All pinch distances are normalised by the wrist-to-MCP reference size, so thresholds stay correct no matter how close or far your hand is.
Zero cooldowns
Actions respond the instant your hand forms a gesture. No artificial delays — just real-time, level-triggered control.
Single-process & lightweight
One Python process, one MediaPipe model, one OpenCV window. Runs comfortably on a laptop CPU with the XNNPACK delegate.
Active bounding box
Only the centre of the camera frame maps to the screen, so you never have to stretch your arm to reach the display edges.
Failsafe & private
PyAutoGUI's corner-abort is always one move away, and every frame stays on your machine — nothing is uploaded anywhere.
The gesture set
Four gestures. Full control.
A deliberately minimal vocabulary so every action is unmistakable. No combos to memorise, no cooldowns to fight.
Move cursor
Index finger only
Point with your index finger. The fingertip drives the cursor; an EMA filter smooths out jitter.
Left click / drag
Thumb tip → index knuckle
Tuck your thumb to the base of your index finger. Hold to keep the button down and drag; release to click. Double-tap = double-click.
Right click
Thumb + middle pinch
Pinch your thumb and middle fingertips together while keeping the index extended. The cursor freezes during the click so it lands exactly where you aimed.
Volume up / down
Open palm — push / pull
Open your hand fully, then push it toward the camera to raise the volume or pull it back to lower. Each nudge fires multiple key presses for fast changes.
Under the hood
From pixels to pointer
Four stages, one process, zero external services. The entire pipeline runs on your machine in a single Python process.
Capture
OpenCV grabs each frame from your webcam and flips it horizontally for a natural selfie view.
Detect
MediaPipe's HandLandmarker infers all 21 hand joints in ~10 ms per frame on a laptop CPU.
Map & smooth
The index fingertip is mapped through a centre bounding box to the screen, then EMA-smoothed.
Act
A level-triggered state machine fires mouseDown / mouseUp / scroll / volume through PyAutoGUI.
Built with
Where to take it next
Make it your own
AirTouch's engine is a solid foundation. Here are eight directions to expand it into something useful, fun, or genuinely life-changing.
Accessibility first
AirTouch is a lifeline for users with motor impairments who struggle with a physical mouse. Package it as a always-on system tray app with profile switching.
Gesture gaming
Map gestures to game inputs — swipe to cast spells, pinch to shoot, open palm to block. Build a lightweight virtual-gamepad layer on top of the engine.
Presentation pilot
A kiosk mode for lecturers: pinch to advance slides, open palm to show a laser pointer, swipe to go back. No clicker hardware needed.
Custom macro studio
A visual editor where users record their own gestures and bind them to any keystroke, app launch, or PowerShell script. Share profiles as JSON.
Air keyboard
Project a virtual QWERTY onto the camera view; tap keys by pinching over them. Fingertip-to-key distance does the hit-testing.
Phone-as-camera
Stream your phone's camera to the Python backend over WebSocket, so a laptop without a webcam can still use AirTouch.
Voice + gesture fusion
Combine AirTouch with a speech engine: say 'scroll' while swiping, or 'click there' while pointing. Multimodal commands are far more expressive.
Smart-home air remote
Pinch to dim the lights, rotate your wrist to change the thermostat. Bridge AirTouch to Home Assistant or MQTT.