如何在功能 运行 期间忽略所有用户输入?

How can I ignore all user inputs for duration of function run?

我有一个 Python 模块,它使用 pynput 侦听组合键,然后,一旦按下它,它就会在文本程序中键入一个字符串。

效果很好!除了...

在下面的示例中,用户的组合键设置为 shift + space。这很有意义,并且可能是 Windows 用户 运行 我的程序最常选择的键命令。问题是,当按住 shift 键时,它会改变 pynput 类型。它将输入 )!/20/2019.

而不是 01/20/2019

我需要一种方法来禁用键盘,直到 pyautogui 完成输入字符串。非常感谢您的帮助!!!

奖金问题:当组合键包含 ctrl 键时,我似乎无法得到结果。 Key.ctrl 根本无法触发,而其他键工作正常。

from pynput.keyboard import Key, Controller, Listener
import time

keyboard = Controller()

def insert():                                 # check line 1 of config file 
     keyboard.type('01/20/2019')

# The currently active modifiers
current = set()

def on_press(key):
    if key in COMBINATION:
        current.add(key)
        if all(k in current for k in COMBINATION):      # I don't know what this k in current for k shit is.
            current.remove(key)
            insert()                                # run insert

    if key == Key.esc:
        listener.stop()


def on_release(key):
    try:
        current.remove(key)
    except KeyError:
        pass

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

您可以在输入前使用 pyautogui.keyUp("shift")

def insert():
f=open('tc.txt')
line=f.readlines()
insert.timestamp=(line[0])
time.sleep(.1)
pyautogui.keyUp("shift")
pyautogui.typewrite(insert.timestamp)