针对 macOS 系统设置不再支持全局统一输入源配置的问题,Squirrel 引入了新的解决方案。通过在 squirrel.yaml 配置文件中新增 `global_ascii: bool` 字段,用户可选择是否启用全局记录 ASCII 模式。当 `global_ascii` 设为 `true` 时,Squirrel 将利用 UserDefaults.standard 存储 `_user_global_ascii_mode` 键值,确保在任意应用和输入框中都能保持预期的 ASCII 输入模式。此功能优先于 `app_options.ascii_mode` 配置,旨在提供更一致的输入体验,尽管可能存在部分配置优先级冲突,但社区鼓励讨论更优的实现方式。
💡 全局 ASCII 模式记录:为解决 macOS 新系统设置不支持全局统一输入源的问题,Squirrel 引入了 `global_ascii` 配置项。当此项设为 `true` 时,Squirrel 将在全局范围内记录并保持用户的 ASCII 输入模式,无论用户切换到哪个应用程序或输入框,都能提供预期的输入体验。
💾 基于 UserDefaults 的实现:Squirrel 利用 `UserDefaults.standard` 来存储 `_user_global_ascii_mode` 键值,以实现全局 ASCII 模式的持久化记录。每次新的输入连接建立时,Squirrel 会读取此值并将其作为最高优先级的 ASCII 模式设置,确保用户设置的连续性。
⚠️ 配置优先级考量:启用 `global_ascii: true` 功能后,可能会导致用户在 `app_options.ascii_mode` 中针对特定应用的 ASCII 模式配置失效。开发者认为,在明确启用全局模式时,全局配置应具有更高的优先级,并欢迎社区就此提出更优的解决方案。
🔧 Workaround 方案与社区贡献:目前提出的 `global_ascii` 功能是作为一个临时的 workaround 方案,以满足用户对全局中/英输入模式切换的需求。作者已提交 PR 并提供了个人 fork 版本,并配置了 CI 自动构建和发布,方便有同样需求的用户试用。
问题:在最新的 macOS 系统设置已不支持配置全局使用同一个 InputConnection ("Use one input source in all documents" Deprecated ),故部分用户需要 squirrel 实现前端记录全局的 ascii_mode 以实现在任意应用任意输入框中有可预期的 ascii 模式输入体验。
相关问题:
#145
#999
#201
rime/librime#294
解决方案:在了解整体问题上下文后,决定通过以下方式实现
在 squirrel.yaml 配置文件中增加 global_ascii: bool 字段用于控制是否全局记录 ascii_mode ,其默认值为 false当 global_ascii 为 true 时 squirrel 会使用 UserDefaults.standard 记录以 _user_global_ascii_mode 为 key 记录 ascii_mode 并在每次创建新的(或重新激活旧的) InputConnection 时读取并以此设置的值为 ascii_mode 最高优先级可遇见的问题:使用该功能后可能会导致忽略用户配置的 app_options.ascii_mode 字段失效(编者是能接受在明确启用全局 ascii_mode 模式后应该以全局配置项为准的配置优先级的,如果有更好的实现方式或想法欢迎留言一起讨论实现,我愿意为推进此功能持续工作)
注: 作为一个 workaround 方案提交的 PR #1054 并没有被上游接受(叠甲,不是抱怨。我也认同上游共享实例观点可以继续推进)只是当前实现方式在完美方案实现之前的一个替代实现方案以及能够满足我系统 全局记录 中/英 切换模式的需求了。有同样需求的小伙伴此阶段可以试试我的 fork 版本 https://github.com/PBK-B/squirrel由于自己有需求所以会持续同步并已经配置 CI 自动构建发布版本,下载地址 https://github.com/PBK-B/squirrel/releases
如果有帮助到你可以评论一下呀(鼓励我继续尝试推进上游提出的共享实例。咕咕咕咕~),完结撒花 🎊