This repository was archived by the owner on Feb 13, 2026. It is now read-only.
Description When I release() in a thread and then press() again in another is_pressed() will always return False.
Here is some code example:
import mouse
import time
import threading
def release_mouse ():
while True :
time .sleep (2 )
print ("Release Mouse" )
mouse .release ("left" )
t = threading .Thread (target = release_mouse )
t .daemon = True
t .start ()
while True :
time .sleep (0.2 )
if not mouse .is_pressed ("left" ):
print (f"Press Mouse" )
mouse .press ("left" )
expectation is that the output looks sth like this:
Press Mouse
Release Mouse
Press Mouse
Release Mouse
Press Mouse
....
But it looks like this:
Press Mouse
Release Mouse
Press Mouse
Press Mouse
Press Mouse
Press Mouse
Press Mouse
Press Mouse
Press Mouse
Press Mouse
Press Mouse
Press Mouse
Release Mouse
Press Mouse
Press Mouse
When keeping track of it on my own with a flag, I get the expected output:
import mouse
import time
import threading
is_pressed = True
def release_mouse ():
global is_pressed
while True :
time .sleep (2 )
print ("Release Mouse" )
mouse .release ("left" )
is_pressed = False
t = threading .Thread (target = release_mouse )
t .daemon = True
t .start ()
while True :
time .sleep (0.2 )
if not is_pressed :
print (f"Press Mouse" )
mouse .press ("left" )
is_pressed = True Reactions are currently unavailable
When I
release()in a thread and thenpress()again in anotheris_pressed()will always return False.Here is some code example:
expectation is that the output looks sth like this:
Press Mouse
Release Mouse
Press Mouse
Release Mouse
Press Mouse
....
But it looks like this:
Press Mouse
Release Mouse
Press Mouse
Press Mouse
Press Mouse
Press Mouse
Press Mouse
Press Mouse
Press Mouse
Press Mouse
Press Mouse
Press Mouse
Release Mouse
Press Mouse
Press Mouse
When keeping track of it on my own with a flag, I get the expected output: