C7.17.1Voice-to-keyboard preserves caret and buffer设计研究
语音转键盘输入应保留光标位置与已输入内容,不重置编辑状态
别名: 输入法切换 · caret persistence · 编辑状态
概念解释
从语音切到键盘时,已经进缓冲区的文本和光标位置应保持,编辑状态不得被重置成空文档或跑到段首。切换的是通道,不是一份新稿。用户切过来通常是为了改刚才那一句,光标若丢了,语音的成果就被一次模式切换清掉。
机制
听写把字符串写入文本控件并移动插入点。弹出软键盘、切换输入法引擎或关掉语音会话时,若控件被重建、焦点丢失或 IME 把组合状态清零,caret 会跳走,未确认的部分结果可能被提交或丢弃。正确的切换是同一文档对象上的输入源更换:语音会话结束(或暂停),键盘接管同一个缓冲和同一个插入点。部分结果若还是未确认样式,切键盘时应先冻结成终态再允许编辑,否则键盘会打进一条仍在变的前缀。这与免提价值无关:这里是桌面/手机上的编辑连续性。
怎么研究
听写一段后在指定词处切换键盘,测量 caret 是否仍在该词、文本是否完整、未确认前缀如何落盘。比较系统键盘、第三方 IME、从全屏语音 UI 返回编辑器。记录切换耗时和误重置次数。不要在空输入框上测切换,那看不出状态丢失。
边界
用户明确点“新便笺”应当重置。跨应用分享语音结果到另一个输入框,本来就不是同一缓冲。崩溃恢复可以丢 caret 但仍应尽量保住文本。有的搜索框在每次提交后清空,那是搜索语义,不是听写切换。
怎么落地
- 切换时复用同一文本控件和同一选区;语音 UI 不要做成会销毁底层字段的模态。
- 未确认的部分结果在键盘出现前冻结。
- 验收:在句中切换,打一个字,确认它插在原 caret 处而不是文件头。