{"id":31702298,"url":"https://github.com/tmhsdigital/autoclicker","last_synced_at":"2026-05-19T05:01:35.083Z","repository":{"id":311530706,"uuid":"1043948687","full_name":"TMHSDigital/autoclicker","owner":"TMHSDigital","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-19T00:16:03.000Z","size":200,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-19T01:42:55.649Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TMHSDigital.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-25T00:27:27.000Z","updated_at":"2026-05-18T23:39:30.000Z","dependencies_parsed_at":"2025-08-25T04:40:46.601Z","dependency_job_id":"64157db8-2dc5-405f-ae76-9bf5739c1242","html_url":"https://github.com/TMHSDigital/autoclicker","commit_stats":null,"previous_names":["tmhsdigital/autoclicker"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TMHSDigital/autoclicker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TMHSDigital%2Fautoclicker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TMHSDigital%2Fautoclicker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TMHSDigital%2Fautoclicker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TMHSDigital%2Fautoclicker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TMHSDigital","download_url":"https://codeload.github.com/TMHSDigital/autoclicker/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TMHSDigital%2Fautoclicker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33203112,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-18T09:27:30.708Z","status":"online","status_checked_at":"2026-05-19T02:00:06.763Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-08T21:36:10.930Z","updated_at":"2026-05-19T05:01:34.910Z","avatar_url":"https://github.com/TMHSDigital.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Windows Autoclicker\n\n[![CI](https://github.com/TMHSDigital/autoclicker/actions/workflows/ci.yml/badge.svg)](https://github.com/TMHSDigital/autoclicker/actions/workflows/ci.yml)\n[![Python Version](https://img.shields.io/badge/python-3.10+-blue.svg)](https://python.org)\n[![Windows](https://img.shields.io/badge/Windows-10+-0078D4.svg)](https://www.microsoft.com/windows/)\n[![License](https://img.shields.io/badge/license-CC_BY--NC_4.0-green.svg)](LICENSE)\n\nA configurable autoclicker for Windows with coordinate targeting, burst mode, preset management, and safety controls.\n\n## Table of Contents\n\n- [Features](#features)\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [Usage](#usage)\n- [Configuration](#configuration)\n- [Safety \u0026 Compliance](#safety--compliance)\n- [Technical Details](#technical-details)\n- [Testing](#testing)\n- [Troubleshooting](#troubleshooting)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## Features\n\n### Core Functionality\n- **Precise Coordinate Targeting**: Click at exact screen coordinates with pixel-perfect accuracy\n- **Flexible Timing Control**: Adjustable click intervals with millisecond precision\n- **Multi-Button Support**: Left, right, and middle mouse button options\n- **Click Pattern Modes**: Single click or double click with customizable patterns\n- **Global Hotkey Control**: Start/stop with F6/F7, emergency stop with ESC\n\n### Advanced Automation Features\n- **Interactive Coordinate Picker**: Click-to-select target locations with visual feedback\n- **Preset Management System**: Save and load coordinate presets with custom names\n- **Random Variation Engine**: Add realistic timing variation to avoid detection patterns\n- **Burst Mode Automation**: Multiple clicks with configurable pause intervals\n- **Safety Control Systems**: Maximum click limits and automatic time-based shutdown\n\n### User Interface\n- **Native GUI**: Built with tkinter for Windows integration\n- **Live Status**: Click counter, runtime display, and status indicators\n- **System Tray Integration**: Minimize to tray for background operation\n- **Persistent Settings**: Automatic save/load of user preferences\n- **Input Validation**: Comprehensive validation with user-friendly error messages\n\n### Safety \u0026 Control Features\n- **Emergency Stop System**: Instant halt capability with dedicated hotkey\n- **Enhanced Input Validation**: Comprehensive validation with intelligent sanitization\n- **Structured Error Handling**: Custom exception hierarchy with user-friendly error messages\n- **Screen Bounds Validation**: Prevents clicks outside display boundaries\n- **Session logging**: Append-only log under `%APPDATA%/WindowsAutoclicker/sessions.log` (start/stop/safety events)\n- **Resource Management**: Low CPU usage with optimized threading\n- **Error Recovery**: Graceful handling of system interruptions and validation failures\n\n## Installation\n\n### System Requirements\n- **Operating System**: Windows 10 or Windows 11 (64-bit recommended)\n- **Python Version**: Python 3.10 or higher\n- **System Memory**: 100 MB RAM minimum\n- **Disk Space**: 50 MB free space\n- **Display**: 1024x768 minimum resolution\n\n### Prerequisites\n- Python 3.10+ ([Download from python.org](https://python.org/downloads/))\n- Windows 10/11 with administrator privileges for full functionality\n\n### Installation Steps\n\n#### Option 1: Direct Installation\n```bash\n# Clone the repository\ngit clone https://github.com/TMHSDigital/autoclicker.git\ncd autoclicker\n\n# Install dependencies\npip install -r requirements.txt\n```\n\n#### Option 2: Virtual Environment (Recommended)\n```bash\n# Clone the repository\ngit clone https://github.com/TMHSDigital/autoclicker.git\ncd autoclicker\n\n# Create virtual environment\npython -m venv autoclicker_env\n\n# Activate virtual environment\nautoclicker_env\\Scripts\\activate\n\n# Install dependencies\npip install -r requirements.txt\n```\n\n#### Option 3: Automated Setup\n```bash\n# Use the provided setup script\nrun_autoclicker.bat\n```\n\n## Quick Start\n\n1. **Launch the Application**\n   ```bash\n   python autoclicker.py\n   ```\n\n2. **Set Target Coordinates**\n   - Enter X,Y coordinates manually in the input fields\n   - Or click \"Pick Location\" and click anywhere on screen\n\n3. **Configure Click Settings**\n   - Select mouse button (Left/Right/Middle)\n   - Choose click type (Single/Double)\n   - Set interval timing in milliseconds\n\n4. **Start Automation**\n   - Press the \"Start\" button or use F6 hotkey\n   - Monitor progress in the status panel\n\n5. **Stop When Complete**\n   - Press \"Stop\" button or use F7 hotkey\n   - Use ESC for emergency stop\n\n## Usage\n\n### Basic Operation\n\n#### Manual Coordinate Entry\n1. Enter the X coordinate in the first field\n2. Enter the Y coordinate in the second field\n3. Verify coordinates are within screen bounds\n\n#### Interactive Coordinate Selection\n1. Click the \"Pick Location\" button\n2. The application window will minimize\n3. Click anywhere on screen to select coordinates\n4. The window will restore with selected coordinates\n\n### Advanced Configuration\n\n#### Burst Mode Setup\n```json\n{\n  \"burst_clicks\": 5,\n  \"burst_pause\": 1000\n}\n```\n- **burst_clicks**: Number of clicks per burst (default: 1)\n- **burst_pause**: Pause between bursts in milliseconds\n\n#### Random Variation Configuration\n```json\n{\n  \"interval\": 1000,\n  \"variation\": 100\n}\n```\n- **interval**: Base interval in milliseconds\n- **variation**: Random variation range (± milliseconds)\n\n#### Safety Limits\n```json\n{\n  \"max_clicks\": 1000,\n  \"auto_stop_minutes\": 30\n}\n```\n- **max_clicks**: Maximum clicks before auto-stop (0 = unlimited)\n- **auto_stop_minutes**: Auto-stop after X minutes (0 = disabled)\n\n### Hotkey Reference\n| Hotkey | Function | Description |\n|--------|----------|-------------|\n| F6 | Start Clicking | Begin automation sequence |\n| F7 | Stop Clicking | End automation sequence |\n| ESC | Emergency Stop | Immediate halt with cleanup |\n| Alt+F4 | Close Application | Standard window close |\n\n## Configuration\n\n### Settings File Structure\nThe application automatically creates `autoclicker_settings.json`:\n\n```json\n{\n  \"x_coord\": 100,\n  \"y_coord\": 100,\n  \"interval\": 1000,\n  \"interval_unit\": \"ms\",\n  \"variation\": 50,\n  \"mouse_button\": \"left\",\n  \"click_type\": \"single\",\n  \"burst_clicks\": 1,\n  \"burst_pause\": 1000,\n  \"max_clicks\": 0,\n  \"auto_stop_minutes\": 0,\n  \"presets\": {\n    \"Game Target\": {\"x\": 800, \"y\": 600},\n    \"Browser Click\": {\"x\": 450, \"y\": 300}\n  }\n}\n```\n\n### Configuration Options\n\n| Setting | Type | Default | Description |\n|---------|------|---------|-------------|\n| x_coord | integer | 100 | Target X coordinate |\n| y_coord | integer | 100 | Target Y coordinate |\n| interval | integer | 1000 | Click interval in milliseconds |\n| interval_unit | string | \"ms\" | Time unit (\"ms\" or \"seconds\") |\n| variation | integer | 0 | Random variation range |\n| mouse_button | string | \"left\" | Mouse button to use |\n| click_type | string | \"single\" | Click type (\"single\" or \"double\") |\n| burst_clicks | integer | 1 | Clicks per burst |\n| burst_pause | integer | 1000 | Pause between bursts (ms) |\n| max_clicks | integer | 0 | Maximum clicks (0 = unlimited) |\n| auto_stop_minutes | integer | 0 | Auto-stop timer (0 = disabled) |\n\n## Safety \u0026 Compliance\n\n### Important Warnings\n\n**READ CAREFULLY BEFORE USE**\n\n#### Legal Compliance Requirements\nYour usage must comply with:\n- Application and website terms of service\n- Local, state, and federal laws and regulations\n- Platform-specific automation policies\n- Industry-specific automation restrictions\n\n#### Intended Use Cases\nThis tool is designed for:\n- Legitimate automation of repetitive tasks\n- Accessibility assistance and accommodation\n- Software development and testing\n- Educational and research purposes\n\n#### Prohibited Activities\nDo not use for:\n- Game cheating or exploitation\n- Spam generation or harassment\n- Bypassing security measures\n- Unauthorized access or control\n- Commercial use without proper licensing\n\n### Built-in Safety Features\n\n#### Emergency Control Systems\n- **ESC Key**: Instant emergency stop with cleanup\n- **Screen Bounds Checking**: Prevents invalid coordinates\n- **Resource Limits**: Configurable click and time limits\n- **Status Monitoring**: Real-time operation visibility\n\n#### Session log\n- Append-only log in `%APPDATA%/WindowsAutoclicker/sessions.log`\n- Records start, stop reason, click count, and coordinates (no secrets)\n\n## Technical Details\n\n### Dependencies\n- **pyautogui** (0.9.53+): GUI automation (Windows target)\n- **keyboard** (0.13.5+): Global hotkey support\n- **mouse** (0.7.1+): Advanced mouse event handling\n- **pywin32** (227+): Windows API integration\n- **Pillow** (9.0.0+): Image processing and icon handling\n- **pystray** (0.19.4+): System tray functionality\n\n### Architecture Overview\n\n#### Application Structure\n```\nautoclicker.py\nautoclicker/\n├── main.py\n├── app/                  # controller, hotkeys, tray\n├── gui/                  # main_window + sections/\n├── core/                 # engine, settings, safety, session_log\n└── utils/\n    └── coordinate_picker.py\n```\n\nSettings file: `%APPDATA%/WindowsAutoclicker/autoclicker_settings.json` (legacy CWD file migrated once). See [ARCHITECTURE.md](ARCHITECTURE.md).\n\n#### Threading Model\n- **Main Thread**: GUI event handling and user interaction\n- **Click Thread**: Isolated automation execution\n- **Queue Processor Thread**: Optional thread for high-frequency click queuing\n\n### Design Notes\n- Threaded click loop keeps the GUI responsive\n- Click queuing available for high-frequency operations\n- Daemon threads ensure clean exit on window close\n\n## Testing\n\nThe application includes comprehensive unit tests for all core functionality.\n\n### Running Tests\n```bash\n# Run all unit tests (pytest)\npython run_tests.py\n\n# Run tests with coverage reporting\npython run_tests.py --coverage\n\n# Smoke check: dependencies and project layout (not part of pytest)\npython scripts/smoke_check.py\n```\n\n### Test modules\n- `test_settings_manager.py`, `test_settings_migration.py`\n- `test_click_engine.py` (mocked pyautogui; coverage gate on click engine)\n- `test_exceptions.py`, `test_safety.py`, `test_audit_regressions.py`\n- `test_coordinate_picker.py`\n\n## Troubleshooting\n\n### Common Issues and Solutions\n\n#### Application Startup Problems\n**Issue**: Application fails to launch\n**Solutions**:\n- Verify Python 3.10+ installation\n- Run as administrator: `right-click \u003e Run as administrator`\n- Install dependencies: `pip install -r requirements.txt`\n- Check Windows Event Viewer for error details\n\n#### Click Registration Issues\n**Issue**: Clicks not registering at target location\n**Solutions**:\n- Verify coordinates are within screen bounds\n- Ensure target window is active and not minimized\n- Try different click intervals (increase if too fast)\n- Check for overlay applications interfering\n\n#### Hotkey Recognition Problems\n**Issue**: Hotkeys (F6, F7, ESC) not working\n**Solutions**:\n- Run application as administrator\n- Close conflicting applications using same hotkeys\n- Restart the application\n- Check keyboard driver updates\n\n#### System Tray Issues\n**Issue**: System tray icon not appearing\n**Solutions**:\n- Verify pystray installation\n- Check Windows notification settings\n- Restart Windows Explorer\n- Run with administrator privileges\n\n#### Input Validation Errors\n**Issue**: \"Validation Error\" messages when starting\n**Solutions**:\n- Check that all numeric fields contain valid numbers\n- Ensure coordinates are within screen bounds\n- Verify interval values are reasonable (1ms to 1 minute)\n- Check that variation is not larger than the interval\n- Use the coordinate picker to avoid manual entry errors\n\n### Error Reporting\nFor persistent issues:\n1. Check Windows Event Viewer (eventvwr.msc)\n2. Create an issue with full error details\n3. Include system information and reproduction steps\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for setup (`make install` or `tasks.bat install`), tests, lint, pre-commit, licensing (CC BY-NC 4.0), and the tag-based release flow.\n\nQuick start:\n\n```bash\ntasks.bat install\ntasks.bat check\n```\n\nCI and maintainers use pinned dependencies in `requirements-lock.txt` (regenerate with `tasks.bat lock` on Python 3.11).\n\n### Pull Request Process\n1. **Fork** the repository\n2. **Create** a feature branch\n3. **Make** your changes following the modular architecture:\n   - Core functionality → `autoclicker/core/`\n   - GUI components → `autoclicker/gui/`\n   - Utilities → `autoclicker/utils/`\n4. **Add comprehensive tests** to the `tests/` directory\n5. **Update documentation** in README.md for any new features\n6. **Test** thoroughly on multiple systems\n7. **Submit** pull request with detailed description\n8. **Respond** to review feedback\n\n### Areas for Contribution\n- **Performance Enhancements**: Improve monitoring, queuing, or timing systems\n- **UI/UX Improvements**: Enhance user interface design and user experience\n- **Advanced Automation**: Pattern recognition, conditional clicking, macro recording\n- **Safety Features**: Anti-detection, rate limiting, advanced validation\n- **Cross-platform Support**: Linux/macOS compatibility and mobile companions\n- **Testing \u0026 Quality**: Add tests, type hints, linting, and code quality improvements\n- **Documentation**: Improve guides, examples, and user help systems\n- **Analytics**: Performance dashboards, usage metrics, and optimization tools\n\n## License\n\nThis project is licensed under the **Creative Commons Attribution-NonCommercial 4.0 International License** (CC BY-NC 4.0). See the [LICENSE](LICENSE) file for details.\n\nYou are free to share and adapt this software for non-commercial purposes, with appropriate attribution. For commercial licensing inquiries, contact TM Hospitality Strategies.\n\n---\n\n## Disclaimer\n\nThis software is provided \"as is\" without warranty of any kind. The authors and contributors assume no responsibility for any damages, legal issues, or consequences arising from the use or misuse of this application.\n\n**Use at your own risk and ensure compliance with all applicable laws, regulations, and terms of service.**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmhsdigital%2Fautoclicker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftmhsdigital%2Fautoclicker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftmhsdigital%2Fautoclicker/lists"}