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 не отменяется, хотя соответствующая функция запускается. Есть еще один недостаток - это постепенной увеличение выделяемой памяти на выполнение скрипта. Сильно не ругайте). Начинающий. Спасибо.


Ответы (0 шт):