692 字
3 分钟
Windows 设置 Capslock 切换中英文输入
Windows 的默认中英文切换方式体验较差,Shift 键既用于切换大小写,又用于切换输入法,容易误触。而 macOS 的 CapsLock 方案——短按切换中英文,长按启用大写锁定——更加直观且减少误操作。
本文介绍如何使用 AutoHotkey 实现类似 macOS 的 CapsLock 中英文切换方式,让输入更高效。
安装 AutoHotkey
首先,下载并安装 AutoHotkey:
- 官网:AutoHotkey
安装完成后,继续进行 Windows 和 AutoHotkey 设置。
Windows 设置
在 Windows 中,需要调整一些输入法设置,以确保 AutoHotkey 脚本正常工作。
-
关闭微软拼音输入法的 Shift 切换中英文功能
设置
→时间和语言
→语言和区域
→输入
→微软拼音
→键盘
- 取消勾选“Shift 切换中英文”
-
添加一个英文输入法
设置
→时间和语言
→语言和区域
→添加语言
- 选择
English (United States)
或其他需要的英文键盘
AutoHotkey 设置
创建 AutoHotkey 脚本
- 安装 AutoHotkey 后,右键桌面 →
新建
→AutoHotkey Script
- 右键新建的脚本文件,选择
编辑
- 替换内容为以下脚本:
使用 CapsLock 切换中英文输入法
#Requires AutoHotkey v2.0#SingleInstance Force
; 让脚本在后台持续运行Persistent
CapsLock::{ if (KeyWait("CapsLock", "T0.5")) { ; 短按 CapsLock 切换中英文 Send "{Alt Down}{Shift Down}{Alt Up}{Shift Up}" } else { ; 长按 CapsLock 进行大小写锁定 SetCapsLockState !GetKeyState("CapsLock", "T") }}
锁定中文输入法的中文输入模式
为了确保中文输入法默认处于中文输入模式,可以使用以下脚本:
#Include %A_ScriptDir%
timeInterval := 500
InChs() { ime_status := DllCall("GetKeyboardLayout", "int", 0, "UInt") return (ime_status & 0xffff) = 0x804 ; LANGID(Chinese) = 0x804}
SwitchImeState(id) { SendMessage(0x283, ; WM_IME_CONTROL 0x002, ; wParam IMC_SETCONVERSIONMODE 1025, ; lParam (Chinese) , ; Control (Window) id)}
DetectHiddenWindows True
SetTimer Mainloop, 1000
MainLoop() { try { hWnd := WinGetID("A") id := DllCall("imm32\ImmGetDefaultIMEWnd", "Uint", hWnd, "Uint")
if (InChs()) { SwitchImeState(id) } }}
设置脚本开机自启动
为了让脚本每次开机后自动运行,可以将其转换为 .exe
文件,并放入 Windows 启动目录。
转换 AutoHotkey 脚本为可执行文件
-
在 AutoHotkey Dash 中找到
Compile Open Ahk2Exe - convert .ahk to .exe
-
选择你的
.ahk
脚本,将其编译为.exe
-
生成的
.exe
文件移动至:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
这样,每次 Windows 启动时,脚本都会自动运行,无需手动执行。
总结
通过 AutoHotkey,我们可以实现 CapsLock 短按切换中英文,长按启用大写锁定,从而改善 Windows 输入体验。搭配锁定中文输入模式的脚本,可以确保中文输入法默认保持中文输入。
参考资料
Windows 设置 Capslock 切换中英文输入
https://blog.alayedong.cn/posts/2025/windows-capslock-ime/