I am creating a script where if user press f7 it will start recording mouse clicks and when he releases the button it should stop and this happens unless user close the program.
I have written a code which starts recording keys on pressing f7 but when released it still record the key also because key is in continuous pressed position, it keeps on starting multiple listeners and data keeps getting redundant.
Also after releasing f7, listener doesn't stop
Here is the code
from pynput import mouse, keyboard
from pynput.keyboard import Key, Listener
import pickle
x_pos = []
y_pos = []
both_pos = []
file = open("test.txt", "wb")
file.close()
def on_press(key):
mouse_listener = mouse.Listener(on_click=on_click)
if (key==keyboard.Key.f7):
mouse_listener.start()
print("done")
def on_release(key):
if (key==keyboard.Key.f7):
mouse_listener.stop()
print("closing file")
#file.close()
def on_click(x, y, button, pressed):
if pressed:
print ("{0} {1}".format(x,y))
x_pos.append("{0}".format(x,y))
y_pos.append("{1}".format(x,y))
#print (x_pos)
#print (y_pos)
both_pos = x_pos, y_pos
with open("temp.txt", "ab") as file:
pickle.dump(both_pos, file)
print(both_pos)
mouse_listener = mouse.Listener(on_click=on_click)
#mouse_listener.start()
with keyboard.Listener(on_press = on_press, on_release = on_release) as listener:
try:
#listener.start()
listener.join()
except MyException as e:
print('Done'.format(e.args[0]))
You don't have a reference to the same
mouse_listenerinon_releaseandon_press.Take out
mouse_listener = mouse.Listener(on_click=on_click)inon_pressand definemouse_listenerbefore bothon_pressandon_releaseIt also might be worth wrapping the whole thing in a class