Utilities for working with terminal modes. A mode is a compact 16-bit representation of a terminal mode identifier that encodes both the numeric mode value (up to 15 bits) and whether the mode is an ANSI mode or a DEC private mode (?-prefixed).
The packed layout (least-significant bit first) is:
- Bits 0–14: mode value (u15)
- Bit 15: ANSI flag (0 = DEC private mode, 1 = ANSI mode)
Example
void modes_example() {
printf("value=%u ansi=%d packed=0x%04x\n",
ghostty_mode_value(tag),
ghostty_mode_ansi(tag),
tag);
printf("value=%u ansi=%d packed=0x%04x\n",
ghostty_mode_value(ansi_tag),
ghostty_mode_ansi(ansi_tag),
ansi_tag);
}
DECRPM Report Encoding
Use ghostty_mode_report_encode() to encode a DECRPM response into a caller-provided buffer:
void decrpm_example() {
char buf[32];
size_t written = 0;
buf, sizeof(buf), &written);
printf("Encoded %zu bytes: ", written);
fwrite(buf, 1, written, stdout);
printf("\n");
}
}
|
Modes for DEC private modes (?-prefixed).
|
| #define | GHOSTTY_MODE_DECCKM (ghostty_mode_new(1, false)) |
| #define | GHOSTTY_MODE_132_COLUMN (ghostty_mode_new(3, false)) |
| #define | GHOSTTY_MODE_SLOW_SCROLL (ghostty_mode_new(4, false)) |
| #define | GHOSTTY_MODE_REVERSE_COLORS (ghostty_mode_new(5, false)) |
| #define | GHOSTTY_MODE_ORIGIN (ghostty_mode_new(6, false)) |
| #define | GHOSTTY_MODE_WRAPAROUND (ghostty_mode_new(7, false)) |
| #define | GHOSTTY_MODE_AUTOREPEAT (ghostty_mode_new(8, false)) |
| #define | GHOSTTY_MODE_X10_MOUSE (ghostty_mode_new(9, false)) |
| #define | GHOSTTY_MODE_CURSOR_BLINKING (ghostty_mode_new(12, false)) |
| #define | GHOSTTY_MODE_CURSOR_VISIBLE (ghostty_mode_new(25, false)) |
| #define | GHOSTTY_MODE_ENABLE_MODE_3 (ghostty_mode_new(40, false)) |
| #define | GHOSTTY_MODE_REVERSE_WRAP (ghostty_mode_new(45, false)) |
| #define | GHOSTTY_MODE_ALT_SCREEN_LEGACY (ghostty_mode_new(47, false)) |
| #define | GHOSTTY_MODE_KEYPAD_KEYS (ghostty_mode_new(66, false)) |
| #define | GHOSTTY_MODE_BACKARROW_KEY_MODE (ghostty_mode_new(67, false)) |
| #define | GHOSTTY_MODE_LEFT_RIGHT_MARGIN (ghostty_mode_new(69, false)) |
| #define | GHOSTTY_MODE_NORMAL_MOUSE (ghostty_mode_new(1000, false)) |
| #define | GHOSTTY_MODE_BUTTON_MOUSE (ghostty_mode_new(1002, false)) |
| #define | GHOSTTY_MODE_ANY_MOUSE (ghostty_mode_new(1003, false)) |
| #define | GHOSTTY_MODE_FOCUS_EVENT (ghostty_mode_new(1004, false)) |
| #define | GHOSTTY_MODE_UTF8_MOUSE (ghostty_mode_new(1005, false)) |
| #define | GHOSTTY_MODE_SGR_MOUSE (ghostty_mode_new(1006, false)) |
| #define | GHOSTTY_MODE_ALT_SCROLL (ghostty_mode_new(1007, false)) |
| #define | GHOSTTY_MODE_URXVT_MOUSE (ghostty_mode_new(1015, false)) |
| #define | GHOSTTY_MODE_SGR_PIXELS_MOUSE (ghostty_mode_new(1016, false)) |
| #define | GHOSTTY_MODE_NUMLOCK_KEYPAD (ghostty_mode_new(1035, false)) |
| #define | GHOSTTY_MODE_ALT_ESC_PREFIX (ghostty_mode_new(1036, false)) |
| #define | GHOSTTY_MODE_ALT_SENDS_ESC (ghostty_mode_new(1039, false)) |
| #define | GHOSTTY_MODE_REVERSE_WRAP_EXT (ghostty_mode_new(1045, false)) |
| #define | GHOSTTY_MODE_ALT_SCREEN (ghostty_mode_new(1047, false)) |
| #define | GHOSTTY_MODE_SAVE_CURSOR (ghostty_mode_new(1048, false)) |
| #define | GHOSTTY_MODE_ALT_SCREEN_SAVE (ghostty_mode_new(1049, false)) |
| #define | GHOSTTY_MODE_BRACKETED_PASTE (ghostty_mode_new(2004, false)) |
| #define | GHOSTTY_MODE_SYNC_OUTPUT (ghostty_mode_new(2026, false)) |
| #define | GHOSTTY_MODE_GRAPHEME_CLUSTER (ghostty_mode_new(2027, false)) |
| #define | GHOSTTY_MODE_COLOR_SCHEME_REPORT (ghostty_mode_new(2031, false)) |
| #define | GHOSTTY_MODE_VISIBILITY_REPORT (ghostty_mode_new(2033, false)) |
| #define | GHOSTTY_MODE_IN_BAND_RESIZE (ghostty_mode_new(2048, false)) |
| #define | GHOSTTY_MODE_PASTE_EVENTS (ghostty_mode_new(5522, false)) |
Encode a DECRPM (DEC Private Mode Report) response sequence.
Writes a mode report escape sequence into the provided buffer. The generated sequence has the form:
- DEC private mode: CSI ? Ps1 ; Ps2 $ y
- ANSI mode: CSI Ps1 ; Ps2 $ y
If the buffer is too small, the function returns GHOSTTY_OUT_OF_SPACE and writes the required buffer size to out_written. The caller can then retry with a sufficiently sized buffer.
- Parameters
-
| mode | The mode identifying the mode to report on |
| state | The report state for this mode |
| buf | Output buffer to write the encoded sequence into (may be NULL) |
| buf_len | Size of the output buffer in bytes |
| [out] | out_written | On success, the number of bytes written. On GHOSTTY_OUT_OF_SPACE, the required buffer size. |
- Returns
- GHOSTTY_SUCCESS on success, GHOSTTY_OUT_OF_SPACE if the buffer is too small
References ghostty_mode_report_encode().
Referenced by ghostty_mode_report_encode().