macOS 长按与按键重复¶
除非应用程序在其偏好设置域中明确选择退出,否则 macOS 在按住某个键时会打开重音符号选择器。这会导致在 vim 等终端应用程序中,按住键无法重复。在首次符合条件的启动时,Orca 会写入:
该写入仅作用于 Orca 的打包 bundle 域。未打包的 Electron 开发 bundle 和非 macOS 平台保持不变。新的写入会被保守地视为在下次启动时生效。
优先级与决策记录¶
Orca 在写入前会检查域中是否存在显式值。true 或 false 均被视为用户选择并予以保留。只有未设置的键才会获得 false 默认值。
该决策仅存储一次,位于
<userData>/macos-press-and-hold-default.json。applied 或
kept-user-preference 决策会阻止后续启动再次修改该域。
探测和写入失败仍可重试,因此临时失败不会永久禁用该修复。
使用 defaults read <domain> <key> 而不是
systemPreferences.getUserDefault:Electron API 无法区分未设置的键和显式的 false。只有表示键缺失的退出状态会被解释为未设置;进程启动失败、
超时和其他退出状态都会保持偏好设置不变。
恢复重音符号选择器¶
显式设置该偏好设置,然后重启 Orca:
在 Orca 记录其一次性决策后,删除该键也可以恢复 macOS 默认行为, 且 Orca 不会重新创建它:
开发和预发布渠道可能使用带渠道后缀的 Orca bundle 标识符;如适用,请改用该域。
回滚¶
仅删除启动代码是不够的。AppKit 会读取已持久化的偏好设置,因此代码回滚还必须安排为运行过受影响构建的用户删除该键。
测试覆盖¶
单元测试覆盖平台保护、显式值保留、重试行为、域所有权、
记录持久化,以及 CI 上子进程退出状态的解释。一个仅限 macOS 的测试还会固定真实的 defaults(1) 行为,但当前 PR CI 不会在 macOS 上执行测试。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 orca48/orca