Browse the docs

Click by letters

Puts a short letter label on every clickable thing in the front window; type the letters to click it, or type a word to search.

Click an element by letters

Details #

Press the hotkey and small labels (A, S, DF) appear over every button, link, tab, field and menu in the front window. Type a label and that element is pressed, and the labels are gone in the same moment. It is a mouse, without the mouse.

The bundled example Click by letters in the Examples group runs this step from ⌘⇧Space. Change its hotkey like any macro's, or put the step in a macro of your own.

⇧⌘Space
cmd+shift+space

What gets a label. Buttons, links, checkboxes, radio buttons, pop-up buttons, tabs, menu bar items, text fields, rows, sliders and anything else that offers a press, as long as it is enabled, at least 4 × 4 points and visible inside its window (an item scrolled out of a list gets none). The buttons inside a labelled link or button are skipped. Labels are given in reading order, top to bottom and left to right, so the same window gets the same labels each time.

The labels. Up to nine elements get one home-row letter each (A S D F G H J K L). With more, every label is two letters (three past 676), never a mix, so a label is never the start of another. Typed letters dim in the labels that still match; the others fade away.

Typing #

  • A label presses its element as soon as the last letter is typed.

  • A word that begins no label turns into a search: a field appears at the top, and only elements whose title, description, value or placeholder contains the text (ignoring case and accents) keep a label, renumbered from A. ⏎ presses the highlighted match, ↑ ↓ or ⇥ move the highlight, ⌫ to empty goes back to labels.

  • / starts a search too, for a word that begins with a label letter (/save).

  • Modifiers on the last letter change the action: ⇧ right-click, ⌥ double-click, ⌘ hover (move the pointer there without clicking), ⌃ focus only.

  • Space (before any letter) switches to scroll mode: the labels move to the scroll areas. Pick one, then J and K scroll a line, D and U half a page, G goes to the top and ⇧G to the bottom. Space again goes back to labels.

  • ⎋ closes the overlay and ends the macro quietly (the hotkey's ⌘Space does the same).

How it presses #

It tries, in order: the element's own press action, confirm or pick, focusing a text field, and last a real click at the middle of the element's frame (the run's note says fallback: position). The frame is read again just before, so a page that scrolled since the labels appeared still gets the right element. The overlay is gone before the press, and the app is brought to the front first if the labels reached another app.

Apps that don't describe themselves #

Electron and Chromium apps (Slack, Discord, Chrome) are asked to describe their interface once, and the labels follow. If an app still shows fewer than three things to press, the window is read as text and each line gets a label; a position click presses it. The corner of the screen then says Reading the screen: this app doesn't describe its buttons. That needs the Screen Recording permission; without it, or in a game or a canvas with no text, the overlay says so and shows no labels.

The overlay appears within about 150 ms. The walk takes at most 120 ms and 2,000 elements; past either limit the corner says Showing the first N elements.

Parameters #

ParameterTypeRequiredValuesWhat it does
actionone ofclick rightClick doubleClick focus hover chooseclick (the default), rightClick, doubleClick, focus, hover, or choose, which presses nothing and returns the picked element as a locator (in into and the output) so another step can use it.
intotextWith choose, the variable that receives the locator.
labelsone ofhome alphahome (the default: home row first) or alpha (A B C…).
scopeone ofwindow app menuBar screenwindow (the default), app (every window of the front app and its menu bar), menuBar, or screen (every visible window on the display the pointer is on).

Every step also accepts label, onFailure, timeout and dryRunSafe.

Examples #

Click by letters in the whole app, including its menu bar
Do
  1. Click an element by letters in the app
Open in Switchboard to try it

Gotchas #

  • It needs the Accessibility permission, and Input Monitoring for the engine (the same grants as hotkeys). Without Input Monitoring the keys go to a tiny helper window instead, which still works but the app underneath looks inactive while the labels are up.

  • A dry run (Try it) shows the labels and presses nothing.

  • Pressing the hotkey of a macro whose step is already showing labels closes them; the macro does not start a second time.

  • If ⌘⇧Space is also the Palette's hotkey (General settings), the conflict panel asks which to run: give one of them another key.

  • The step has no time limit of its own while the labels are up; the overlay closes by itself after two idle minutes.

  • In a macro test (sealed run) the step is simulated.

See also #

Click, Highlight area, Set field value