Search code examples
pythonarrayskeyboardkeyevent

execute() function is not being executed when called


I am trying to make a keymap for my keyboard to not use Microsofts useless IME keyboard. So I wrote this python code with pynput.

But it doesn't seem to execute my execute() function

   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() 

Solution

  • execute() has current but you never pass such variable to the function, so you are comparing nothing. Your function should look like this

       def execute(current) :
       
           if current == "q":
               
               print("q")