「分享」通过AHK实现CapsLock切换输入法(Rime)的中英文状态

由于目前在通过 Shift 切换输入法遇到了点问题,索性通过 AutoHotkey 把闲置的 CapsLock 键利用起来。

主要需求:

  1. 单击 CapsLock 时,如果在 Emacs中,则映射到 F9, 执行 sis-switch 通过 w32-get-ime-open-status 切输入法的中英文状态。如果不在 Emacs中,则映射为右Shift键(LShift),直接由小狼毫(Weasel)切换中英文状态。

  2. 双击或者长按 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 按键

4 个赞

虽然不在 Windows 下用 Emacs,但还是点赞支持。

AHK 在 Windows 下简直就是神器中的神器。

感谢分享,ahk 辅助输入法确实方便,以前用 ahk 搓过一个 esc 强行更改微软输入法为英文的脚本,用 vim 系软件的时候巨爽

直到微软某次更新后脚本失效,我在不断拖延重构脚本的后续几个月慢慢习惯了自己切输入法

不建议使用 AHK ,我的 AHK 脚本已经废弃掉了,太浪费时间,可以直接用微软的 PowerToys 做映射,又好又快,还有很多其他好用小组件。

1 个赞

powertoys 目前只适合简单映射,op 这种带双击和长按的需求是处理不了的 :joy:

PowerToys 我也试过,不过它连把 Shift 映射为 Ctrl + 12 都做不到。

我也是用ahk实现的capslock切换中英输入法。

我的实现方式是在搜狗中文输入法和微软英文输入法之间切换, windows里可以设置C-f11来切换输入法, 然后我再把capslock映射到C-f11上