The recorder captures four activities and each one is a gesture that says what you want from the control you pointed at. A read says what to read, a press says what to press, a choice says what to select and a table capture says which columns to lift. All four travel through the same capture stream, so a recording of one kind replays through the same code as any other.
#Click
Click is a press and it is the commonest gesture in the list. The recorder writes a press event carrying the
control's own identity and the emitted step calls ctx.desktop.press. Reach for it on a control that does something
when it is invoked: a button, a link, a list item, a menu item.
A press is refused on a control that has nothing to invoke. A Document, a Pane, a Window and a Text expose no Invoke pattern, so a press on any of them is refused by name rather than recorded. A press on a control with no Name and no AutomationId is refused too, because a run could never find it again. Focus the named control that was pressed and take the capture again.
#Read text
Read text lifts the value a control carries. The recorder reads through UIA's Value pattern, or its Text pattern, at
the moment of capture and keeps a sample of what it read so you can see what the verb will return. The emitted step
is ctx.desktop.text and its result goes to a named binding.
A read needs an address that is not its own value. The capture uses the application's own AutomationId when the control has one, or a named anchor beside it when it does not. A text capture with neither is refused, because the only identity left would be the control's accessible Name and for this kind of capture that name is the text itself. Reach for Read text on a field, a status line or a display whose value the automation needs.
#Select item
Select item is the gesture that says you were choosing, not reading. The recorder cannot see a choice happen, because
it is a reader rather than a hook. So it reads the control's carried value when you indicate it and records that
value as the option the automation must select. The emitted step calls ctx.desktop.select(locator, option). Reach
for it on a dropdown, a list or a menu.
There are two refusals. A choice on a Document, Pane, Window or Text is refused, because those expose no options to choose from. A choice with no observed value is refused, because an instruction with no option in it would reach a run and fail far from the mistake. A choice carries no Save to, because it acts on the application rather than producing a value.
#Capture table
Capture table reads a shape rather than a single value. It takes the header names as the table published them and in the table's own order, the number of data rows and one sample row. Fields are ticked by header name, never by column index, because an index is a positional identity and inserting one column in the application would silently shift every field. The result goes to a named binding, a DataTable.
A table with no readable headers is refused: with no headers there are no fields to tick. A table with no Name and no AutomationId is refused unless it is anchored, because a grid that names nothing can only be found by what stands beside it. The facade has no table verb yet, so the emitter leaves the extraction as a TODO at its position and names the binding you chose so the destination is already decided.
#What the recorder will not offer
Type text, Check/Uncheck, Activate window and Close window are not in the activity list and their absence is the point. The capture stream carries press, text and table events and nothing else, so a verb with no event to carry it could never reach a run. Offering it would put a step in front of you that no automation can perform.
A toggle or a selection that an application performs on itself is still recorded, as a note or a log line rather than a step. A toggle on a control that never held focus has no step to annotate and the recorder says so in the text instead of inventing a step.