CapsLock 功能优化脚本部署指南
部署步骤
第一步:安装 AutoHotkey v2
- 访问 AutoHotkey v2 官网
- 下载并安装最新版本
- 安装时勾选
"Add 'Compile Script' to context menus"
第二步:部署脚本
直接运行 (调试推荐)
- 新建文本文件,粘贴附录代码
- 重命名为
CapsLock_Optimizer.ahk
- 双击运行 → 托盘区出现绿色
H
图标即生效
编译为 EXE (无依赖方案)
- 右键脚本文件 → 选择
"Compile Script"
- 生成
CapsLock_Optimizer.exe
- 可安全删除原
.ahk
文件
第三步:开机自启动
- 按
Win + R
输入shell:startup
- 将
.exe
文件拖入启动文件夹,或者创建一个快捷方式, 把快捷方式放进去也行
- 重启系统验证效果
操作效果验证
操作场景 | 物理操作 | 系统响应 | 键盘灯状态 |
---|---|---|---|
普通状态短按 | 快速点击 (<0.3s) | 中英文输入法切换 | 保持熄灭 |
普通状态长按 | 按住 ≥0.3s | 立即开启大写锁定 | 亮起 |
大写状态短按 | 快速点击 | 立即关闭大写锁定 | 熄灭 |
大写状态长按 | 按住 ≥0.3s | 立即关闭大写锁定 | 熄灭 |
注意事项
输入法配置
‼️ 必须设置输入法切换快捷键为 Ctrl + Space
:设置 > 时间和语言 > 语言 > 输入法选项 > 高级键盘设置
杀毒软件拦截
⚠️ 部分安全软件会拦截编译后的 EXE 文件,需手动添加信任:
- Windows Defender:
病毒和威胁防护 > 管理设置 > 排除项
- 第三方杀毒软件:参照具体软件说明
状态同步异常处理
- 热键重置:按下
Ctrl + Alt + R
强制同步状态 - 物理重置:短按物理
CapsLock
键 - 脚本重启:托盘图标右键选择
"Reload This Script"
常见问题
Q1:大写锁定开启时能否自动切换回英文?
A: 本设计特意保持状态隔离。如需关联行为,修改脚本第35行:
if isCapsActive {
SetCapsLockState False
isCapsActive := false
Send "^ " ; 新增此行实现关闭大写时切换输入法
}
Q2:长按中途能否取消操作?
A: 不能。一旦超过阈值即触发状态切换,持续按住不会逆转操作。
Q3:如何调整长按判定时间?
A: 修改脚本第9行:
threshold := 300 ; 改为所需毫秒数(如500=0.5秒)
Q4:游戏全屏模式下失效?
A: 右键 EXE 文件选择:
属性 > 兼容性 > 以管理员身份运行此程序
属性 > 兼容性 > 禁用全屏优化
附录:完整脚本代码
#Requires AutoHotkey v2.0
; 禁用原生CapsLock功能
*CapsLock::return
; 初始化状态跟踪
isCapsActive := false ; 大写锁定状态
inputMethodState := 0 ; 输入法状态跟踪器
$CapsLock::
{
global isCapsActive, inputMethodState
startTime := A_TickCount
threshold := 300 ; 长按判定阈值
hasLongPressed := false
; 实时检测长按状态
Loop {
Sleep 10
; 达到阈值立即触发大写锁定
if (A_TickCount - startTime >= threshold) && !hasLongPressed {
if !isCapsActive {
SetCapsLockState True
isCapsActive := true
} else {
SetCapsLockState False
isCapsActive := false
}
hasLongPressed := true
}
; 检测是否提前松手
if !GetKeyState("CapsLock", "P") {
break
}
}
; 短按处理
if (!hasLongPressed) {
if isCapsActive {
; 大写状态下短按:关闭大写
SetCapsLockState False
isCapsActive := false
} else {
; 普通状态下短按:切换输入法
Send "{LCtrl down}{Space}{LCtrl up}"
; 同步输入法状态
inputMethodState := !inputMethodState
}
}
; 确保大写状态同步
if (hasLongPressed) {
KeyWait "CapsLock" ; 等待物理按键释放
}
}
; 状态重置热键 (Ctrl+Alt+R)
^!r:: {
global isCapsActive := GetKeyState("CapsLock", "T")
TrayTip "状态已重置", "当前大写状态:" (isCapsActive ? "ON" : "OFF"), 1
}
本方案已在 Windows 10/11 21H2 测试通过,推荐使用微软拼音/手心输入法。