应用兼容性
聊天应用、终端和代码编辑器使用的捕获与替换路径。
不同 macOS 应用通过 IMKTextInput 暴露的文本能力不同,因此 UnimeType 保留了少量
明确的兼容性例外。
| 应用 | 捕获规则 | 替换规则 |
|---|---|---|
微信(com.tencent.xinWeChat) | 可读时使用段落,否则使用输入缓冲 | 精确选区或已验证的光标退格替换 |
VS Code(com.microsoft.VSCode) | 优先使用输入缓冲 | 精确选区或已验证的光标退格替换 |
VS Code Insiders(com.microsoft.VSCodeInsiders) | 优先使用输入缓冲 | 精确选区或已验证的光标退格替换 |
Terminal(com.apple.Terminal) | 优先使用输入缓冲 | 可用时走普通范围,否则走光标退格替换 |
Ghostty(com.mitchellh.ghostty) | 优先使用输入缓冲 | 可用时走普通范围,否则走光标退格替换 |
| Xcode | 普通段落或句子捕获 | 普通已提交文本范围替换 |
| 其他编辑器 | 普通段落或句子捕获 | 普通已提交文本范围替换 |
为什么需要光标退格替换
某些宿主能报告光标,却不执行文档相对替换范围。如果光标仍精确位于捕获文本末尾, UnimeType 会发送一组有边界的 Backspace 事件,再插入已提交的替换文本。该过程不会 创建标记组合文本。
待执行替换绑定到同一客户端和同一输入缓冲版本,并有两秒超时。如果光标、客户端 或源文本不再匹配,替换会被取消。
验证边界
宿主能够暴露结果范围时,UnimeType 会回读并与请求替换文本比较。不一致会显示 替换失败。如果宿主接受插入却不暴露结果文本,UnimeType 只能记录替换已发送, 不能声称完成了回读验证。
宿主无法提供可用范围时的恢复方法见状态与故障排查。