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逐渐增加脚本执行所分配的内存。(不要骂太多)我是初学者
有人能帮我改进代码吗?多谢各位