由于目前在通过 Shift 切换输入法遇到了点问题,索性通过 AutoHotkey 把闲置的 CapsLock 键利用起来。
主要需求:
-
单击 CapsLock 时,如果在 Emacs中,则映射到 F9, 执行
sis-switch
通过w32-get-ime-open-status
切输入法的中英文状态。如果不在 Emacs中,则映射为右Shift键(LShift),直接由小狼毫(Weasel)切换中英文状态。 -
双击或者长按 CapsLock时,切换大小写状态。(macOS 默认的也是长按 CapsLock,保持换设备时一致的体验)
其实双击可以邦定到其他更加有用的功能,目前还没想好。
AHK (v2)代码如下, 希望对 Emacs 用户有点用:
;; Toggle Chinese and English input method in Emacs
$CapsLock::
{
global
SetStoreCapsLockMode(false)
ErrorLevel := !KeyWait("CapsLock", "T0.25")
if ErrorLevel ;; Long press
Send("{CapsLock}")
else
{
ErrorLevel := !KeyWait("CapsLock", "D T0.5")
if ErrorLevel ;; Single click
{
If WinActive("ahk_exe emacs.exe")
Send("{f9}")
else
Send("{RShift}")
}
else ;; Double click
Send("{CapsLock}")
}
ErrorLevel := !KeyWait("CapsLock")
return
}
这是个人的 AHK 配置,实现了在 Windows 系统都用 Emacs 按键