python - Python 键盘和鼠标监听器。配置按键和鼠标全拦截,按键取消
问题描述
我想配置拦截键盘和鼠标事件。这样,当按下键盘上的按钮时,系统就会完全拦截动作。与此同时,我的职能继续被执行。并且,相应地,按钮(相同或另一个 - 不是重点)取消了完全拦截并进一步“监听”事件。
编码:
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()
在这种形式中,按 进行完全拦截Ctrl-1
。在这种情况下,只是在鼠标上,但按下Ctrl-2
并没有取消,虽然启动了相应的功能。
还有一个缺点 - 每次按下Ctr-1
......都会Ctr-2
逐渐增加为脚本执行分配的内存。(不要骂太多)我是初学者。
任何人都可以帮助改进我的代码吗?谢谢你。
解决方案
推荐阅读
- django - KeyCDN 和 DO 空间:设置 STATICFILES_STORAGE 时的 Django {% static %} vs {{ STATIC_URL}}
- dart - ListView 不会刷新,而附加列表会刷新 (Flutter)
- java - 从 Github (51.1) 安装 activerecord-jdbc-adapter 失败
- r - 如何“传播”列表列?
- c++ - 是否可以使用不同的兼容共享库重新链接二进制文件或加载两个同名的库
- android - 为什么firebase随机且无序地显示数据?
- javascript - 无法在 JavaScript 中启用按钮
- r - R闪亮服务器:如何更新具有多个用户和会话的脚本?
- model-view-controller - 如何为 ASPNETCore 2.1 应用程序配置 SignalR Cors?
- c# - C# Streamreader 读取行不存在?