Docs

How do I dictate brackets, quotes and operators?

Say a symbol's name to type it, as in "open paren" for (, "semicolon" for ; and "equals equals equals" for ===; this lists every name Code Mode recognises.

Updated 2026-09-23

Say the name of the symbol and you get the symbol. Most have more than one accepted name, because people say these differently and arguing about "hash" versus "pound" is not worth getting something wrong over. Everything below works only while Code Mode is on.

Say one line, then stop

Press your key, say a single line, release, repeat. A long run of symbol names in one breath drifts badly, because the speech engine reads a whole recording as one piece of language and an unusual stretch of it pulls the rest off course. This is the single biggest thing you can do for accuracy here.

#Brackets

The opening bracket attaches to whatever came before it, so range followed by an open paren gives range(, which is what a function call needs.

Say thisYou get
open paren, open parenthesis, left paren(
close paren, close parenthesis, right paren)
open bracket, open square bracket[
close bracket, close square bracket]
open brace, open curly, open curly brace{
close brace, close curly, close curly brace}
open angle<
close angle>
If your brackets come out as the words

"Paren" is heard as "parent" often enough that both spellings are accepted, so "open parent" also gives you a bracket. If you still see the words in your text, see why Code Mode typed the wrong symbol.

#Quotes

Say thisYou get
quote, double quote"
single quote'
apostrophe'
backtick, back tick`

Quotes come in pairs, and Dictate Safe tracks which one you are on. The first gets a space in front of it where one is needed, so message equals quote hello quote gives message = "hello" rather than running the quote into the equals sign. The closing one hugs the text it closes.

#Punctuation

Say thisYou get
semicolon, semi colon;
colon:
comma,
dot, period.
question mark?
exclamation mark, bang!
underscore_

A dot joins what is on either side of it, so user dot name gives user.name with no spaces. Punctuation the speech engine invented on its own, like a comma it added at a pause, is dropped. Only punctuation you said survives.

#Operators

Say thisYou get
equals, equal sign=
equals equals, double equals==
equals equals equals, triple equals, strict equals===
not equals, bang equals!=
not equals equals, strict not equals!==
plus+
minus-
hyphen (no spaces around it, for a name like my-app)-
star, asterisk*
slash, forward slash/
backslash, back slash\
percent, modulo%
caret^
plus plus++
minus minus--
plus equals+=
minus equals-=
double star**
The one to say carefully

"Equals equals equals" and "equals equals" are one syllable apart and mean different things in most languages. Longer names win, so saying all three gives you ===, but if you are being quick about it, "triple equals" and "double equals" are harder to get wrong.

#Comparison and logic

Say thisYou get
less than<
greater than>
less than or equal<=
greater than or equal>=
ampersand&
pipe, vertical bar|
double ampersand, logical and&&
double pipe, logical or||
double question??
"and" is never an ampersand

Saying "and" gives you the word and, and "or" gives you or. They are two of the commonest words in English, and mapping them to symbols would ruin every comment and every string you ever dictate. Say "ampersand" and "pipe", or "logical and" and "logical or" for the doubled versions.

#Arrows and scope

Say thisYou get
arrow, fat arrow=>
thin arrow->
left arrow<-
double colon::
optional chain?.
dot dot dot, spread, ellipsis...

A plain "arrow" gives the JavaScript one, =>, because dictating an arrow function is far commoner than dictating a return type. Say "thin arrow" for ->.

#Named symbols

Say thisYou get
hash, pound, hash tag#
at, at sign@
dollar, dollar sign$
tilde~
question?
double slash, line comment//

#Line breaks and spacing

Say thisYou get
new line, newlinea line break
new paragraph, blank linetwo line breaks
taba tab character
spacea space

A line break does not indent the new line. Your editor owns indentation, and guessing at it would fight whatever the editor does automatically.

#Seeing the list inside the app

Open Settings → Code Mode and expand What to say. That list is generated from the same table the feature runs on, so it cannot fall out of date with the software the way a written page can.

#Numbers

Say a number and you get a digit where a digit belongs. "Array open bracket zero close bracket" gives array[0], and "count equals zero semicolon" gives count = 0;.

A number sitting between ordinary words stays a word, so a comment reading "this takes one second" keeps its one. The same goes for anything inside quotes or after a comment marker, where numbers are being written about rather than used.

Limits

There is no way to dictate a symbol as a literal word while Code Mode is on. If you need to write the word "semicolon" in a comment, turn Code Mode off for that line.

Spacing follows the usual conventions, and your formatter settles the rest on save.