首页 / 资讯中心 / 文章详情

AutoHotkey 输入法切换实战:5 个热键参数,中英文切换一次配好

AutoHotkey 输入法切换实战:5 个热键参数,中英文切换一次配好 ★ FEATURED ARTICLE
AutoHotkey 输入法切换实战5 个热键参数中英文切换一次配好【免费下载链接】AutoHotkeyAutoHotkey - macro-creation and automation-oriented scripting utility for Windows.项目地址: https://gitcode.com/gh_mirrors/au/AutoHotkey写技术文档时中文说明和英文代码段落来回穿插每次切输入法都要去任务栏点一下。用 AutoHotkey 写一个热键切换脚本一个按键即可完成中英文切换脚本在后台常驻触发响应由键盘钩子直接处理切换不再打断打字节奏。下面的步骤基于仓库源码中真实存在的机制与参数跟着做就能跑通。先看你属于哪类用法你的习惯特征该看哪一节单键党想要一个按键在中文/英文间来回切五步搭好你的切换脚本分应用党写代码时英文、写文档时中文希望按窗口区分第三步的窗口判断参数党嫌热键不跟手或总弹按得太快警告关键参数速查五步搭好你的切换脚本第 1 步跑通一个单键切换新建.ahk文件先写最简版本#Persistent CapsLock:: Send {LShift} return它的作用按下 CapsLock 就模拟一次 Shift这是 Windows 输入法最常用的中英文切换键。#Persistent让脚本常驻后台。第 2 步确认你的系统切输入法用什么键Win10/11 默认的中英文切换键是 Shift但旧版系统或改过设置的机器可能是 Alt。可以先保留{LShift}试效果如果切的是中/英文模式之外的事换成{LAlt}再试。原则是模拟你平时手动切输入法按的那个键。第 3 步加上窗口判断只在需要的程序里生效#Persistent CapsLock:: if WinActive(ahk_class Shell_TrayWnd) Send {LShift} else if WinActive(ahk_exe Notepad*) return return它在做什么按下 CapsLock 时先看当前活动窗口。任务栏窗口里执行切换Notepad 里则不做任何事避免写代码时误触发。窗口匹配语法来自 窗口模块 的WinActive实现按窗口标题或类名判断。第 4 步调参数让热键更跟手#Persistent A_HotkeyModifierTimeout : 50 A_HotkeyInterval : 2000 A_MaxHotkeysPerInterval : 70 CapsLock:: Send {LShift} return前三个变量赋值只是显式写回源码默认值作用是把生效范围固定在脚本里之后想调只改这一处。三个参数在 全局数据模块 中定义读写入口在 变量模块。第 5 步确认热键注册成功MsgBox ListHotkeys()运行脚本后弹出对话框列出脚本注册的全部热键CapsLock出现在列表里说明钩子已接管该按键。关键参数速查以下参数均取自源码默认值修改后即时生效参数作用源码默认值建议值A_HotkeyModifierTimeout修饰键从按下到触发热键的最大允许间隔毫秒超时会判定为普通按键50快打用户 50慢速触发可升到 100A_HotkeyInterval热键连击统计窗口毫秒窗口内按键数超过上限会弹警告2000保持 2000A_MaxHotkeysPerInterval上述窗口内允许触发的热键次数上限70频繁连切时调到 100SendMode按键发送模式决定Send走底层输入还是模拟事件Input保持 Input钩子环境下更稳定A_HotkeyModifierTimeout的 50 毫秒是官方针对快打用户从 100 调下来的值源码注释写明原因见 globaldata.cpp 第 69 行。效果验收在记事本切到中文输入法按一次 CapsLock 应立刻切到英文再按一次切回来回各 5 次无一次丢失。快速连按 CapsLock 十余次不应弹出按得太快警告框若有把A_MaxHotkeysPerInterval调大。切换到第 3 步排除的窗口按 CapsLock 应无任何反应确认窗口判断生效。运行MsgBox ListHotkeys()确认输出中包含CapsLock说明热键注册链路正常。故障排查速查现象原因处理按 CapsLock 有反应但输入法没变模拟的切换键与系统设定不符把Send {LShift}换成{LAlt}再试某些程序里不生效目标程序以管理员权限运行脚本权限低于它钩子收不到事件脚本同样以管理员身份运行连按弹too fast警告框连击数超过A_MaxHotkeysPerInterval上限调大该参数见 hotkey.cpp 第 897 行触发逻辑热键完全无反应脚本未常驻或被其他软件抢占该键确认有#Persistent用ListHotkeys核对注册情况想再进一步可以把热键切换升级为窗口激活事件自动切换在程序间移动焦点时由系统自动调好输入法。切换的底层链路在 键盘鼠标模块窗口焦点判断在 window.cpp读这两个文件的注释比找任何第三方教程都直接。【免费下载链接】AutoHotkeyAutoHotkey - macro-creation and automation-oriented scripting utility for Windows.项目地址: https://gitcode.com/gh_mirrors/au/AutoHotkey创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站