Doubao IME Voice Input: 语音输入后自动切回英文输入法
问题 我平时在 macOS 上停在英文 ABC 输入法。豆包输入法 开了「跨输入法启用语音」后,在任何输入法下都能用快捷键唤起豆包的语音输入,我设置了两个键: 模式 快捷键 用途 按住说话,松开结束 Fn 短句 按一下开始,再按一下结束 右 Option 长段 唤起时豆包会把系统输入法切到豆包拼音,语音结束后不会切回来。接下来打字就是中文,每次都要再按一下切回 ABC。 我想要的效果是:语音输入结束后自动回到唤起前的输入法。豆包当前版本没有这个选项,所以用 Hammerspoon 补上。 第一版:监听按键(不成功) 最直接的思路是监听快捷键:按下时记下当前输入法,结束时切回去。 Fn 模式:松开即结束,不用记状态 右 Option 模式:数按键次数,按单数次记下输入法,按双数次切回 写好后按 Fn 测试,没有切回。在脚本里加了日志才看出两个问题。 Hammerspoon 没有辅助功能权限 日志里 hs.accessibilityState() 一直是 false。权限要在「系统设置 → 隐私与安全性 → 辅助功能」里开,不是左侧栏顶层那个「辅助功能」(那里是 VoiceOver、缩放这类功能)。 开了之后还是 false,原因是 macOS 的这个权限只在进程启动时生效。我在设置里关了再开、删掉再加回来都没用,Hammerspoon 一直是开权限之前启动的那个进程。退出 Hammerspoon 再打开后,权限才变成 true。 豆包把 Fn 吞掉了 权限正常以后,Control、Caps Lock、右 Option 都能在日志里看到,Fn 一次都没有出现。我又用 hs.eventtap.checkKeyboardModifiers() 轮询 Fn 的按下状态,按住 Fn 说话的整个过程中也一直读到未按下。 所以豆包在更底层把 Fn 拦截了,Hammerspoon 拿不到这个键的任何信息,靠按键判断的方案走不通。右 Option 倒是能收到,但切换模式要数按键次数,如果用 Esc 或鼠标结束语音,计数就会错位。 ...