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 FalseisCapsActive := falseSend "^ " ; 新增此行實現關閉大寫時切換輸入法
}
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, inputMethodStatestartTime := A_TickCountthreshold := 300 ; 長按判定閾值hasLongPressed := false; 實時檢測長按狀態Loop {Sleep 10; 達到閾值立即觸發大寫鎖定if (A_TickCount - startTime >= threshold) && !hasLongPressed {if !isCapsActive {SetCapsLockState TrueisCapsActive := true} else {SetCapsLockState FalseisCapsActive := false}hasLongPressed := true}; 檢測是否提前松手if !GetKeyState("CapsLock", "P") {break}}; 短按處理if (!hasLongPressed) {if isCapsActive {; 大寫狀態下短按:關閉大寫SetCapsLockState FalseisCapsActive := 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 測試通過,推薦使用微軟拼音/手心輸入法。