Skip to main content

Accessibility dwell clicker for motor disabilities

Project description

Dwellpy

GitHub release Python Version License: GPL v3 Platform

An accessibility tool that lets you click by hovering - designed for people with motor disabilities who use head trackers, eye trackers, or have limited hand mobility.

Made by a disabled person, for the disabled community.


🎯 What is Dwellpy?

Instead of physically clicking, just hover your cursor over any area for a short time and Dwellpy will click for you automatically. This "dwell clicking" technique is essential for people who:

  • Use head tracking or eye tracking devices
  • Have cerebral palsy, hand tremors, or limited dexterity
  • Experience fatigue, weakness, or repetitive strain injuries
  • Have conditions like Parkinson's, arthritis, or muscular dystrophy
  • Use alternative mouse controls where physical clicking isn't possible

✨ Key Features

🖱️ Smart Clicking

  • Multiple Click Types: Left, right, double-click, and drag operations
  • Intelligent Modes: Temporary mode switching with visual feedback
  • Adaptive Sensitivity: Customizable hover time and movement tolerance

📜 Hands-Free Scrolling

  • Floating Scroll Widget: Follows your cursor automatically
  • Hover to Scroll: No clicking required - just hover over arrows
  • Smart Positioning: Stays out of your way, locks when you need precision

Accessibility First

  • Motor Disability Support: Designed specifically for movement challenges
  • Customizable Settings: Adapt to your specific needs and abilities
  • Persistent Configuration: Set it once, works every time
  • Cross-Platform: Works consistently on Windows, macOS, and Linux

🚀 Quick Start

Get up and running in 2 minutes:

1. Install Dwellpy

pip install dwellpy

2. Launch the App

dwellpy

3. Start Using

  • Click the green ON/OFF button to activate
  • Windows users: For best results, run as Administrator (recommended)
  • macOS users: Grant Accessibility permissions when prompted (required for mouse control)
  • Hover your cursor anywhere for 1 second - it will click automatically!
  • Use the SETUP button to adjust sensitivity to your needs

That's it! 🎉

📖 How to Use

Main Interface

Dwellpy shows a small toolbar with these buttons:

Button Function Visual Cue
ON/OFF Activate/deactivate dwell clicking 🟢 Green = On, 🔴 Red = Off
LEFT Left click mode (default) 🔵 Blue = Default mode
DOUBLE Double-click mode 🔴 Red = Temporary mode
DRAG Drag operation mode Requires two hovers: down + up
RIGHT Right-click mode For context menus
SCROLL Toggle scroll widget 🟢 Green = Active
SETUP Open settings Customize to your needs
MOVE Reposition toolbar Drag to move
EXIT Close application

Click Mode System

🔵 Default Mode (Blue): Your primary click type - returns here after each action
🔴 Temporary Mode (Red): One-time use, then returns to default

  • Single selection: Makes a mode temporary (red)
  • Double selection: Makes a mode permanent default (blue)

Scroll Widget

The scroll widget automatically appears near your cursor when active:

  • Follows your cursor at a safe distance
  • Locks in place when you get close for precision
  • Hover over arrows to scroll up ⬆️ or down ⬇️
  • Quick toggle with SCROLL button (great for avoiding conflicts with on-screen keyboards)

⚙️ Settings & Configuration

Access via SETUP button - all settings apply immediately:

Core Settings

Move Limit (3-20px): How much your cursor can move while "dwelling"

  • Head tracker users: 8-15px (natural head movement)
  • Hand tremors/cerebral palsy: 10-20px (accommodates movement)
  • Good stability: 3-8px (precise control)

Dwell Time (0.1-2.0s): How long to hover before clicking

  • Fatigue/concentration issues: 0.1-0.5s (less sustained focus)
  • Prevent accidents: 0.8-2.0s (deliberate clicking)
  • Head tracker users: 0.5-0.8s (balanced)

Advanced Settings

Window Transparency: Make toolbar see-through when not in use
Scroll Widget: Adjust speed, positioning, and opacity
Auto-Start: Launch active by default

Accessibility-Friendly Controls

Settings can be adjusted by hovering over +/- buttons - no clicking required!

💻 Installation Options

Option 1: Simple Install (Recommended)

pip install dwellpy
dwellpy

Option 2: From Source (Developers)

git clone https://github.com/code0nwheels/dwellpy.git
cd dwellpy
pip install -r requirements.txt
python -m dwellpy.main

🚀 Coming Soon: Pre-built Binaries

We're working on downloadable executables for even easier installation - no Python required! These will be available for Windows, macOS, and Linux.

📋 System Requirements

  • Python: 3.8 or higher
  • Operating System: Windows 10+, macOS 10.14+, or Linux with X11
  • Memory: 50MB RAM minimum
  • Dependencies: PyQt6, pynput (installed automatically)

Platform Notes

  • Windows:
    • Works out of the box
    • Recommended: Run as Administrator for best mouse control reliability
    • Right-click Dwellpy → "Run as Administrator" or run Command Prompt as Administrator
  • macOS:
    • May require brew install qt@6 for Qt dependencies
    • Important: macOS will prompt you to grant Accessibility permissions to Dwellpy - this is required for mouse control to work
    • Go to System Preferences → Security & Privacy → Privacy → Accessibility and enable Dwellpy
  • Linux: X11 only (Wayland support coming soon)

🔧 Troubleshooting

Common Issues

Problem Solution
Clicks not working Increase Move Limit or decrease Dwell Time in settings
Too many accidental clicks Decrease Move Limit or increase Dwell Time
Windows: Inconsistent clicking Run as Administrator - right-click Dwellpy → "Run as Administrator"
macOS: App not clicking Grant Accessibility permissions: System Preferences → Security & Privacy → Privacy → Accessibility → Enable Dwellpy
Scroll widget interfering Use SCROLL button to toggle off (especially with on-screen keyboards)
Scroll widget not appearing Check SCROLL button is green (active)
Precision issues Use temporary mode for specific tasks

For Different Conditions

Condition Recommended Settings
Head Tracker Move: 8-15px, Time: 0.5-0.8s, Scroll Speed: 3-5
Cerebral Palsy Move: 10-20px, adjust based on movement patterns
Hand Tremors Move: 12-20px, Time: 0.3-0.6s, Scroll Speed: 2-4
Fatigue/Weakness Time: 0.1-0.5s, Scroll Speed: 6-8 (faster response)
Spasms Time: 1.0-2.0s, Scroll Speed: 1-3 (controlled)

🏗️ Technical Details

  • Cross-platform mouse control via pynput
  • Efficient dwell detection with low CPU usage
  • Qt-based interface with accessibility support
  • Smart scroll positioning with collision avoidance
  • JSON settings for easy configuration backup

🤝 Contributing & Support

Get Help

Contributing

Contributions are welcome! Please feel free to submit pull requests. For major changes, please open an issue first to discuss what you would like to change.

Development

git clone https://github.com/code0nwheels/dwellpy.git
cd dwellpy
pip install -e .
python -m dwellpy.main

📄 License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.

💡 Our Mission

Dwellpy was created to break down barriers and enable independent computer use for people with motor disabilities.

Technology should be accessible to everyone, regardless of physical ability. By providing a free, open-source solution for dwell clicking, we aim to:

  • Reduce the cost barrier to assistive technology
  • Provide cross-platform accessibility that works everywhere
  • Enable independence in digital spaces
  • Support the disability community with tools made by someone who understands

Made with ❤️ by a disabled person, for the disabled community.

Have feedback or need help? We'd love to hear from you on GitHub Discussions.

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

dwellpy-0.3.0.tar.gz (61.7 kB view details)

Uploaded Source

Built Distribution

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

dwellpy-0.3.0-py3-none-any.whl (68.8 kB view details)

Uploaded Python 3

File details

Details for the file dwellpy-0.3.0.tar.gz.

File metadata

  • Download URL: dwellpy-0.3.0.tar.gz
  • Upload date:
  • Size: 61.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for dwellpy-0.3.0.tar.gz
Algorithm Hash digest
SHA256 6a769a10c9d939dded419d5c92494bb9472475afc23d83a4c517e61f0008453a
MD5 f4dee4fc4754bedeccc33eadaa3f5895
BLAKE2b-256 03131f8ab92cc66b83e399646e192884fcc0dbe100e289f05fa10a11021babd0

See more details on using hashes here.

Provenance

The following attestation bundles were made for dwellpy-0.3.0.tar.gz:

Publisher: publish-pypi.yml on code0nwheels/Dwellpy

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

File details

Details for the file dwellpy-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: dwellpy-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 68.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for dwellpy-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 97ecd0aaabbb91b3f26e6d7dad962d317adec8b742e2f39b3e51247d91d84116
MD5 81c458acb7b38b931d4c31cc40ba9e9e
BLAKE2b-256 d904fb47776cdf5d9ef84b0b804dc6013a4f10c8846d6042329fbfa6f8cb44c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for dwellpy-0.3.0-py3-none-any.whl:

Publisher: publish-pypi.yml on code0nwheels/Dwellpy

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