(Python-键盘模块)我在这里做错了什么!当我按下时,我希望映射按E按E,但按下Q,向上,向下和向左按
我正在尝试抑制按键并将其重新映射到其他一些钥匙中。该代码看起来像这样:
from time import sleep
import keyboard
import os
os.chdir(os.path.dirname(__file__))
keys = {
'up':'e',
'down':'s',
'left':'q'
}
for each in zip(keys.keys(), keys.values()):
keyboard.on_press_key(each[0], lambda _:keyboard.press(each[1]), True)
keyboard.on_release_key(each[0], lambda _:keyboard.release(each[1]), True)
while not keyboard.is_pressed('shift'):
sleep(0.5)
但是当我运行此操作时,我希望在按下'e''键的键按 up up ,'s'时。 当我按 down 和'q'时,只有在我按下左>左>键时,但是我得到了'q '键按所有这三个重新映射的键!我在这里做错了什么?
I'm trying to suppress keypresses and remap them to some other keys. The code looks something like this:
from time import sleep
import keyboard
import os
os.chdir(os.path.dirname(__file__))
keys = {
'up':'e',
'down':'s',
'left':'q'
}
for each in zip(keys.keys(), keys.values()):
keyboard.on_press_key(each[0], lambda _:keyboard.press(each[1]), True)
keyboard.on_release_key(each[0], lambda _:keyboard.release(each[1]), True)
while not keyboard.is_pressed('shift'):
sleep(0.5)
But when I run this thing, I expect to get key press of 'e' key when I press up, 's' when I press down and 'q' only when I press left key, But I'm getting 'q' key press for all these three remapped keys!. What am I doing wrong here?!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
发生这种情况是因为机械师如何python函数 bind values and grount values and grouments 。因此,您定义了三个回调,每个回调都使用“ Q”字母。而且,请不要
zip(keys.keys(),keys.values())
- 尽管由于Python 3.7可能是安全的,所以很奇怪。This happens because of mechanics how python functions bind values and arguments. So you define three callbacks, each of them uses "q" letter. And please, don't
zip(keys.keys(), keys.values())
- although since python 3.7 it is probably safe, it is weird.