Pynput нажатие клавиш во время выполнения функции, когда работает прослушивание, которое эту функцию и запускает
Я использовал библиотеку pynput, и столкнулся с проблемой:
У меня работает прослушивание команд, которое запускает функцию на выполнение:
def on_press(key):
current_keys.add(key)
print(current_keys)
if frozenset(current_keys) in combination_to_function:
combination_to_function[frozenset(current_keys)]()
def on_release(key):
current_keys.clear()
with Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
Во время выполнения одной из функций, выполняемой, после нажатия клавиш, нужно имитировать нажатие клавиш
def test():
keyboard = PynputController()
print("cntrl + c")
keyboard.press(Key.ctrl)
keyboard.press('c')
keyboard.release('c')
keyboard.release(Key.ctrl)
print("cntrl + v")
keyboard.press(Key.ctrl)
keyboard.press('v')
keyboard.release('v')
keyboard.release(Key.ctrl)
print("end")
Однако по какой то причине функция выполняется дважды, а нажатие клавиш происходит после двойного выполнения функции(сначала дважды выполняется функция, затем после происходят нажатия клавиш)
Вот такую картину я получаю, при мониторинге нажатия клавиш:
{<Key.ctrl_l: <162>>}
{<Key.ctrl_l: <162>>, <Key.space: ' '>}
cntrl + c
cntrl + v
end
{<Key.ctrl_l: <162>>, <Key.space: ' '>}
cntrl + c
cntrl + v
end
{<Key.ctrl_l: <162>>, 'c', <Key.space: ' '>}
{<Key.ctrl_l: <162>>}
{<Key.ctrl_l: <162>>, 'v'}
{<Key.ctrl_l: <162>>}
{<Key.ctrl_l: <162>>, 'c'}
{<Key.ctrl_l: <162>>}
{<Key.ctrl_l: <162>>, 'v'}
{<Key.ctrl_l: <162>>}