BlogProductWhy dictation is a toggle, not push-to-talk
ProductJuly 24, 20265 min read

Why dictation is a toggle, not push-to-talk

Holding a key while you speak seems obviously right, and it is the first thing people ask for. Here is why InkSpoke does not do it.

Press Alt+Space, speak, press it again. That is the whole interaction, and the most common piece of feedback about it is that it should be hold-to-talk instead — hold the key down, release when you are done, like a walkie-talkie.

It is a reasonable request. We do not plan to do it, and the reasons are more interesting than "we did not get to it".

Dictation is longer than you think

Push-to-talk is designed for utterances measured in seconds. Dictation is not that. A paragraph of email takes thirty seconds, and a recording can run to five minutes before InkSpoke caps it. Holding a modifier chord for thirty seconds while composing a sentence is genuinely unpleasant, and it is worst for the people who use dictation most — anyone dictating because typing hurts is poorly served by a key they must hold down.

Held modifiers leak into everything

This is the practical killer. The hotkeys are modifier combinations, and a held modifier is not inert — it changes what every other key does, it changes what a click does, and it interacts badly with the accessibility APIs used to read your selection and type text back.

You can see the shape of the problem in a place where it genuinely bites. When command mode falls back to copying your selection, it has to wait for physically-held modifiers to be released before sending a copy — because the hotkey that started it left Alt and Shift down, and a copy sent while they are held is not a copy. That wait is bounded, and it exists solely to clean up after a modifier that has not been let go.

A hold-to-talk design makes that condition permanent instead of transient. Every interaction during the recording happens under a held modifier.

What the toggle buys

Once the key is not held, the recording becomes a thing with a lifetime rather than a gesture, and useful behaviour becomes possible:

  • The overlay is interactive. You can change the spoken language mid-recording with the arrow keys, or override the workspace it will use.
  • Esc means cancel, cleanly, at any point — including aborting text that is already being typed.
  • Voice can finish the job. "Thank you Annika" ends the recording without touching the keyboard at all, which is the entire point of hands-free mode.
  • The hotkey can be awkward, because you only ever tap it. It never has to be comfortable to hold.

The one real cost is forgetting to stop. That is handled with a silence timeout — thirty seconds of quiet ends the recording on its own — and a hard cap so a forgotten session cannot run forever.

The trade

Hold-to-talk is better for a two-second utterance. Toggle is better for everything longer, better for accessibility, and dramatically better for the parts of the app that have to read and write other applications while the recording is live. We optimised for the second.


Keep reading

More from the notebook.