python keyboard模块的修改, 解决与autohotkey的冲突问题
在使用keyboard模块设置全局热键时, 发现如果设置为suppress模式, 与autohotkey软件冲突, 导致autohotkey的一些热键不能正常使用, 比如alt+c
键. 并且发现keyboard热键不够灵敏, 有时候需要按多次才能够响应.
import keyboard
i = 0
def Temp():
global i
i += 1
print(i)
keyboard.add_hotkey('ctrl+a', Temp,suppress=True)
keyboard.wait()
如上例, 如果autohotkey软件注册了快捷键alt+c
, 运行时会出现不能正常工作的情况.
经过阅读keyboard源码, 发现注释掉下面的代码, 就可以解决此问题.
文件: _winkeyboard.py
, 相关代码:
def low_level_keyboard_handler(nCode, wParam, lParam):
try:
vk = lParam.contents.vk_code
# Ignore the second `alt` DOWN observed in some cases. 在某些情况下,忽略观察到的第二个alt按键按下事件。
#fake_alt = (LLKHF_INJECTED | 0x20)
# Ignore events generated by SendInput with Unicode. 忽略由SendInput生成的带有Unicode的事件。
#if vk != VK_PACKET and lParam.contents.flags & fake_alt != fake_alt:
if vk != VK_PACKET:
event_type = KEY_UP if wParam & 0x01 else KEY_DOWN
is_extended = lParam.contents.flags & 1
scan_code = lParam.contents.scan_code
should_continue = process_key(event_type, vk, scan_code, is_extended)
if not should_continue:
return -1
except Exception as e:
print('Error in keyboard hook:')
traceback.print_exc()
return CallNextHookEx(None, nCode, wParam, lParam)
上面被注释掉的那几行就是问题所在. 这样修改之后, 暂时没有发现别的问题.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)