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