Python键盘和鼠标侦听器。通过按钮和取消按钮配置键盘和鼠标的完全拦截

Python键盘和鼠标侦听器。通过按钮和取消按钮配置键盘和鼠标的完全拦截,python,keyboard,listener,mouse,Python,Keyboard,Listener,Mouse,我想配置键盘和鼠标事件的截取。因此,当按下键盘上的按钮时,系统会完全截获操作。与此同时,我的职能继续得到执行。相应地,按钮(相同或另一个-不是点)取消了完全拦截并进一步“监听”事件 守则: from pynput import mouse from pynput import keyboard import time global Listener Listener = None def ctrl_1(): printt("Ctrl+f1") startL

我想配置键盘和鼠标事件的截取。因此,当按下键盘上的按钮时,系统会完全截获操作。与此同时,我的职能继续得到执行。相应地,按钮(相同或另一个-不是点)取消了完全拦截并进一步“监听”事件

守则:

from pynput import mouse
from pynput import keyboard
import time

global Listener
Listener = None

def ctrl_1():
    printt("Ctrl+f1")
    startListener(True)

def ctrl_2():
    printt("Ctrl+2")
    startListener(False)

def key_1():
    printt("f1")

def key_2():
    printt("f2")

def f12():
    printt ("stop")

def on_keypress(key):
    printt("on_keypress")

def on_keyrelease(key):
    printt("on_keyrelease")

def on_move(x, y):
    printt("on_move")

def on_click(x,y, button, pressed):
    printt("on_click")

def main ():
    startListener(False)

def printt (string):
    t1 = int(time.time())
    print (string+" "+str(t1))

def startListener (flag):
    global Listener
    if Listener:
        Listener.stop()
    with mouse.Listener(on_move=on_move, on_click = on_click, suppress=flag) as Listener:
        with keyboard.Listener(on_press=on_keypress, on_release = on_keyrelease, suppress=False) as Listener:
            with keyboard.GlobalHotKeys({
                    '<ctrl>+1': ctrl_1,
                    '<ctrl>+2': ctrl_2,
                    '<f1>': key_1,
                    '<f2>': key_2,
                    '<f12>': f12
                    }, suppress=False) as Listener:
                Listener.join()

main()
从pynput导入鼠标
从pynput导入键盘
导入时间
全局侦听器
侦听器=无
def ctrl_1():
printt(“Ctrl+f1”)
斯特林斯特纳(真)
def ctrl_2():
printt(“Ctrl+2”)
监听器(错误)
def键_1():
printt(“f1”)
def键_2():
printt(“f2”)
def f12():
打印(“停止”)
def on_键按下(键):
printt(“在按键上”)
钥匙释放(钥匙)上的def:
printt(“on_key release”)
移动时的def(x,y):
printt(“移动中”)
def on_单击(x,y,按钮,按下):
printt(“点击时”)
defmain():
监听器(错误)
def printt(字符串):
t1=int(time.time())
打印(字符串+“”+str(t1))
def STARTISTENER(标志):
全局侦听器
如果侦听器:
Listener.stop()
使用mouse.Listener(on_move=on_move,on_click=on_click,suppress=flag)作为侦听器:
使用keyboard.Listener(on_press=on_keypress,on_release=on_keyprelease,suppress=False)作为侦听器:
使用键盘。全局热键({
“+1”:ctrl_1,
“+2”:ctrl_2,
'':键1,
'':键2,
'':f12
},suppress=False)作为侦听器:
Listener.join()
main()
在此表单中,通过按
Ctrl-1
执行完全拦截。在这种情况下,仅在鼠标上,但按下
Ctrl-2
不会取消,尽管相应的功能已启动

还有一个缺点-每次按下
Ctr-1
<代码>Ctr-2逐渐增加脚本执行所分配的内存。(不要骂太多)我是初学者

有人能帮我改进代码吗?多谢各位