python - pynput 事件执行两次
问题描述
def pressLetter(charIn):
val = getKeyValue(charIn)
PressKey(val)
return
def KeyboardEvents():
from pynput import keyboard
with keyboard.Events() as events:
for event in events:
if event.key == keyboard.Key.space:
pressLetter('w')
按空间类型 ww。我将如何重写它以便它只按 w 一次?
解决方案
嗯,我想通了。似乎keyboard.Events() 在按键按下和按键释放时都注册了按钮按下事件。意思是...
if event.key == keyboard.Key.space:
pressLetter('w')
按 w 两次,因为它在按下键时执行,然后释放键。我找到的解决方案是改用keyboard.Listener()
def pressLetter(charIn):
val = getKeyValue(charIn)
PressKey(val)
return
def on_press(key):
if key == keyboard.Key.space:
pressLetter('w')
def on_release(key):
if key == keyboard.Key.esc:
return False
with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
listener = keyboard.Listener(on_press=on_press, on_release=on_release)
listener.start()
推荐阅读
- node.js - ExpressJS:发送请求标头身份验证
- php - 如何根据类似id的特定列的值回显不同的字符串?
- ios - 无法在 Swift 上将映射对象数组设置/获取到 userDefaults
- arm - ARMv8 汇编中的 MOV、MOVZ、MOVN 和 MOVK 有什么区别?
- cordova - Cordova:我们可以在 config.xml 的不同平台部分中拥有不同版本的相同插件吗?
- oracle - PL/SQL CLOB 到雪花数据仓库 VARCHAR
- c++ - 将二进制数据传递给另一个线程
- android - 迭代状态栏通知元素
- python - iPython won't let me finish defining a function
- javascript - ANT 从 bash 脚本返回数组