![]() |
libghostty
|
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:
Use ghostty_mode_report_encode() to encode a DECRPM response into a caller-provided buffer:
Typedefs | |
| typedef uint16_t | GhosttyMode |
Enumerations | |
| enum | GhosttyModeReportState { GHOSTTY_MODE_REPORT_NOT_RECOGNIZED = 0 , GHOSTTY_MODE_REPORT_SET = 1 , GHOSTTY_MODE_REPORT_RESET = 2 , GHOSTTY_MODE_REPORT_PERMANENTLY_SET = 3 , GHOSTTY_MODE_REPORT_PERMANENTLY_RESET = 4 , GHOSTTY_MODE_REPORT_MAX_VALUE = GHOSTTY_ENUM_MAX_VALUE } |
Functions | |
| GHOSTTY_API GhosttyResult | ghostty_mode_report_encode (GhosttyMode mode, GhosttyModeReportState state, char *buf, size_t buf_len, size_t *out_written) |
ANSI Modes | |
Modes for standard ANSI modes. | |
| #define | GHOSTTY_MODE_KAM (ghostty_mode_new(2, true)) |
| #define | GHOSTTY_MODE_INSERT (ghostty_mode_new(4, true)) |
| #define | GHOSTTY_MODE_SRM (ghostty_mode_new(12, true)) |
| #define | GHOSTTY_MODE_LINEFEED (ghostty_mode_new(20, true)) |
DEC Private Modes | |
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_IN_BAND_RESIZE (ghostty_mode_new(2048, false)) |
| typedef uint16_t GhosttyMode |
DECRPM report state values.
These correspond to the Ps2 parameter in a DECRPM response sequence (CSI ? Ps1 ; Ps2 $ y).
| GHOSTTY_API GhosttyResult ghostty_mode_report_encode | ( | GhosttyMode | mode, |
| GhosttyModeReportState | state, | ||
| char * | buf, | ||
| size_t | buf_len, | ||
| size_t * | out_written ) |
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:
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.
| 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. |
| #define GHOSTTY_MODE_132_COLUMN (ghostty_mode_new(3, false)) |
| #define GHOSTTY_MODE_ALT_ESC_PREFIX (ghostty_mode_new(1036, false)) |
| #define GHOSTTY_MODE_ALT_SCREEN (ghostty_mode_new(1047, false)) |
| #define GHOSTTY_MODE_ALT_SCREEN_LEGACY (ghostty_mode_new(47, false)) |
| #define GHOSTTY_MODE_ALT_SCREEN_SAVE (ghostty_mode_new(1049, false)) |
| #define GHOSTTY_MODE_ALT_SCROLL (ghostty_mode_new(1007, false)) |
| #define GHOSTTY_MODE_ALT_SENDS_ESC (ghostty_mode_new(1039, false)) |
| #define GHOSTTY_MODE_ANY_MOUSE (ghostty_mode_new(1003, false)) |
| #define GHOSTTY_MODE_AUTOREPEAT (ghostty_mode_new(8, false)) |
| #define GHOSTTY_MODE_BACKARROW_KEY_MODE (ghostty_mode_new(67, false)) |
| #define GHOSTTY_MODE_BRACKETED_PASTE (ghostty_mode_new(2004, false)) |
| #define GHOSTTY_MODE_BUTTON_MOUSE (ghostty_mode_new(1002, false)) |
| #define GHOSTTY_MODE_COLOR_SCHEME_REPORT (ghostty_mode_new(2031, false)) |
| #define GHOSTTY_MODE_CURSOR_BLINKING (ghostty_mode_new(12, false)) |
| #define GHOSTTY_MODE_CURSOR_VISIBLE (ghostty_mode_new(25, false)) |
| #define GHOSTTY_MODE_DECCKM (ghostty_mode_new(1, false)) |
| #define GHOSTTY_MODE_ENABLE_MODE_3 (ghostty_mode_new(40, false)) |
| #define GHOSTTY_MODE_FOCUS_EVENT (ghostty_mode_new(1004, false)) |
| #define GHOSTTY_MODE_GRAPHEME_CLUSTER (ghostty_mode_new(2027, false)) |
| #define GHOSTTY_MODE_IN_BAND_RESIZE (ghostty_mode_new(2048, false)) |
| #define GHOSTTY_MODE_INSERT (ghostty_mode_new(4, true)) |
| #define GHOSTTY_MODE_KAM (ghostty_mode_new(2, true)) |
| #define GHOSTTY_MODE_KEYPAD_KEYS (ghostty_mode_new(66, false)) |
| #define GHOSTTY_MODE_LEFT_RIGHT_MARGIN (ghostty_mode_new(69, false)) |
| #define GHOSTTY_MODE_LINEFEED (ghostty_mode_new(20, true)) |
| #define GHOSTTY_MODE_NORMAL_MOUSE (ghostty_mode_new(1000, false)) |
| #define GHOSTTY_MODE_NUMLOCK_KEYPAD (ghostty_mode_new(1035, false)) |
| #define GHOSTTY_MODE_ORIGIN (ghostty_mode_new(6, false)) |
| #define GHOSTTY_MODE_REVERSE_COLORS (ghostty_mode_new(5, false)) |
| #define GHOSTTY_MODE_REVERSE_WRAP (ghostty_mode_new(45, false)) |
| #define GHOSTTY_MODE_REVERSE_WRAP_EXT (ghostty_mode_new(1045, false)) |
| #define GHOSTTY_MODE_SAVE_CURSOR (ghostty_mode_new(1048, false)) |
| #define GHOSTTY_MODE_SGR_MOUSE (ghostty_mode_new(1006, false)) |
| #define GHOSTTY_MODE_SGR_PIXELS_MOUSE (ghostty_mode_new(1016, false)) |
| #define GHOSTTY_MODE_SLOW_SCROLL (ghostty_mode_new(4, false)) |
| #define GHOSTTY_MODE_SRM (ghostty_mode_new(12, true)) |
| #define GHOSTTY_MODE_SYNC_OUTPUT (ghostty_mode_new(2026, false)) |
| #define GHOSTTY_MODE_URXVT_MOUSE (ghostty_mode_new(1015, false)) |
| #define GHOSTTY_MODE_UTF8_MOUSE (ghostty_mode_new(1005, false)) |
| #define GHOSTTY_MODE_WRAPAROUND (ghostty_mode_new(7, false)) |