首页 > 解决方案 > 调用时未执行execute()函数

问题描述

我正在尝试为我的键盘制作一个不使用Microsoft无用的键盘映射。所以我用. IME keyboardpythonpynput

但它似乎没有执行我的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() 

标签: pythonarrayskeyboardkeyevent

解决方案


在考虑了华金的“设置为字符串”理论后,我将我的转换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

推荐阅读