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 輸入體驗。搭配鎖定中文輸入模式的腳本,可以確保中文輸入法默認保持中文輸入。