作者是一个典型的"键盘党",写代码、写文档、处理表格时双手几乎不离开键盘,但 Windows 系统里总有些操作逼着我伸手去摸鼠标:想点一下对话框里的某个按钮,想切换到窗口深处的一个输入框,想勾选列表里的某一项。手一离开键盘再去定位光标,思路就被打断一次,一天下来几十次,非常烦躁。我试过 Windows 自带的 Tab 键遍历,控件一多就完全失去方向。网上搜"键盘操作鼠标控件",找到的多是 AHK 脚本或者半成品小工具,要么只能操作固定软件,要么需要为每个程序写规则,没有一个通用方案,于是我决定自己开发。
最初的原型是一个 AutoHotkey 脚本:给控件贴标签、按字母跳转。思路可行,但 AHK 分发麻烦、易被杀软误杀,不适合作为正式商业产品。真正的突破口是 Windows UI Automation(UIA):它能枚举前台窗口里所有可聚焦的控件。为摆脱第三方封装库的体积与兼容性问题,我用 Python 写探针脚本,逐个摸清 IUIAutomation 接口在 COM vtable 中的正确索引,最后在 Pascal 里重写整套 UIA 接口定义,做到了零外部依赖、单文件原生实现。
该工具定位非常垂直:只做"键盘聚焦与点击控件"这一件事,做成常驻托盘的轻量小工具。按下 Ctrl+Win+Space 进入聚焦模式(Ctrl+Win+A 为点击模式),程序在屏幕所有控件上叠加边框和字母标签,超过 26 个自动升级为双字母,最多支持 676 个;键入字母即聚焦或点击该控件,Esc 或 5 秒超时自动退出。
按一下快捷键,控件全部标上字母,然后最多键入两个字母就可以聚焦或点击目标控件,双手始终不离键盘。它成了我电脑上不可缺少的效率工具,特别是在外出办公的时候,不用再接鼠标或使用难用的触摸板,工作效率提高不少。