python - 调用时未执行execute()函数
问题描述
我正在尝试为我的键盘制作一个不使用Microsoft无用的键盘映射。所以我用. IME keyboard
python
pynput
但它似乎没有执行我的execute()
功能
from pynput.keyboard import Key, Controller current = set() keyboard_typ = Controller() COMBINATIONS = [ {keyboard.KeyCode(char="q")}, {keyboard.KeyCode(char="Q")}, {keyboard.KeyCode(char="w")}, {keyboard.KeyCode(char="W")}, {keyboard.KeyCode(char="e")}, {keyboard.KeyCode(char="E")}, {keyboard.KeyCode(char="r")}, {keyboard.KeyCode(char="R")}, {keyboard.KeyCode(char="t")}, {keyboard.KeyCode(char="T")}, {keyboard.KeyCode(char="y")}, {keyboard.KeyCode(char="Y")}, {keyboard.KeyCode(char="u")}, {keyboard.KeyCode(char="U")}, {keyboard.KeyCode(char="i")}, {keyboard.KeyCode(char="I")}, {keyboard.KeyCode(char="o")}, {keyboard.KeyCode(char="O")}, {keyboard.KeyCode(char="p")}, {keyboard.KeyCode(char="P")}, {keyboard.KeyCode(char="a")}, {keyboard.KeyCode(char="A")}, {keyboard.KeyCode(char="s")}, {keyboard.KeyCode(char="S")}, {keyboard.KeyCode(char="d")}, {keyboard.KeyCode(char="D")}, {keyboard.KeyCode(char="f")}, {keyboard.KeyCode(char="F")}, {keyboard.KeyCode(char="g")}, {keyboard.KeyCode(char="G")}, {keyboard.KeyCode(char="h")}, {keyboard.KeyCode(char="H")}, {keyboard.KeyCode(char="j")}, {keyboard.KeyCode(char="J")}, {keyboard.KeyCode(char="k")}, {keyboard.KeyCode(char="K")}, {keyboard.KeyCode(char="l")}, {keyboard.KeyCode(char="L")}, {keyboard.KeyCode(char="z")}, {keyboard.KeyCode(char="Z")}, {keyboard.KeyCode(char="x")}, {keyboard.KeyCode(char="X")}, {keyboard.KeyCode(char="c")}, {keyboard.KeyCode(char="C")}, {keyboard.KeyCode(char="v")}, {keyboard.KeyCode(char="V")}, {keyboard.KeyCode(char="b")}, {keyboard.KeyCode(char="B")}, {keyboard.KeyCode(char="n")}, {keyboard.KeyCode(char="N")}, {keyboard.KeyCode(char="m")}, {keyboard.KeyCode(char="M")}, ] def on_press(key) : if any([key in COMBO for COMBO in COMBINATIONS]): current.add(key) if any(all(k in current for k in COMBO) for COMBO in COMBINATIONS): execute() def execute() : if current == "q": print("q") def on_release(key) : if any([key in COMBO for COMBO in COMBINATIONS]): current.remove(key) with keyboard.Listener(on_press=on_press, on_release=on_release) as listener : listener.join()
解决方案
在考虑了华金的“设置为字符串”理论后,我将我的转换set
为 astring
并且它起作用了。
谢谢华金。
def execute(current_key) :
s = str(current_key)
for i in s :
if i == "q" :
print("q")
#print("\bㅂ") I tested it with a language and it types the normal text too so I prefer adding\b before the letter/word/sentence
推荐阅读
- bash - AWS CLI 错误重定向在 bash 中不起作用
- sql - sql表索引
- javascript - 如何在 Javascript 中每次重新加载页面时每分钟附加到一个数组?
- flutter - Flutter 中的板球式马车车轮图表设计
- reactjs - 在 Android TV 上反应本机内存泄漏
- python - 任务不删除消息,discord.py
- java - 使用 Microsoft Graph SDK for java 将大文件上传到带有元数据的 SharePoint
- node.js - Codelyzer 需要 Angular 9 而不是 Angular 10
- react-native - 如何在使用 connect() 和 NavigationContainer 时访问 redux 操作
- c# - WPF中的FPS计数器