C6.25.3Per-app IME state persistence设计研究

应用间焦点切换时输入法状态是否保留因平台实现而不同

别名: 按应用记住输入法 · 焦点切换输入源 · 输入法跟随

概念解释

从聊天切到浏览器、再切回编辑器,有的系统给每个应用记住最后一次输入源,有的系统使用全局一份状态。是否保留没有跨平台约定。用户在聊天里切到拼音,去终端敲命令,可能仍是拼音,满屏组字;也可能终端自己回到英文,回来聊天却发现又变成英文。同一套操作在 macOS、Windows、iOS、Android 上的结果不同,文档不能写死“切走再回来一定还是刚才那种”。

机制

实现有两条常见策略。全局状态:输入源是会话级单例,跟随用户而不是窗口,优点是手不用为每个应用再切一次,缺点是把上一个应用的语言带到下一个。按应用(或按文本字段)记忆:每个客户端存一份,焦点回来时恢复,优点是终端保持英文、聊天保持拼音,缺点是用户要维护多份心智模型,且新建窗口可能没有历史。移动端还夹着“键盘随焦点弹出时才应用字段的 textContentType”,字段属性与系统记忆会打架。远程桌面再叠加一层:本地源与远端源哪边说了算,随客户端变化。

怎么研究

在目标平台上列出:应用 A 切到语言 1,切到应用 B 不碰输入源,再切回 A,语言是什么。覆盖系统应用、浏览器、Electron、游戏全屏。把“按应用记忆”和“按字段记忆”分开:同一浏览器里地址栏与页面输入框可能不同。不要从一块平台的观察推论到另一块。日志可取输入源变更事件,但要标注是否由用户手势触发。

边界

只开一个应用的人感觉不到策略差异。企业强制输入源策略会覆盖用户记忆。网页若在 focus 事件里自己调输入法 API(能调的平台很少),可能与系统记忆冲突。输入法崩溃重启后记忆常丢失,表现又变回全局默认。

怎么落地

  • 产品文档按平台写清“离开再回来会怎样”,不要写跨平台的假保证。
  • 终端、代码、密码类应用在获得焦点时,若检测到仍是组字源,给出一次性提示或提供应用内的“本次用英文”按钮。
  • 测试矩阵包含:从本应用切到系统记事本再切回,输入源是否符合该平台策略。
  • 验证:在每个支持的操作系统上做三次应用往返,记录语言是否保持;把结果写进发布说明,而不是只在开发机的那一块系统上点过。

延伸

  • 同组C6.25.1 输入法切换本身占用一次操作,涉及组合键、图标点击或手势 · C6.25.2 切换后当前输入法处于哪种状态需要持续可见 · C6.25.4 输入法状态与系统级大小写锁定状态是两套独立但常被混淆的状态
  • 相邻C6.07 键盘类型与场景匹配 · C6.12 输入法候选
  • 站内检索per-app input source · IME persistence · focus change language

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/C6.25.3