Обработка ложных нажатий 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()