我想检测一个按键是否是以编程方式执行的(而不是用户的物理按键)。有什么方法可以做到吗?
import mouse
import keyboard
import time
keyboard.press("a")
if keyboard.is_pressed('a'):
print ("pressed")
我假设上面的代码中的“is_pressed”只检测用户的实际输入,因此它不会显示打印(“pressed”)。我所能想到的解决这个问题的方法是下面的代码,它对我的意图很好,但我想知道是否有更好的优化方法。
import mouse
import keyboard
import time
keyboard.press("a")
keyboard_a = True
keyboard.press("b")
keyboard_b = True
if keyboard_a:
print ("a pressed")
if keyboard_b:
print ("b pressed")
2条答案
按热度按时间qhhrdooz1#
无法区分以编程方式触发的按键事件和由用户输入触发的按键事件。
readchar
、msvcrt
或keyboard
库也是如此。因此,该库提供了一种检测和响应按键事件的方法,而不管其来源如何。因此,使用标记的方法是好的。
我不知道您的确切目标,但也许您更喜欢使用
send
和这样的register事件并发布事件
tct7dpnv2#
您可以创建一个列表并将按下的键存储在该列表中。您可以通过搜索该列表来查找是否按下了某个键。
打印所有按下的键:
打印最后按下的键:
您还可以创建一个类以使其更易于用途:
然后像这样使用它:
下面是输出:
是否以编程方式按下?:真的
是否通过编程方式按下z?:假