Skip to content

asikdial-dev/mouseless

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

2 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Mouseless

Mouseless

เฆญเฆพเฆฐเงเฆšเงเฆฏเฆผเฆพเฆฒ เฆฎเฆพเฆ‰เฆธ เฆ‡เฆ‰เฆœเฆฟเฆ‚ เฆนเงเฆฏเฆพเฆจเงเฆก เฆฎเง‹เฆถเฆจ

"เฆนเฆพเฆค เฆจเฆพ เฆฅเฆพเฆ•เฆฒเง‡เฆ“ เฆธเงเฆฌเฆชเงเฆจ เฆฅเฆพเฆ•เง‡ โ€“ เฆ†เฆฎเฆฐเฆพ เฆธเง‡เฆ‡ เฆธเงเฆฌเฆชเงเฆจเฆ•เง‡ เฆ•เฆพเฆฐเงเฆธเฆพเฆฐ เฆฌเฆพเฆจเฆฟเฆฏเฆผเง‡ เฆฆเฆฟเฆ‡"

Python PySide6 MediaPipe License Made in Bangladesh


Mouseless is Bangladesh's first hand-gesture virtual mouse system โ€” no physical mouse required. Control your computer using only hand gestures captured through any standard webcam, completely offline.

Features ยท Installation ยท Usage ยท Modes ยท License ยท Contact


๐Ÿ“‹ Table of Contents


๐ŸŽฏ About the Project

Mouseless was built with one belief:

No child in Bangladesh should be told "you cannot use a computer because you cannot hold a mouse."

Mouseless is a 100% offline, AI-powered virtual mouse that works through any standard webcam. It supports multiple control modes including two-hand, one-hand, one-finger, and (coming soon) head-control โ€” making computers accessible to everyone.

Official Project ID 27022251146
Official Project Name เฆญเฆพเฆฐเงเฆšเงเฆฏเฆผเฆพเฆฒ เฆฎเฆพเฆ‰เฆธ เฆ‡เฆ‰เฆœเฆฟเฆ‚ เฆนเงเฆฏเฆพเฆจเงเฆก เฆฎเง‹เฆถเฆจ
Brand Mouseless by asikdial.tech

โœจ Features

Feature Status
๐Ÿ– Two-hand gesture control (standard) โœ… Available
๐Ÿคš One-hand mode โœ… Available
โ˜๏ธ One-finger mode (accessibility) โœ… Available
๐Ÿ—ฃ Bangla voice feedback ๐Ÿ”œ Coming Soon
๐Ÿ‘ค Head-control mode ๐Ÿ”œ Coming Soon
โš™๏ธ Live cursor speed / scroll adjustment โœ… Available
๐Ÿ“ท Camera selection from UI โœ… Available
๐Ÿ’พ Settings auto-saved (settings.json) โœ… Available
๐Ÿ”‘ License key system โœ… Available
๐Ÿ“Š Action feedback in UI โœ… Available
๐ŸŒ 100% offline โ€“ no internet needed โœ… Available
๐Ÿซ School dashboard ๐Ÿ”œ Coming Soon

๐Ÿ’ป System Requirements

Component Minimum Recommended
OS Windows 10 / Ubuntu 20.04 / macOS 12 Windows 11 / Ubuntu 22.04 / macOS 14
Python 3.11.x 3.11.x (strictly required)
RAM 4 GB 8 GB
CPU Dual-core 2.0 GHz Quad-core 2.5 GHz+
Camera Any USB / built-in webcam 720p or higher
Storage 500 MB free 1 GB free
Display 1024 ร— 768 1920 ร— 1080

โš ๏ธ Python 3.11 is strictly required. MediaPipe is not yet stable on Python 3.12 or 3.13. Using any other version may cause unexpected errors.


๐Ÿ“ฆ Dependencies

All dependencies are managed automatically by uv. For reference, these are the packages used:

Package Purpose
opencv-python Camera capture & frame processing
mediapipe Hand landmark detection (AI model)
pyautogui Mouse and keyboard simulation
PySide6 Modern desktop GUI framework
pycaw Windows system volume control
comtypes Windows COM interface (required by pycaw)
screen-brightness-control System brightness control
protobuf MediaPipe internal data format

โ„น๏ธ pycaw and comtypes are Windows-only. On Linux and macOS they are skipped automatically. All other features work on all platforms.


๐Ÿš€ Installation

We use uv โ€” an ultra-fast Python package manager written in Rust. It is 10โ€“100ร— faster than pip and manages Python versions automatically. You do not need to install Python separately โ€” uv handles it.


๐ŸชŸ Windows

Open PowerShell for all steps below. Search "PowerShell" in the Start Menu to open it.


Step 1 โ€” Install uv

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Close PowerShell completely and open a new PowerShell window.

Verify the installation:

uv --version

Expected output: uv 0.x.x (any version is fine)


Step 2 โ€” Install Python 3.11

uv python install 3.11

Verify:

uv python list

You should see 3.11.x in the list.


Step 3 โ€” Get the project

If you have Git installed:

git clone https://github.com/your-username/mouseless.git
cd mouseless

If you do not have Git:

  1. Download the project as a ZIP file from GitHub
  2. Extract the ZIP to any folder (e.g. C:\mouseless)
  3. Open PowerShell and navigate to that folder:
cd C:\mouseless

Step 4 โ€” Install all dependencies

uv sync

This will automatically:

  • Create a virtual environment inside .venv
  • Install all required packages from pyproject.toml
  • Lock the exact versions in uv.lock

If you are setting up a completely fresh project without a lock file:

uv add opencv-python mediapipe pyautogui PySide6 pycaw comtypes screen-brightness-control protobuf

Step 5 โ€” Run Mouseless

uv run run.py

โœ… The Mouseless launcher window will open immediately.


Windows โ€” Camera Permission Check

If the camera does not open, check:

Windows Settings โ†’ Privacy & Security โ†’ Camera
โ†’ Camera access: ON
โ†’ Allow desktop apps to access your camera: ON

๐Ÿง Linux (Ubuntu / Debian)

Open your Terminal for all steps below.


Step 1 โ€” Install system dependencies

sudo apt update && sudo apt install -y \
    curl \
    git \
    python3-dev \
    libglib2.0-0 \
    libsm6 \
    libxext6 \
    libxrender-dev \
    libgl1-mesa-glx \
    libportaudio2 \
    libxcb-cursor0 \
    libxcb-icccm4 \
    libxcb-image0 \
    libxcb-keysyms1 \
    libxcb-randr0 \
    libxcb-render-util0 \
    libxcb-shape0

Step 2 โ€” Install uv

curl -LsSf https://astral.sh/uv/install.sh | sh

Reload your shell configuration:

source ~/.bashrc

If you use Zsh:

source ~/.zshrc

Verify:

uv --version

Step 3 โ€” Install Python 3.11

uv python install 3.11

Step 4 โ€” Get the project

git clone https://github.com/your-username/mouseless.git
cd mouseless

Step 5 โ€” Fix camera permissions

sudo usermod -aG video $USER

โš ๏ธ You must log out and log back in after running this command for the permission change to take effect.


Step 6 โ€” Install all dependencies

uv sync

Or for a fresh setup:

uv add opencv-python mediapipe pyautogui PySide6 \
       screen-brightness-control protobuf

โ„น๏ธ Do not add pycaw or comtypes on Linux โ€” they are Windows-only. Mouseless will automatically disable volume control on Linux. All other features (cursor, click, scroll, brightness) work fully.


Step 7 โ€” Run Mouseless

uv run run.py

โœ… The Mouseless launcher window will open.


๐ŸŽ macOS

Open your Terminal for all steps below. Terminal is found in: Applications โ†’ Utilities โ†’ Terminal


Step 1 โ€” Install Homebrew (if not already installed)

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

After installation, follow any instructions shown in the terminal to add Homebrew to your PATH.


Step 2 โ€” Install uv

curl -LsSf https://astral.sh/uv/install.sh | sh

Reload your shell:

source ~/.zshrc

Verify:

uv --version

Step 3 โ€” Install Python 3.11

uv python install 3.11

Step 4 โ€” Get the project

git clone https://github.com/your-username/mouseless.git
cd mouseless

Step 5 โ€” Grant camera permission

Go to:

System Settings โ†’ Privacy & Security โ†’ Camera

Make sure Terminal has camera access set to ON.

If you run Mouseless from an IDE (e.g. VS Code), grant camera access to that application instead.


Step 6 โ€” Install all dependencies

uv sync

Or for a fresh setup:

uv add opencv-python mediapipe pyautogui PySide6 \
       screen-brightness-control protobuf

โ„น๏ธ Do not add pycaw or comtypes on macOS โ€” they are Windows-only. Volume control gestures are automatically disabled on macOS. All other features work fully.


Step 7 โ€” Run Mouseless

uv run run.py

โœ… The Mouseless launcher window will open.


โ–ถ๏ธ Running the App

After installation, always run from the project root folder:

uv run run.py

First launch โ€” License setup

On the very first launch, you will see this prompt in the terminal:

=== Mouseless License Setup ===
Press Enter for Free Personal License
or enter a school / institution key:
  • Press Enter โ†’ continues with the Free Personal License
  • Type a school key and press Enter โ†’ activates that license

Your choice is saved in license.json and will not be asked again.

Stopping Mouseless

  • Press q inside the camera window, or
  • Click the Stop button in the launcher

๐ŸŽฎ Control Modes

Select your mode from the Control Mode dropdown in the launcher window. Changes are saved automatically.


๐Ÿ– Two Hands โ€” Standard

Best accuracy ยท Recommended for first-time users

Hand Controls
Dominant hand (right by default) Cursor move ยท Left click ยท Drag ยท Double click ยท Right click
Non-dominant hand (left by default) Scroll ยท Volume ยท Brightness

๐Ÿคš One Hand

For users who prefer single-hand operation

One hand controls everything: move ยท click ยท drag ยท scroll ยท volume ยท brightness


โ˜๏ธ One Finger โ€” Experimental

Designed for users with limited hand mobility

Action Gesture
Move cursor Raise exactly one finger
Left click Make a FIST โ†’ then raise one finger (tap)
Stop / Idle Full FIST or open PALM
Two or more fingers Cursor stops (ignored)

๐Ÿ‘ค Head Control โ€” Coming Soon

For users who cannot use their hands at all

  • Head movement โ†’ cursor movement
  • Eye blink or dwell-time โ†’ click
  • Will use MediaPipe Face Mesh (no extra hardware needed)

๐ŸคŒ Gesture Reference

Applies to Two Hands and One Hand modes.

Gesture Action
โœŒ๏ธ V-sign (index + middle finger open) Move cursor
โœŠ Closed fist (hold) Click and hold (drag)
๐Ÿค™ Pinch โ€” dominant hand Volume UP / DOWN ยท Brightness UP / DOWN
๐Ÿค™ Pinch โ€” non-dominant hand Scroll UP / DOWN ยท Scroll LEFT / RIGHT
โ˜๏ธ Index finger only (after V-sign) Right click
๐Ÿคž Two fingers closed (after V-sign) Double click
๐Ÿ– Open palm Idle โ€” cursor stops

๐Ÿ“ Project Structure

mouseless/
โ”‚
โ”œโ”€โ”€ run.py                          โ† Entry point  โ†’  uv run run.py
โ”œโ”€โ”€ pyproject.toml                  โ† uv project config + dependencies
โ”œโ”€โ”€ .python-version                 โ† Locks Python 3.11
โ”œโ”€โ”€ .gitignore                      โ† Git ignore rules
โ”œโ”€โ”€ README.md                       โ† This file
โ”‚
โ”œโ”€โ”€ mouseless_core/                 โ† Gesture engine (no UI)
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ config.py                   โ† All tunable parameters
โ”‚   โ”œโ”€โ”€ modes.py                    โ† Control mode definitions
โ”‚   โ”œโ”€โ”€ gestures.py                 โ† Gesture enums (binary encoded)
โ”‚   โ”œโ”€โ”€ hand_recognition.py         โ† MediaPipe โ†’ gesture conversion
โ”‚   โ”œโ”€โ”€ controller.py               โ† Gesture โ†’ OS action dispatch
โ”‚   โ”œโ”€โ”€ app.py                      โ† Camera loop + mode routing
โ”‚   โ”œโ”€โ”€ licensing.py                โ† License key validation + storage
โ”‚   โ”œโ”€โ”€ settings_manager.py         โ† Load / save settings.json
โ”‚   โ””โ”€โ”€ action_feedback.py          โ† Event logging + UI callback bridge
โ”‚
โ””โ”€โ”€ mouseless_ui/                   โ† Desktop GUI
    โ”œโ”€โ”€ __init__.py
    โ”œโ”€โ”€ styles.py                   โ† Centralised QSS stylesheet
    โ””โ”€โ”€ launcher.py                 โ† PySide6 launcher window

โš™๏ธ Configuration

You can adjust default values in mouseless_core/config.py:

# โ”€โ”€ Camera โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
CAMERA_INDEX = 0            # 0 = built-in camera, 1 = first USB camera

# โ”€โ”€ Cursor โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
CURSOR_SMOOTHING_ALPHA  = 0.6   # 0.1 (very smooth) โ†’ 1.0 (instant/raw)
CURSOR_SPEED_MULTIPLIER = 1.0   # overridden live by the UI slider

# โ”€โ”€ Scroll โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
SCROLL_STEP = 120               # scroll amount per pinch event

# โ”€โ”€ Gesture sensitivity โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
PINCH_THRESHOLD = 0.3           # minimum movement to trigger pinch

All settings changed through the launcher UI are saved automatically to settings.json and restored on next launch. You do not need to edit config.py for normal use.


๐Ÿ”‘ License Keys

Key Type Cost
(none โ€” press Enter) Free Personal License Free forever
MOUSELESS-PERSONAL-2025-FREE Registered Personal License Free forever
MOUSELESS-SCHOOL-TRIAL-2025 School Trial License Free (demo)
MOUSELESS-SCHOOL-ANNUAL-2025 School Annual License Paid

Personal use is always free โ€” no key or registration needed. For school / institutional licensing, contact us at contact@asikdial.tech.


๐Ÿ›  Troubleshooting

Camera does not open

Symptom:

[ERROR] Could not open camera

Fix โ€” Find available cameras:

import cv2
for i in range(5):
    cap = cv2.VideoCapture(i)
    print(f"Camera {i}:", "AVAILABLE" if cap.isOpened() else "not found")
    cap.release()

Save this as find_cameras.py and run:

uv run find_cameras.py

Then select the correct index in the Camera dropdown in the launcher.


Hand not being detected

  • Ensure lighting comes from in front of you, not from behind
  • Use a plain, single-colour background (white wall is ideal)
  • Keep your hand inside the camera frame at all times
  • Your hand should fill roughly 20โ€“30% of the camera frame area
  • Avoid wearing gloves or very dark clothing that covers your hand

Cursor jumping or erratic movement

  • Lower the Cursor Speed slider to 0.80ร— or below
  • Check for bright reflective surfaces in the camera's field of view
  • Ensure no other application (Zoom, Teams, OBS) is using the camera
  • Try reducing ambient light sources behind you

pycaw import error on Linux or macOS

Symptom:

ModuleNotFoundError: No module named 'pycaw'

This is expected and normal. pycaw is a Windows-only package. Mouseless automatically disables volume control on Linux and macOS. No action is needed โ€” everything else works normally.


PySide6 window does not open on Linux

sudo apt install -y \
    libxcb-cursor0 \
    libxcb-icccm4 \
    libxcb-image0 \
    libxcb-keysyms1 \
    libxcb-randr0 \
    libxcb-render-util0 \
    libxcb-shape0

Then run again:

uv run run.py

MediaPipe is slow to load on first launch

The first launch always takes 5โ€“15 seconds while MediaPipe loads its neural network model into memory. After that, all gesture detection runs in real time. This delay only happens once per session.


Settings not saving

Make sure the project folder is not inside a read-only location (e.g. C:\Program Files\ on Windows). Move the project to a regular folder such as C:\Users\YourName\mouseless\.


uv sync fails with dependency errors

Try clearing the uv cache and syncing again:

uv cache clean
uv sync

๐Ÿ“„ License

Mouseless Software License

Personal Use   โ€”  Free forever, no restrictions
Educational    โ€”  Trial available; annual institutional license available
Commercial     โ€”  Contact for pricing and terms

This software is provided "as is" without warranty of any kind.
The author is not liable for any damages arising from the use of this software.

ยฉ Copyright

โ•”โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•—
โ•‘                                                              โ•‘
โ•‘   Copyright ยฉ 2025 Mouseless                                 โ•‘
โ•‘   Powered by asikdial.tech                                   โ•‘
โ•‘   All rights reserved.                                       โ•‘
โ•‘                                                              โ•‘
โ•‘   Official Project ID   :  27022251146                       โ•‘
โ•‘   Official Project Name :  เฆญเฆพเฆฐเงเฆšเงเฆฏเฆผเฆพเฆฒ เฆฎเฆพเฆ‰เฆธ เฆ‡เฆ‰เฆœเฆฟเฆ‚ เฆนเงเฆฏเฆพเฆจเงเฆก เฆฎเง‹เฆถเฆจ  โ•‘
โ•‘   Brand                 :  Mouseless                         โ•‘
โ•‘   Website               :  https://asikdial.tech             โ•‘
โ•‘   Email                 :  contact@asikdial.tech             โ•‘
โ•‘                                                              โ•‘
โ•‘   Unauthorised copying, redistribution, or modification      โ•‘
โ•‘   of this software without written permission from the       โ•‘
โ•‘   copyright holder is strictly prohibited.                   โ•‘
โ•‘                                                              โ•‘
โ•šโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

๐Ÿ“ฌ Contact

Channel Details
๐ŸŒ Website asikdial.tech
๐Ÿ“ง Email asikdial.tech@gmail.com
๐Ÿ’ผ GitHub github.com/asikdial-tech/mouseless


Mouseless ย ยทย  Powered by asikdial.tech ย ยทย  ยฉ 2025 - 2026 All rights reserved

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages