AutoHotkey实现输入法(如微软拼音)tab自动输入
鹿末Lumerane
2024年05月31日 19:21

由于笔者大脑是静态的,在vscode里敲多代码以后,再使用输入法(尤其是英文输入法)就常常试图按tab自动补全,造成不必要的删改。

于是去问GPT,它向我推荐了用AutoHotkey映射的方法。由于tab键在一般工作中用的不多,直接把tab映射到空格还是可行的,并且这个方法能根据输入法的切换来开启和关闭映射。


具体步骤

1 下载并安装AutoHotKey

2 新建脚本并复制以下代码:

; 保持脚本运行

Persistent ; 设置计时器,每1000毫秒检查一次当前输入法 SetTimer(CheckIME, 1000) CheckIME() {     Keysyn := GetKeyboardLayout()     ; 获取当前输入法     if (Keysyn == 134481924) {         ; 将 Tab 键映射为空格键         Hotkey("Tab", SendSpace, "On")     }     else {         ; 取消映射         Hotkey("Tab", SendSpace, "Off")     } }   ; 发送空格键的函数 SendSpace(*) {     Send("{Space}") } ; 获取当前输入法布局 GetKeyboardLayout() {     hwnd := WinExist("A")     if !hwnd         return 0     ThreadID := DllCall("GetWindowThreadProcessId", "ptr", hwnd, "uint*", 0, "uint")     Keysyn := DllCall("GetKeyboardLayout", "uint", ThreadID)     return Keysyn }

这里面的keysyn是当前键盘布局的标识符,它只有在切换键盘布局的时候会变,开关机和在同一个键盘布局的不同输入法间切换都是不变的。

图中在微软拼音和百度输入法间切换是不变的。

我没有在多个设备间测试,如果你的标识符不一样,可以在vscode里安装AutoHotkeyDebug然后在图示位置打断点调试,左侧就是标识符的值。

3 运行无误后打开安装的AutoHotkey Dash,点击compile把刚刚的脚本编译成exe,最后放进C:\ProgramData\Microsoft\Windows\Start Menu([开始]菜单)\Programs(程序)\StartUp(启动)路径中就可以实现开机自启。