Python нажимает клавишу до тех пор, пока не появится другая клавиша

Я уже смотрел предыдущий пост, но не могу найти что-то, что работает...

Глобально моя цель: скрипт на питоне, который, если я нажму «k», начнет удерживать «k», пока я не нажму escape. Но проблема в том, что он не содержит «k», и я не знаю, почему

Если кто-то может помочь, я был бы рад, спасибо

from pynput import keyboard
import pyautogui

def on_press(key):
    try:
        print('alphanumeric key {0} pressed'.format(
            key.char))
        if key.char == 'k':
            return False
    except AttributeError:
        print('special key {0} pressed'.format(
            key))

def on_release(key):
    print('{0} released'.format(
        key))
    if key == keyboard.Key.esc:
        # Stop listener
        return False

def listening_k():
    with keyboard.Listener(
            on_press=on_press) as listener:
        listener.join()
    return True

def listening_esc():
    with keyboard.Listener(
            on_release=on_release) as listener:
        listener.join()
    return True


def hold_key(key):
    while listening_k() == True :
        pyautogui.keyDown(key)
        if listening_esc() == True :
            break

hold_key('k')

person kevin james    schedule 07.04.2020    source источник


Ответы (1)


Вы можете сделать это проще, имея переменную, которая содержит состояние (логическое значение), если клавиша «k» нажата. Сделайте его True каждый раз, когда вы нажимаете клавишу «k», и False для нажатия клавиши «esc».

person Naufan Rusyda Faikar    schedule 07.04.2020
comment
Но проблема в том, что когда я вызываю listen_k(), он не прекращает прослушивание (поэтому ничего не делает) до тех пор, пока не будет нажата «k», и когда я вызываю listen_esc(), он будет делать то же самое. - person kevin james; 08.04.2020