C7.17.3Undo spanning voice and keyboarddesignresearch

Undo in mixed input must cover content from both sources

Aliases: mixed undo · dictation undo · cross-channel undo

What it is

In one text field, some characters come from recognition and some from typing. Undo must cross both sources: undo a speech insert, then a key insert, or undo a whole speech hypothesis at once, without leaving the other source’s edits stuck with no way back. If mixed use only has a keyboard undo stack, a large speech insertion becomes irreversible.

Why it happens

Keyboard undo usually groups by IME commit or by key. Speech may insert a whole sentence and should be one atom on the stack (or a few, split on phrases). If the two channels keep separate stacks, or speech bypasses the control and patches an attributed string, undo misses. The right model is a unified document history: each record carries a source tag; undo/redo does not care who wrote it then. If every partial jitter is pushed, undo becomes “step back one flicker” and must be coalesced first. Source tags also make “undo only speech, keep later keyboard edits” possible; that is advanced. The floor is that both sources can be undone at all.

Studying it

Script: speak a sentence, type a fix, speak an append, undo three times. Record whether each document state matches expectation. Compare a system text field, web contenteditable, and a custom editor. Count undo steps against source switches. Do not only test keyboard-only undo.

Where it stops holding

Remote changes in collaborative editing are a third source, outside this group. Some dictation commits the whole speech span as one step (too coarse); some split per word (too fine). App-level “revert to last save” is not step-wise undo. A post-crash recovery stack may drop source tags.

Applying it

  • Write every final speech insert and every keyboard commit into one undo stack, with speech atomic at sentence or obvious pause.
  • Keep the undo control enabled after a channel switch; do not clear the stack on switch.
  • Accept the four-step script: after interleaving sources, it must still be possible to return to empty or to any intermediate state.

Related

  • Same group: C7.17.1 Switching from voice to keyboard should keep the caret and existing text, not reset the edit · C7.17.2 Showing the keyboard should pause recognition so key-clicks are not taken as speech · C7.17.4 Voice-to-keyboard is usually for fine correction; keep that path short
  • Adjacent: C7.13 Voice Editing and Spoken Correction · C6.16 Undo in Text Input
  • Search: mixed undo · dictation undo · edit history

Cards in the same group

Quick Actions

Share

Share this page

ios_share

https://hci.top/en/handbook/C7.17.3