Обработка ложных нажатий pynput

Как заставить функцию execute отработать один раз? Нажатие сочетания shift+a заставляет эту функцию отработать много раз

from pynput import keyboard
from pynput.keyboard import Key, Controller
from tkinter import Tk
from time import sleep

COMBINATIONS = [
    {keyboard.Key.shift, keyboard.KeyCode(char='a')},
    {keyboard.Key.shift, keyboard.KeyCode(char='A')},
    {keyboard.Key.ctrl, keyboard.KeyCode(char='c')},
    {keyboard.Key.ctrl, keyboard.KeyCode(char='C')}
]

current = set()
kb = Controller()

def execute():
    print("executing")
    with kb.pressed(Key.ctrl.value):
        kb.press('c')
        kb.release('c')

def on_press(key):
    if any([key in COMBO for COMBO in COMBINATIONS]):
        current.add(key)
        if any(all(k in current for k in COMBO) for COMBO in COMBINATIONS):
            execute()
            
def on_release(key):
    try:
        if any([key in COMBO for COMBO in COMBINATIONS]):
            current.remove(key)
            print(Tk().clipboard_get())
    except KeyError:
        print('error')
        pass


with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()

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