Skip to content

Grid mode ​

Target on the other side of the screen? Grid covers the display with lettered and numbered cells. Type the labels covering your target to narrow the area without moving the pointer all the way across.

Grid mode demonstrationLarge first-level labels, inner second-level previews, and rapid targeting with consecutive key presses.

Enter it from Normal with g. The default layout is 5 columns × 4 rows:

Grid default keys键盘左侧 · 从左到右、从上到下
12345
qwert
asdfg
zxcvb
  • Target keys

The initial screen shows a prominent first key at the centre of every top-level cell and a muted, smaller second-key grid within it. The default maximum selection depth is max_depth = 3.

Jump first, fine-tune second

Hold Primary to adjust with Normal movement, scrolling, and clicks. Release it to keep selecting cells.

Controls ​

KeyAction
Label keySelect a cell and enter the next level
UShow UI Hint within the current grid region; Tab, Backspace, or Esc returns to it
IStart Text Select within the current grid region; Esc returns to the grid
` (the key above Tab)Toggle whether selection follows the pointer
Primary+Q / EscReturn to Normal

Grid labels take priority over identically named inherited Normal bindings. For example, q selects a Grid cell rather than leaving the mode.

U and I use the existing UI Hint and Text Select scans for the selected region. In Text Select, use Alt+C to refine the selection and copy part of the text. Rebind area_hint and area_text in [grid.bindings]. Existing labels and custom inherited actions keep their keys.

Configuration ​

toml
[grid]
grid_cols = 5
grid_rows = 4
keys = "12345qwertasdfgzxcvb"
max_depth = 3
cursor_follow_selection = true

[grid.ui]
font_size = 20
border_width = 1
# Optional: colours for large initial labels and their inner borders.
# Small labels use text_color with reduced opacity.
# matched_text_color = "#8FA2F0FF"
# matched_border_color = "#8FA2F0FF"

[grid.lifecycle]
after_finish = "normal"
after_click = "finish"

keys must contain exactly grid_cols × grid_rows characters, ordered left-to-right and top-to-bottom. For continuous subdivision of one area, use Recursive Grid.