Python Listener. Настроить полный перехват клавиатуры и мыши по кнопке и по кнопке же его и отменить
Хочу настроить перехват ивентов клавиатуры и мыши. Чтобы при нажатии кнопки на клавиатуре происходил полный перехват действий от системы. Мои функции при этом, соответственно, продолжали выполнение. И, соответственно, по кнопке (этой же или другой - не суть важно) происходила отмена полного перехвата и дальнейшее "прослушивание" событий. Код:
from pynput import mouse
from pynput import keyboard
import time
global Listener
Listener = None
def ctrl_1():
printt("Ctrl+f1")
startListener(True)
def ctrl_2():
printt("Ctrl+2")
startListener(False)
def key_1():
printt("f1")
def key_2():
printt("f2")
def f12():
printt ("stop")
def on_keypress(key):
printt("on_keypress")
def on_keyrelease(key):
printt("on_keyrelease")
def on_move(x, y):
printt("on_move")
def on_click(x,y, button, pressed):
printt("on_click")
def main ():
startListener(False)
def printt (string):
t1 = int(time.time())
print (string+" "+str(t1))
def startListener (flag):
global Listener
if Listener:
Listener.stop()
with mouse.Listener(on_move=on_move, on_click = on_click, suppress=flag) as Listener:
with keyboard.Listener(on_press=on_keypress, on_release = on_keyrelease, suppress=False) as Listener:
with keyboard.GlobalHotKeys({
'<ctrl>+1': ctrl_1,
'<ctrl>+2': ctrl_2,
'<f1>': key_1,
'<f2>': key_2,
'<f12>': f12
}, suppress=False) as Listener:
Listener.join()
main()
В таком виде перехват полный осуществляется при нажатии Ctrl-1. В данном случае только на мышь, но при нажатии Ctrl-2 не отменяется, хотя соответствующая функция запускается. Есть еще один недостаток - это постепенной увеличение выделяемой памяти на выполнение скрипта. Сильно не ругайте). Начинающий. Спасибо.