【开源自荐】Capsense: 用 CapsLock 键切换输入法

与 CapsLox、CapsLock++ 等强大的自定义工具不同,Capsense 只做一件事:用 CapsLock 键来切换输入法。

https://github.com/alex3236/Capsense/

为什么?

Windows 的输入法一直让人头疼。通常我们用这么几种方式切换输入状态:

  • Win+Space: 在所有输入法中循环
  • Ctrl+Space: 切换中英文键盘布局
  • Shift: 将当前输入法修改为中文/英文状态

当你发现键盘现在只能键入英文,大脑往往需要反应一段时间来确认是输入法不对(按Win+Space)还是中英文状态不对(按Shift)。

尽管有不少输入法状态指示的软件,我也试了很多款,但这么多年仍然无法在一秒内完成“识别状态 - 正确完成切换”的操作。

我也试过只保留其中一种切换方式来避免这个问题,因此我尝试只留中文输入法和Shift一个快捷键,但显然,这在游戏等场景中有严重的兼容性问题。

最终我决定做一个工具解决这个多年的问题,同时同步我在 macOS 上的使用习惯。

这个功能用 AHK 实现很容易,这个工具最初也是用 AHK 做的验证,但由于我平时并不使用 AHK,并且希望更轻一点,最终就用 Rust 写了。

怎么用?

使用前,建议在输入法中关闭Shift切换状态的功能。

Capsense 是一个命令行应用。从 Release 下载并双击,Capsense 将静默启动。

在终端中,你可以使用以下参数:

  • -d, --daemon:在后台启动 Capsense。
  • -s, --stop:停止正在运行的 Capsense 实例。
  • -r, --reload:使正在运行的实例从 config.toml 重新加载配置。
  • -S, --status:检查 Capsense 实例是否正在运行并显示其 PID。
  • --startup <enable|disable>:启用或禁用开机自启。

首次运行时,Capsense 在同一目录下创建一个 config.toml 文件。可以配置以下内容:

  • tap_threshold_msCapsLock 按下被视为“轻触”的最大持续时间(以毫秒为单位)。默认为 300 毫秒。
  • tap_action:轻触时执行的操作。支持的操作有:
    • shortcut:触发键盘快捷键(由 tap_shortcut 定义)。
    • switch_layout:(默认)循环切换输入布局。
  • tap_shortcut:要触发的快捷键(默认为 ["LWIN", "SPACE"])。支持的按键有:
    • LWIN(或 WIN
    • SPACE
    • LCONTROL(或 CTRL
    • LSHIFT(或 SHIFT
    • LMENU(或 ALT
    • CAPSLOCK
  • layouts:当 tap_action 设置为 switch_layout 时,要循环切换的输入布局 ID 列表。
    • 默认值:[0x0804, 0x0409]zh-CNen-GB)。
    • 更多布局 ID,请参阅 Microsoft 文档。常见的有:
      • 0x0404:繁体中文
      • 0x0411:日语
      • 0x0412:韩语

每个输入法都能指定单独的快捷键
输入法状态指示器这个门类感觉很成熟了, 绝对醒目不会漏看


我只使用单独的快捷键和Shift, 就没有这些麻烦了
中英文输入都是Google拼音3, 其实输入法切换都很少, 打游戏直接用默认英文输入法
虽然有疑问那大小写切换这功能不用了, 但是我貌似也很少用Caplock切换 :upside_down_face: