AutoHotKey因键盘语言不匹配触发提示,如何禁用该消息?
解决方案
方法一:用#HotIf限定热键仅在阿拉伯语布局生效
AutoHotKey v2的#HotIf指令可以根据当前键盘布局控制热键是否启用,英文布局下该热键不会被注册,也就不会弹出错误提示。
- 获取阿拉伯语布局ID:
运行这段代码,切换到阿拉伯语布局后会弹出布局ID:MsgBox DllCall("user32.dll\GetKeyboardLayoutName", "Str", Buffer:=Buffer(8)) - 限定热键生效范围:
#HotIf GetKeyboardLayoutName() = "04010401" ; 替换为你获取到的阿拉伯语布局ID !ك::Send "{Right}" #HotIf ; 恢复全局热键规则
方法二:用扫描码(SC)定义热键
扫描码是键盘硬件层面的键位编码,不受输入法布局影响。用它定义热键,就能避免布局不匹配的错误提示:
- 获取“ك”对应的扫描码:
运行这段代码,按下阿拉伯语键盘的“ك”键,会显示对应的扫描码:~*vk00:: SC := Format("SC{:X}", GetKeySC(A_ThisHotkey)) MsgBox SC return - 用扫描码设置热键:
!SCxx::Send "{Right}" ; 将xx替换为你获取到的扫描码(比如SC123)
内容的提问来源于stack exchange,提问作者Aladdin Mhemed
相关产品推荐
相关产品推荐

