
main.cpl.What to do: open PowerShell (Start → type powershell → Enter) and check the version.
Why: the diagnostic script in Step 1 uses Add-Type, which behaves slightly differently on PowerShell 7; on 5.1 the script runs unchanged on every Windows 11 install.
How to check: run the command and confirm the major version is 5.
$PSVersionTable.PSVersion
Expected output (minor numbers vary by build):
Major Minor Build Revision
----- ----- ----- --------
5 1 22621 2506
Example: if you see Major 7, open a second window with powershell.exe -Version 5.1 and continue there.
Also confirm Windows sees the mouse at all:
Get-PnpDevice -Class Mouse | Format-Table Status, FriendlyName, InstanceId -AutoSize
Expected: one or more rows with Status = OK. A row showing Error is covered in Troubleshooting.
A ghost click (also called a double-click fault) is when one physical press is reported by the mouse as two press events. Before changing anything, you need a baseline: how many clicks Windows receives per physical click.
What to do: run two tests, a manual one and a timed one.
Test A — Notepad. Open Notepad, type a line of dots, then single-click between two dots and drag the cursor slightly. A healthy mouse places the caret and does not select text; a faulty one selects a character or a word because it received a second click.
Test B — timestamp logger. Save the following as C:\temp\click-probe.ps1 (create the folder first) and run it. It polls the left button for 30 seconds and prints the gap between consecutive presses in milliseconds.
New-Item -ItemType Directory -Path C:\temp -Force | Out-Null
if (-not ("ClickProbe" -as [type])) {
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class ClickProbe {
[DllImport("user32.dll")] public static extern short GetAsyncKeyState(int vKey);
}
"@
}
$log = New-Object System.Collections.Generic.List[datetime]
$end = (Get-Date).AddSeconds(30)
while ((Get-Date) -lt $end) {
if (([ClickProbe]::GetAsyncKeyState(0x01) -band 0x8000) -ne 0) {
$log.Add((Get-Date))
Start-Sleep -Milliseconds 80
}
Start-Sleep -Milliseconds 5
}
$prev = $null
foreach ($t in $log) {
$gap = if ($prev) { [int]($t - $prev).TotalMilliseconds } else { 0 }
"{0:HH:mm:ss.fff} gap={1} ms" -f $t, $gap
$prev = $t
}
Click the left button 10 times at a normal, deliberate rhythm — roughly one click per second. Do not double-click on purpose.
Why: the script gives you a numeric fingerprint. One entry per press with a gap close to your normal rhythm is healthy; two entries a few milliseconds apart, repeated on several presses, is a ghost click. Writing the baseline down before the fix lets you compare afterwards instead of guessing.
How to check: count the lines. 10 presses must produce 10 lines.
Example: a faulty mouse produces pairs like this — the second line is the ghost:
14:02:11.204 gap=0 ms
14:02:11.268 gap=64 ms
14:02:12.519 gap=1251 ms
14:02:12.583 gap=64 ms
Record the count of suspicious pairs (for example "4 ghost pairs out of 10 presses") on paper. That number is your baseline.

Three software causes account for most non-hardware cases: a stale HID driver, a double-click window that is too long, and USB selective suspend cutting power to the port.
What to do: apply the three fixes in order, testing after each one.
2a. Reinstall the HID mouse driver. Press Win + X → Device Manager → expand Mice and other pointing devices → right-click HID-compliant mouse → Uninstall device (leave "Attempt to remove the driver" unchecked if shown) → Action → Scan for hardware changes. Windows reinstalls the generic driver immediately.
Verify from PowerShell:
pnputil /enum-devices /class Mouse
Expected: an entry with Status: Started and an InstanceId such as HID\VID_xxxx&PID_yyyy\7&1a2b3c4d&0&0000.
2b. Shorten the double-click window. Windows treats two presses inside DoubleClickSpeed milliseconds as one double-click. On a clean install the value is 500. Reading it first is mandatory — never assume.
Get-ItemProperty -Path 'HKCU:\Control Panel\Mouse' -Name DoubleClickSpeed
Then set a shorter window, for example 300 ms, and sign out and back in so Explorer reloads the setting:
Set-ItemProperty -Path 'HKCU:\Control Panel\Mouse' -Name DoubleClickSpeed -Value '300'
The same slider is available with a GUI: Settings → Bluetooth & devices → Mouse → Additional mouse settings → Buttons tab → Double-click speed, dragged toward Fast.
2c. Stop USB selective suspend on the port. In an elevated PowerShell:
powercfg /setacvalueindex SCHEME_CURRENT 2a737441-1930-4402-8d77-b2bebba308a3 48e6b7a6-50f5-4782-a5d4-53bb8f07e226 0
powercfg /setdcvalueindex SCHEME_CURRENT 2a737441-1930-4402-8d77-b2bebba308a3 48e6b7a6-50f5-4782-a5d4-53bb8f07e226 0
powercfg /setactive SCHEME_CURRENT
Why: the ghost pair in Step 1 usually comes from a re-enumerated HID device or a debounce window that is too generous. Reinstalling the driver clears a corrupted device state, a shorter DoubleClickSpeed makes Windows reject the second, spurious press, and disabling selective suspend keeps the port powered so the mouse controller does not re-initialise mid-click. If the double clicks started right after a cumulative update rather than gradually, cross-check the known issues first: Windows 11 26H2: common issues after update and how to fix them.
How to check: re-read both registry values and confirm the power setting was written.
Get-ItemProperty -Path 'HKCU:\Control Panel\Mouse' -Name DoubleClickSpeed
powercfg /query SCHEME_CURRENT 2a737441-1930-4402-8d77-b2bebba308a3 48e6b7a6-50f5-4782-a5d4-53bb8f07e226
Expected: DoubleClickSpeed : 300 and, in the power output, Current AC Power Setting Index: 0x00000000.
Example: on a wireless mouse with a USB receiver, moving the receiver from a front-panel hub to a rear USB 2.0 port is worth doing at this point — hubs that drop power make the receiver re-enumerate, which produces exactly the ghost pattern from Step 1.

What to do: re-run the Step 1 logger for 30 seconds with 10 deliberate presses, then repeat the test in Safe Mode, then with the second mouse.
Get-PnpDevice -Class Mouse shows Status = OKWhy: software fixes are proven by the log, not by feel. Safe Mode loads only the base HID driver and no vendor utility, so ghost clicks that persist there are not caused by third-party software; ghost clicks that follow the faulty mouse onto a second PC (or that disappear when the second mouse is attached) are inside the mouse itself — a worn microswitch that bounces on a single press.
How to check: compare the pair count with your baseline number.
Example: baseline 4 ghost pairs in 10 presses; after Step 2 the same run shows 0 pairs and gaps of roughly 900–1200 ms. If it still shows 4 pairs in Safe Mode, the switch is the cause: use the Switch primary and secondary buttons checkbox in main.cpl as a temporary workaround so the left button uses the less-worn right switch, then replace the switch or open a warranty claim. Part numbers and warranty terms differ per model — check the vendor documentation before ordering a replacement.
Problem. The mouse disappears from Device Manager and Windows shows a USB error.
USB device not recognized — The last USB device you connected to this computer malfunctioned, and Windows does not recognize it. In Device Manager the device shows Windows has stopped this device because it has reported problems. (Code 43). pnputil /scan-devices
If the code returns on every port, test the mouse on another PC — a Code 43 that follows the device is a hardware fault.
Problem. The click-probe script fails with a type error.
Add-Type : Cannot add type. The type name 'ClickProbe' already exists.if (-not ("ClickProbe" -as [type])) guard in the script prevents this — make sure it is present. If you already hit the error, close the window and run the script in a fresh PowerShell session.Problem. PowerShell refuses to run the saved script.
C:\temp\click-probe.ps1 cannot be loaded because running scripts is disabled on this system.Restricted. Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
C:\temp\click-probe.ps1
You now have a measured baseline, a fixed software layer (driver, DoubleClickSpeed, USB power) and a documented decision about whether the switch itself is worn. If the ghost clicks survive both Safe Mode and a second mouse on the same port, treat the mouse as faulty — and if you end up rebuilding the system instead, follow How to Install Windows 11 26H2: Step-by-Step Guide with Official ISO so the driver stack is clean from the start.
Why does my mouse double-click when I click once?
The most common cause is a worn microswitch that bounces on a single press, followed by a stale HID driver or an over-long DoubleClickSpeed window. Step 1 separates the two in under a minute.
Is a ghost click a virus or malware?
No. Ghost clicks are generated either by the mouse hardware or by the HID driver — no malware is needed to explain a 60 ms duplicate press. Only investigate malware if clicks happen with no one touching the mouse at all.
Does making the double-click speed faster fix the problem?
It hides the symptom rather than repairing the mouse: a shorter window makes Windows reject the spurious second press, so files stop opening twice, but the extra press is still being sent.
Will a Windows update fix it?
Only if the cause is the driver or USB power management. Check the release notes for your build before waiting for a patch — if the pair pattern follows the mouse to another PC, no update will change it.