gpt4 book ai didi

python - 哪个 Python 模块可以在 while 循环中监控 3 个按键组合?

转载 作者:太空宇宙 更新时间:2023-11-03 21:44:23 26 4
gpt4 key购买 nike

嗨,我正在尝试执行以下操作:

while True:
do something
if key = q is been hold but not released and key = ctrl is been hold and key = shelf is been hold:
break
time.sleep(0.008333)#run it at 120fps

我用谷歌搜索了一下,但找不到一个工具可以让你检查按键是否被按住。最多的是新闻还是发布?按下表示按键从释放瞬间变为保持状态。释放是指按键从保持变为释放的瞬间。这是很难捕捉到的一小部分时间。但搁置是一个持续的状态,应该很容易捕获。

然后我找到了pynput。看起来也是一个循环。但我不知道如何同时运行两个循环。一个循环来做我的事情。一个循环来监视按键然后设置一些标志?

或者我可以像这样运行循环?

while True:
do something()
monitor key board for 0.00833333 seconds.

但我不知道如何只运行 pynput 0.0083333 秒...

请帮忙?

最佳答案

已解决

我发现使用pynput的正确方法是启动监听器而不是加入

以及在 Windows 中Ctrl 是 Ctrl_l 或 ctrl_r移位可以是shift或shift_l或shift_r在苹果电脑上ctrl就是ctrl

为了兼容我必须包括所有可能的组合。

import pynput,time

is_quit = False

KeyComb_Quit = [
{pynput.keyboard.Key.ctrl, pynput.keyboard.KeyCode(char='q')},
{pynput.keyboard.Key.ctrl_l, pynput.keyboard.KeyCode(char='q')},
{pynput.keyboard.Key.ctrl_r, pynput.keyboard.KeyCode(char='q')}

]

def on_press(key):
global is_quit
if any([key in comb for comb in KeyComb_Quit]):
current.add(key)
if any(all(k in current for k in comb) for comb in KeyComb_Quit):
is_quit = True

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


# The currently active modifiers
current = set()

listener = pynput.keyboard.Listener(on_press=on_press, on_release=on_release)
listener.start()

##### MAIN Script #####
while True:
do something
time.sleep(0.00833)
if is_quit:
break

关于python - 哪个 Python 模块可以在 while 循环中监控 3 个按键组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52601252/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com