Skip to content

Page conventions

TDN pages share one vocabulary so that a reader can compare a cursor-style page with a graphics page without relearning the notation. This page is the contract that every feature page follows.

Notation

Sequences are written with named control bytes and spaces between tokens. The spaces are notation, never bytes, unless written as SP.

Token Bytes Meaning
ESC 0x1b Escape
CSI ESC [ or 0x9b Control Sequence Introducer
OSC ESC ] or 0x9d Operating System Command
DCS ESC P or 0x90 Device Control String
APC ESC _ or 0x9f Application Program Command
PM ESC ^ or 0x9e Privacy Message
SOS ESC X or 0x98 Start of String
ST ESC \ or 0x9c String Terminator
BEL 0x07 Bell; accepted as an OSC terminator by most emulators
SP 0x20 A literal space byte used as an intermediate
Ps One numeric parameter
Pm Several numeric parameters separated by ;
Pt Free-form text parameter

The seven-bit forms ESC [, ESC ], ESC P, ESC \ are the interoperable choice. The single-byte C1 forms collide with UTF-8 continuation bytes and are disabled or ignored by many modern emulators.

Examples in shell use printf with octal escapes so they run in any POSIX shell:

printf '\033[2 q'          # CSI 2 SP q
printf '\033]0;title\033\\' # OSC 0 ; title ST

Status vocabulary

Every feature carries exactly one status:

Status Meaning
Standard Defined by ECMA-48, ISO 6429, or an ITU/ANSI equivalent
DEC Defined in a DEC VT-series manual; a de facto standard
xterm Introduced by xterm and documented in XTerm Control Sequences
Extension Introduced by another emulator, documented by that emulator, adopted by at least one other
Vendor-private Documented by one emulator and not adopted elsewhere
Convention Widely implemented, but no primary document defines it
Disputed Primary sources disagree; the page explains the split

"Extension" is not a value judgment. The Kitty keyboard protocol and OSC 8 hyperlinks are extensions that many emulators now treat as baseline.

Feature labels

Use labels for properties shared across sequence families. They supplement the status vocabulary; they do not assert emulator support or default policy. Add labels as YAML front matter before the page heading:

---
tags:
  - Window Ops
---

Window Ops identifies controls subject to xterm's Window Ops policy. On a page covering other controls too, name the affected sequences beside their descriptions. In particular, title reports and title stacks belong to this category, while OSC 0/1/2 title setting uses Title Ops. That label identifies xterm's title-changing policy, including applying saved labels on pop. Pages can carry both labels; explain their scope beside each affected feature. Reports and pushes are Window Ops, while a pop checks Window Ops for the stack operation and Title Ops for applying its labels. Labels link to the feature index.

Compatibility tables

Compatibility tables are generated from independent files in tdn/terminals/. Read the registry guide for the schema, version semantics, evidence requirements, and stable feature IDs.

Status Meaning
Supported Implemented within the scope of the feature record
Partial Implemented with the recorded limitation
Unsupported Assessed as unimplemented
Unknown Unassessed, uncertain, or conflicting evidence

Imported claims are marked unverified. A default-denied operation is not necessarily unsupported. Version, configuration, notes, and evidence appear on each feature's page. Do not hand-maintain another compatibility table.

Feature page template

# Feature name

Status: one of the values above.

One-paragraph summary: what the feature does and who uses it.

## Syntax
## Behavior
## Probe
## Sources

<!-- Add the compatibility marker described in the registry guide. -->

Optional sections, placed before Compatibility: History, Parameters, Responses, Pitfalls.

Terminology

  • Application: the program writing to the PTY; a shell, editor, or TUI.
  • Emulator: the program that owns the PTY master and renders cells.
  • Multiplexer: tmux, screen, or zellij; an emulator on one side and an application on the other, which is why they appear in compatibility tables.
  • Report: bytes the emulator writes to PTY input in reply to a query.
  • Mode: a persistent switch set with h and reset with l.
  • Cell: one column of one row; wide characters occupy two cells.

See the Glossary for the full list.