DoubleClickFix
Mitigates double-click issues caused by malfunctioning mice.
Install / Use
/learn @nenning/DoubleClickFixREADME
🖱️ Double-click Fix
<img align="right" src="media/icon.png" width="200" height="200" />A lightweight tool that fixes accidental double-clicks caused by a worn-out or faulty mouse.
Mentioned in PCWorld and PC-Welt (German): "you can try using free software solutions such as Double-Click Fix"
New in release 1.6:
- 🚫 Per-device Ignore List – move the cursor with a second mouse or touchpad and check "Ignore this device" to exclude it from filtering. Saved permanently.
- 🖥️ Remote Desktop Support – enable the option in the UI to disable click filtering during RDP sessions.
- 🌗 Dark / Light Theme – choose between dark, light, or system theme in the settings.
- 🌐 Language Switcher – change the UI language directly from the settings without restarting.
🛍️ Get it from the Microsoft Store!
📋 Table of Contents
- Features
- System Requirements
- Installation
- Configuration
- How It Works: Filtering Mouse Clicks
- Contributions
- License
- Compatibility with Anti-Cheat Software
- Technical Notes
- Usage by Country
✨ Features
- Double-click filtering — filters accidental clicks per button with a configurable threshold. Default: 50 ms.
- Drag & Drop Fix — prevents faulty mice from dropping during a drag gesture.
- Mouse Wheel Fix — filters spurious reverse-direction scroll events.
- Per-device Ignore List — exclude specific devices (e.g. touchpad, second mouse) from filtering.
- Remote Desktop Support — optionally bypass filtering during RDP sessions.
- Tray icon — runs silently in the background; double-click to open settings.
- Start with Windows — registers to run automatically at startup.
- Update notifications (standalone) — checks GitHub for new releases on startup and shows a notification if one is available.

🖥️ System Requirements
- Operating System: Windows 10 or later.
- .NET Runtime: .NET 10 Desktop Runtime or later (usually installed automatically).
🚀 Installation
Install from Microsoft Store (recommended)
- Go to the Store page and install it.
Manual Setup
- Download: Grab the latest release from the Releases page.
- Unzip & Run: Extract the files and execute the
.exe.- Settings are stored in the registry under
HKEY_CURRENT_USER\Software\DoubleClickFix. - If you move the app to a different folder, deregister and re-register it to restore the startup entry.
- Settings are stored in the registry under
Build from Source
Clone the repository and build with Visual Studio or the .NET CLI.
⚙️ Configuration
🛠️ Settings
- Per-button delay: Set the minimum time (in ms) between clicks for each button. Clicks arriving faster than this threshold are filtered out. Default: 50 ms, left button only.
- Fix dragging issues: Enable only if your mouse drops items unexpectedly during a drag. While in drag-lock mode, spurious button events are ignored; a short pause at the end completes the release.
- Drag start delay: Minimum drag duration (in ms) before entering drag-lock mode. Default: 1000 ms.
- Drag release delay: Minimum time (in ms) the mouse must stay still before the button release is registered. You can also click manually to exit drag-lock mode. Default: 150 ms.
- Ignore this device: Move the cursor with any device you want to exclude (e.g. a secondary mouse or graphics tablet), then check "Ignore this device". Saved permanently — survives reboots and Bluetooth reconnects.
- Workaround for touch devices: Touch and touchpad clicks pass through unfiltered by default. Enable
Allow double-clicks with 0 ms gaponly if your touchpad or touchscreen isn't working correctly. - Remote Desktop sessions: Enable
Don't filter clicks in remote desktop sessionsif you control this PC via RDP and double-clicks aren't working. - Theme: Choose dark, light, or system (follows Windows setting).
- Language: Switch the UI language directly from the settings.
💡 Tips
- Check the logs for the elapsed time between clicks and which double-clicks were filtered.
- Adjust the threshold until faulty clicks are caught while your normal double-click speed still works.
- Use the test area in the UI to verify your settings (try single-clicking, double-clicking, selecting text, and dragging).
🔍 How It Works: Filtering Mouse Clicks
The application intercepts mouse events at a low level to distinguish intentional clicks from "bouncing" or "chattering" caused by a faulty mouse switch.
- Low-Level Mouse Hook: Registers a
WH_MOUSE_LLhook to intercept mouse events system-wide before they reach other applications. - Event Interception: Every mouse event (
WM_LBUTTONDOWN,WM_MOUSEMOVE, etc.) is captured by a callback function. - Double-Click Filtering:
- When a mouse button down event occurs, the application measures the time elapsed since the last corresponding up event for that same button.
- If this duration is shorter than the user-defined threshold (e.g., 50 ms), the event is considered an erroneous double-click and is filtered out — the system and other applications never receive it.
- The matching up event for a suppressed down is also suppressed, preventing orphaned release events from reaching applications.
- If the duration is longer than the threshold, the click is considered intentional and passed along as usual.
- Drag & Drop Correction: Faulty mice can send spurious "up" events while holding a button, interrupting drags. The "Fix dragging issues" feature addresses this:
- Entering Drag-Lock: After pressing and holding a button and moving beyond a small distance, the app enters drag-lock mode for that button.
- Suppressing Jitter: While in drag-lock, spurious
downorupevents are ignored so the drag isn't accidentally interrupted. - Releasing the Drag: The drag ends only after the mouse has been still for the configured release delay, at which point a genuine "up" event is sent.
- Mouse Wheel Filtering: Faulty wheels can scroll in the wrong direction momentarily, causing a jittery effect.
- Direction-Aware Filtering: The app tracks the last scroll direction (up/down or left/right).
- Time-Based Debouncing: A scroll in the opposite direction within the threshold is treated as jitter and ignored.
- Preserving Fast Scrolling: Intentional same-direction scrolling is never affected.
- Forwarding Events: Events that pass filtering are forwarded via
CallNextHookEx, ensuring normal behavior for all other applications.
🤝 Contributions
Contributions are welcome! Feel free to open issues, submit pull requests, or suggest improvements via the Issues tab.
📜 License
This project is distributed under the MIT License.
🎮 Compatibility with Anti-Cheat Software (VAC, EAC, BattlEye, etc.)
DoubleClickFix uses a WH_MOUSE_LL low-level mouse hook — the same mechanism used by accessibility tools and hardware drivers. It does not:
- Inject code into other processes.
- Read or write game memory.
- Modify game files or provide any gameplay advantage.
Anti-cheat systems (VAC, EAC, BattlEye) focus on cheat signatures, memory manipulation, and code injection — none of which apply here. The risk is considered very low.
Disclaimer: No third-party tool can be guaranteed safe with all future anti-cheat systems. Use alongside protected games is at your own discretion.
For official information, see Valve's VAC documentation.
🛠️ Technical Notes
Technical details — mostly for development.
🖥️ Command-Line Arguments
-nohook– Runs the app without registering the mouse hook. Useful for UI testing or debugging (automatically applied in debug mode).-interactiveor-i– Displays the UI on startup. Useful for testing (automatically applied in debug mode).
📦 Creating a Release
GitHub
- To create a GitHub release (zip), run:
git tag -a v1.0.1.0git push origin v1.0.1.0
- This will trigger t
Related Skills
node-connect
352.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.9kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.9kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
