@visulima/ansi
Version:
ANSI escape codes for some terminal swag.
658 lines (657 loc) • 33.1 kB
text/typescript
/**
* Represents the reported setting of a terminal mode, typically received in response to a DECRQM (Request Mode) query.
* The terminal responds with a DECRPM (Report Mode) sequence containing one of these values.
* @see {@link requestMode} (DECRQM) for how to query a mode's state.
* @see {@link reportMode} (DECRPM) for how a terminal might report these states.
* @see {@link https://vt100.net/docs/vt510-rm/DECRPM.html} VT510 DECRPM Documentation.
* @enum {number}
*/
export declare enum ModeSetting {
/**
* Mode is not recognized by the terminal.
* This indicates that the terminal does not support or understand the queried mode number.
* (Parameter `Ps = 0` in DECRPM)
*/
NotRecognized = 0,
/**
* Mode is permanently reset and cannot be changed (e.g., by RM or SM sequences).
* (Parameter `Ps = 4` in DECRPM)
*/
PermanentlyReset = 4,
/**
* Mode is permanently set and cannot be changed (e.g., by RM or SM sequences).
* (Parameter `Ps = 3` in DECRPM)
*/
PermanentlySet = 3,
/**
* Mode is currently reset (not set).
* (Parameter `Ps = 2` in DECRPM)
*/
Reset = 2,
/**
* Mode is currently set.
* (Parameter `Ps = 1` in DECRPM)
*/
Set = 1
}
/**
* Checks if the reported mode setting indicates that the mode is not recognized by the terminal.
* @param m The `ModeSetting` value reported by the terminal.
* @returns `true` if the mode is {@link ModeSetting.NotRecognized}, `false` otherwise.
*/
export declare const isModeNotRecognized: (m: ModeSetting) => boolean;
/**
* Checks if the reported mode setting indicates that the mode is currently set or permanently set.
* @param m The `ModeSetting` value reported by the terminal.
* @returns `true` if the mode is {@link ModeSetting.Set} or {@link ModeSetting.PermanentlySet}, `false` otherwise.
*/
export declare const isModeSet: (m: ModeSetting) => boolean;
/**
* Checks if the reported mode setting indicates that the mode is currently reset or permanently reset.
* @param m The `ModeSetting` value reported by the terminal.
* @returns `true` if the mode is {@link ModeSetting.Reset} or {@link ModeSetting.PermanentlyReset}, `false` otherwise.
*/
export declare const isModeReset: (m: ModeSetting) => boolean;
/**
* Checks if the reported mode setting indicates that the mode is permanently set and cannot be changed.
* @param m The `ModeSetting` value reported by the terminal.
* @returns `true` if the mode is {@link ModeSetting.PermanentlySet}, `false` otherwise.
*/
export declare const isModePermanentlySet: (m: ModeSetting) => boolean;
/**
* Checks if the reported mode setting indicates that the mode is permanently reset and cannot be changed.
* @param m The `ModeSetting` value reported by the terminal.
* @returns `true` if the mode is {@link ModeSetting.PermanentlyReset}, `false` otherwise.
*/
export declare const isModePermanentlyReset: (m: ModeSetting) => boolean;
/**
* Represents a standard ANSI terminal mode (e.g., IRM, KAM). These modes are controlled by
* sequences like `CSI Pn h` (Set) and `CSI Pn l` (Reset), without a `?` prefix.
* This is a type alias for the base {@link Mode} interface, specialized for ANSI modes.
* @see {@link Mode}
* @see {@link createAnsiMode} to create instances.
*/
export type AnsiMode = Mode;
/**
* Represents a private DEC terminal mode (e.g., DECTCEM, DECAWM). These modes are controlled by
* sequences like `CSI ? Pn h` (Set) and `CSI ? Pn l` (Reset), identified by the `?` prefix.
* This is a type alias for the base {@link Mode} interface, specialized for DEC modes.
* @see {@link Mode}
* @see {@link createDecMode} to create instances.
*/
export type DecMode = Mode;
/**
* Interface representing a terminal mode, characterized by its numeric code
* and whether it's a standard ANSI mode or a private DEC mode.
*
* - Standard ANSI modes are controlled by `CSI Pn h` (Set Mode - SM) and `CSI Pn l` (Reset Mode - RM).
* - Private DEC modes are controlled by `CSI ? Pn h` (DECSET) and `CSI ? Pn l` (DECRST).
*/
export interface Mode {
/** The numeric code of the terminal mode (e.g., `4` for Insert/Replace Mode, `25` for Text Cursor Enable Mode). */
readonly code: number;
/**
* Indicates if this is a private DEC mode.
* - `true`: It's a DEC mode (sequence uses `?`, e.g., `CSI ?25h`).
* - `false`: It's a standard ANSI mode (sequence does not use `?`, e.g., `CSI 4h`).
*/
readonly isDecMode: boolean;
}
/**
* Factory function to create a standard ANSI mode object.
* @param code The numeric code for the ANSI mode (e.g., `4` for Insert/Replace Mode).
* @returns An `AnsiMode` object representing the specified ANSI mode.
* @example
* ```typescript
* import { createAnsiMode, setMode, resetMode } from '@visulima/ansi';
*
* const insertReplaceMode = createAnsiMode(4); // ANSI Mode 4: IRM
* const srmMode = createAnsiMode(12); // ANSI Mode 12: SRM
*
* process.stdout.write(setMode(insertReplaceMode)); // CSI 4h
* process.stdout.write(resetMode(srmMode)); // CSI 12l
* ```
*/
export declare const createAnsiMode: (code: number) => AnsiMode;
/**
* Factory function to create a private DEC mode object.
* @param code The numeric code for the DEC mode (e.g., `25` for Text Cursor Enable Mode DECTCEM).
* @returns A `DecMode` object representing the specified DEC private mode.
* @example
* ```typescript
* import { createDecMode, setMode, resetMode } from '@visulima/ansi';
*
* const cursorVisibleMode = createDecMode(25); // DEC Mode 25: DECTCEM (Text Cursor Enable)
* const originMode = createDecMode(6); // DEC Mode 6: DECOM (Origin Mode)
*
* process.stdout.write(setMode(cursorVisibleMode)); // CSI ?25h
* process.stdout.write(resetMode(originMode)); // CSI ?6l
* ```
*/
export declare const createDecMode: (code: number) => DecMode;
/**
* Generates the ANSI/DEC sequence to set one or more terminal modes.
* (SM - Set Mode)
*
* - For standard ANSI modes, the format is `CSI Pn ; ... ; Pn h`.
* - For private DEC modes, the format is `CSI ? Pn ; ... ; Pn h`.
*
* If a mix of ANSI and DEC modes are provided (e.g., `setMode(ansiMode1, decMode1, ansiMode2)`),
* it produces two separate sequences concatenated (e.g., `CSI Pn(A1);Pn(A2)hCSI ?Pn(D1)h`).
* The order of ANSI vs. DEC sequences in the output depends on the current implementation (ANSI first).
* @param modes A list of {@link Mode} objects (either `AnsiMode` or `DecMode`) to set.
* @returns The ANSI escape sequence(s) to set the specified modes. Returns an empty string if no modes are provided.
* @see {@link https://vt100.net/docs/vt510-rm/SM.html Set Mode (SM) documentation}
* @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-Ps-space-letter} (DECSET related section)
* @example
* ```typescript
* import { createAnsiMode, createDecMode, setMode, TextCursorEnableMode, OriginMode, InsertReplaceMode, LineFeedNewLineMode } from '@visulima/ansi';
*
* // Set a single DEC mode
* console.log(setMode(TextCursorEnableMode)); // CSI ?25h (assuming TextCursorEnableMode is DEC mode 25)
*
* // Set multiple ANSI modes
* console.log(setMode(InsertReplaceMode, LineFeedNewLineMode)); // CSI 4;20h (assuming IRM is 4, LNM is 20)
*
* // Set a mix of modes
* console.log(setMode(OriginMode, InsertReplaceMode)); // e.g., CSI 4hCSI ?6h (order of groups may vary)
* ```
*/
export declare const setMode: (...modes: Mode[]) => string;
/** Alias for {@link setMode}. Generates the SM (Set Mode) sequence. */
export declare const SM: (...modes: Mode[]) => string;
/**
* Generates the ANSI/DEC sequence to reset one or more terminal modes.
* (RM - Reset Mode)
*
* - For standard ANSI modes, the format is `CSI Pn ; ... ; Pn l`.
* - For private DEC modes, the format is `CSI ? Pn ; ... ; Pn l`.
*
* If a mix of ANSI and DEC modes are provided (e.g., `resetMode(ansiMode1, decMode1, ansiMode2)`),
* it produces two separate sequences concatenated (e.g., `CSI Pn(A1);Pn(A2)lCSI ?Pn(D1)l`).
* The order of ANSI vs. DEC sequences in the output depends on the current implementation (ANSI first).
* @param modes A list of {@link Mode} objects (either `AnsiMode` or `DecMode`) to reset.
* @returns The ANSI escape sequence(s) to reset the specified modes. Returns an empty string if no modes are provided.
* @see {@link https://vt100.net/docs/vt510-rm/RM.html Reset Mode (RM) documentation}
* @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-Ps-space-letter} (DECRST related section)
* @example
* ```typescript
* import { createAnsiMode, createDecMode, resetMode, TextCursorEnableMode, OriginMode, InsertReplaceMode, LineFeedNewLineMode } from '@visulima/ansi';
*
* // Reset a single DEC mode
* console.log(resetMode(TextCursorEnableMode)); // CSI ?25l (assuming TextCursorEnableMode is DEC mode 25)
*
* // Reset multiple ANSI modes
* console.log(resetMode(InsertReplaceMode, LineFeedNewLineMode)); // CSI 4;20l (assuming IRM is 4, LNM is 20)
*
* // Reset a mix of modes
* console.log(resetMode(OriginMode, InsertReplaceMode)); // e.g., CSI 4lCSI ?6l (order of groups may vary)
* ```
*/
export declare const resetMode: (...modes: Mode[]) => string;
/** Alias for {@link resetMode}. Generates the RM (Reset Mode) sequence. */
export declare const RM: (...modes: Mode[]) => string;
/**
* Generates the DECRQM (Request Mode) sequence to query the state of a specific terminal mode.
*
* The terminal is expected to respond with a DECRPM (Report Mode) sequence indicating the mode's current setting.
*
* - For a standard ANSI mode, the format is `CSI Pn $ p`.
* - For a private DEC mode, the format is `CSI ? Pn $ p`.
* @param mode The {@link Mode} object (either `AnsiMode` or `DecMode`) to query.
* @returns The DECRQM escape sequence to request the mode state.
* @see {@link https://vt100.net/docs/vt510-rm/DECRQM.html DECRQM documentation}
* @see {@link reportMode} for the corresponding response sequence (DECRPM).
* @see {@link ModeSetting} for possible reported states.
* @example
* ```typescript
* import { requestMode, TextCursorEnableMode, InsertReplaceMode } from '@visulima/ansi';
*
* // Request state of DEC Mode 25 (Text Cursor Enable)
* process.stdout.write(requestMode(TextCursorEnableMode)); // Outputs: CSI ?25$p
*
* // Request state of ANSI Mode 4 (Insert/Replace Mode)
* process.stdout.write(requestMode(InsertReplaceMode)); // Outputs: CSI 4$p
* ```
*/
export declare const requestMode: (mode: Mode) => string;
/** Alias for {@link requestMode}. Generates the DECRQM (Request Mode) sequence. */
export declare const DECRQM: (mode: Mode) => string;
/**
* Generates the DECRPM (Report Mode) sequence, which is the terminal's response to a DECRQM request.
* This sequence indicates the current setting of a queried mode.
*
* - For a standard ANSI mode, the format is `CSI Pn ; Ps $ y`.
* - For a private DEC mode, the format is `CSI ? Pn ; Ps $ y`.
*
* Where `Pn` is the mode number and `Ps` is a value from {@link ModeSetting} (0-4).
*
* This function is typically used for testing or simulating terminal behavior,
* as applications usually receive this sequence from the terminal, not generate it.
* @param mode The {@link Mode} object (either `AnsiMode` or `DecMode`) whose state is being reported.
* @param value The {@link ModeSetting} value indicating the current state of the mode.
* @returns The DECRPM escape sequence reporting the mode state.
* @see {@link https://vt100.net/docs/vt510-rm/DECRPM.html DECRPM documentation}
* @see {@link requestMode} for the corresponding request sequence (DECRQM).
* @example
* ```typescript
* import { reportMode, TextCursorEnableMode, InsertReplaceMode, ModeSetting, createDecMode } from '@visulima/ansi';
*
* // Report that DEC Mode 25 (Text Cursor Enable) is Set
* console.log(reportMode(TextCursorEnableMode, ModeSetting.Set)); // Outputs: CSI ?25;1$y
*
* // Report that ANSI Mode 4 (Insert/Replace Mode) is Reset
* console.log(reportMode(InsertReplaceMode, ModeSetting.Reset)); // Outputs: CSI 4;2$y
*
* // Report that a hypothetical DEC mode 1049 is NotRecognized
* const customDecMode = createDecMode(1049);
* console.log(reportMode(customDecMode, ModeSetting.NotRecognized)); // Outputs: CSI ?1049;0$y
* ```
*/
export declare const reportMode: (mode: Mode, value: ModeSetting) => string;
/** Alias for {@link reportMode}. Generates the DECRPM (Report Mode) sequence. */
export declare const DECRPM: (mode: Mode, value: ModeSetting) => string;
/**
* ANSI Mode 2: Keyboard Action Mode (KAM).
* Controls locking of the keyboard. When locked, the keyboard cannot send data.
* @see {@link https://vt100.net/docs/vt510-rm/KAM.html}
*/
export declare const KeyboardActionMode: AnsiMode;
/** Alias for {@link KeyboardActionMode}. */
export declare const KAM: AnsiMode;
/** Sequence to set Keyboard Action Mode: `CSI 2 h` */
export declare const SetKeyboardActionMode: string;
/** Sequence to reset Keyboard Action Mode: `CSI 2 l` */
export declare const ResetKeyboardActionMode: string;
/** Sequence to request Keyboard Action Mode state: `CSI 2 $ p` */
export declare const RequestKeyboardActionMode: string;
/**
* ANSI Mode 4: Insert/Replace Mode (IRM).
* Determines if new characters insert or replace existing ones.
* @see {@link https://vt100.net/docs/vt510-rm/IRM.html}
*/
export declare const InsertReplaceMode: Mode;
/** Alias for {@link InsertReplaceMode}. */
export declare const IRM: Mode;
/** Sequence to set Insert/Replace Mode: `CSI 4 h` */
export declare const SetInsertReplaceMode: string;
/** Sequence to reset Insert/Replace Mode: `CSI 4 l` */
export declare const ResetInsertReplaceMode: string;
/** Sequence to request Insert/Replace Mode state: `CSI 4 $ p` */
export declare const RequestInsertReplaceMode: string;
/**
* ANSI Mode 8: BiDirectional Support Mode (BDSM).
* Determines if the terminal supports bidirectional text (implicit mode).
* @see ECMA-48 7.2.1.
*/
export declare const BiDirectionalSupportMode: AnsiMode;
/** Alias for {@link BiDirectionalSupportMode}. */
export declare const BDSM: AnsiMode;
/** Sequence to set BiDirectional Support Mode: `CSI 8 h` */
export declare const SetBiDirectionalSupportMode: string;
/** Sequence to reset BiDirectional Support Mode: `CSI 8 l` */
export declare const ResetBiDirectionalSupportMode: string;
/** Sequence to request BiDirectional Support Mode state: `CSI 8 $ p` */
export declare const RequestBiDirectionalSupportMode: string;
/**
* ANSI Mode 12: Send/Receive Mode (SRM) or Local Echo Mode.
* Determines if the terminal echoes typed characters locally.
* @see {@link https://vt100.net/docs/vt510-rm/SRM.html}
*/
export declare const SendReceiveMode: AnsiMode;
/** Alias for {@link SendReceiveMode}. */
export declare const LocalEchoMode: AnsiMode;
/** Alias for {@link SendReceiveMode}. */
export declare const SRM: AnsiMode;
/** Sequence to set Send/Receive Mode: `CSI 12 h` */
export declare const SetSendReceiveMode: string;
/** Sequence to reset Send/Receive Mode: `CSI 12 l` */
export declare const ResetSendReceiveMode: string;
/** Sequence to request Send/Receive Mode state: `CSI 12 $ p` */
export declare const RequestSendReceiveMode: string;
/** Alias for {@link SetSendReceiveMode}. */
export declare const SetLocalEchoMode: string;
/** Alias for {@link ResetSendReceiveMode}. */
export declare const ResetLocalEchoMode: string;
/** Alias for {@link RequestSendReceiveMode}. */
export declare const RequestLocalEchoMode: string;
/**
* ANSI Mode 20: Line Feed/New Line Mode (LNM).
* Determines how the terminal interprets line feed (LF), form feed (FF), and vertical tab (VT) characters.
* - Set (New Line): LF, FF, VT cause CR+LF effect.
* - Reset (Line Feed): LF, FF, VT move to next line, same column.
* @see {@link https://vt100.net/docs/vt510-rm/LNM.html}
*/
export declare const LineFeedNewLineMode: AnsiMode;
/** Alias for {@link LineFeedNewLineMode}. */
export declare const LNM: AnsiMode;
/** Sequence to set Line Feed/New Line Mode: `CSI 20 h` */
export declare const SetLineFeedNewLineMode: string;
/** Sequence to reset Line Feed/New Line Mode: `CSI 20 l` */
export declare const ResetLineFeedNewLineMode: string;
/** Sequence to request Line Feed/New Line Mode state: `CSI 20 $ p` */
export declare const RequestLineFeedNewLineMode: string;
/**
* DEC Private Mode 1: Cursor Keys Mode (DECCKM).
* Determines if cursor keys send ANSI cursor sequences or application-specific sequences.
* - Set: Application sequences (e.g., `ESC O A` for Up Arrow).
* - Reset: ANSI sequences (e.g., `CSI A` for Up Arrow) (default).
* @see {@link https://vt100.net/docs/vt510-rm/DECCKM.html}
*/
export declare const CursorKeysMode: AnsiMode;
/** Alias for {@link CursorKeysMode}. */
export declare const DECCKM: AnsiMode;
/** Sequence to set Cursor Keys Mode: `CSI ? 1 h` */
export declare const SetCursorKeysMode: string;
/** Sequence to reset Cursor Keys Mode: `CSI ? 1 l` */
export declare const ResetCursorKeysMode: string;
/** Sequence to request Cursor Keys Mode state: `CSI ? 1 $ p` */
export declare const RequestCursorKeysMode: string;
/**
* DEC Private Mode 6: Origin Mode (DECOM).
* Controls cursor addressing relative to home position or scrolling region top-left.
* - Set: Relative to scrolling region.
* - Reset: Relative to home position (default).
* @see {@link https://vt100.net/docs/vt510-rm/DECOM.html}
*/
export declare const OriginMode: AnsiMode;
/** Alias for {@link OriginMode}. */
export declare const DECOM: AnsiMode;
/** Sequence to set Origin Mode: `CSI ? 6 h` */
export declare const SetOriginMode: string;
/** Sequence to reset Origin Mode: `CSI ? 6 l` */
export declare const ResetOriginMode: string;
/** Sequence to request Origin Mode state: `CSI ? 6 $ p` */
export declare const RequestOriginMode: string;
/**
* DEC Private Mode 7: Auto Wrap Mode (DECAWM).
* Determines if cursor wraps to next line upon reaching the right margin.
* - Set: Auto-wrap enabled (default).
* - Reset: Auto-wrap disabled (characters overwrite at right margin).
* @see {@link https://vt100.net/docs/vt510-rm/DECAWM.html}
*/
export declare const AutoWrapMode: AnsiMode;
/** Alias for {@link AutoWrapMode}. */
export declare const DECAWM: AnsiMode;
/** Sequence to set Auto Wrap Mode: `CSI ? 7 h` */
export declare const SetAutoWrapMode: string;
/** Sequence to reset Auto Wrap Mode: `CSI ? 7 l` */
export declare const ResetAutoWrapMode: string;
/** Sequence to request Auto Wrap Mode state: `CSI ? 7 $ p` */
export declare const RequestAutoWrapMode: string;
/**
* DEC Private Mode 9: X10 Mouse Reporting Mode.
* Reports mouse button presses. Coordinates are single characters (limited range).
* Format: `CSI M Cb Cx Cy` (Cb=button-1, Cx=X, Cy=Y).
* @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking}
*/
export declare const X10MouseMode: AnsiMode;
/** Sequence to set X10 Mouse Mode: `CSI ? 9 h` */
export declare const SetX10MouseMode: string;
/** Sequence to reset X10 Mouse Mode: `CSI ? 9 l` */
export declare const ResetX10MouseMode: string;
/** Sequence to request X10 Mouse Mode state: `CSI ? 9 $ p` */
export declare const RequestX10MouseMode: string;
/**
* DEC Private Mode 25: Text Cursor Enable Mode (DECTCEM).
* Controls visibility of the text cursor.
* - Set: Cursor visible (default).
* - Reset: Cursor invisible.
* @see {@link https://vt100.net/docs/vt510-rm/DECTCEM.html}
*/
export declare const TextCursorEnableMode: AnsiMode;
/** Alias for {@link TextCursorEnableMode}. */
export declare const DECTCEM: AnsiMode;
/** Sequence to set Text Cursor Enable Mode (show cursor): `CSI ? 25 h` */
export declare const SetTextCursorEnableMode: string;
/** Sequence to reset Text Cursor Enable Mode (hide cursor): `CSI ? 25 l` */
export declare const ResetTextCursorEnableMode: string;
/** Sequence to request Text Cursor Enable Mode state: `CSI ? 25 $ p` */
export declare const RequestTextCursorEnableMode: string;
/** Alias for {@link SetTextCursorEnableMode} (shows cursor). */
export declare const ShowCursor: string;
/** Alias for {@link ResetTextCursorEnableMode} (hides cursor). */
export declare const HideCursor: string;
/**
* DEC Private Mode 66: Numeric Keypad Mode (DECNKM).
* Determines if keypad sends application or numeric sequences.
* @see {@link https://vt100.net/docs/vt510-rm/DECNKM.html}
*/
export declare const NumericKeypadMode: AnsiMode;
/** Alias for {@link NumericKeypadMode}. */
export declare const DECNKM: AnsiMode;
/** Sequence to set Numeric Keypad Mode: `CSI ? 66 h` */
export declare const SetNumericKeypadMode: string;
/** Sequence to reset Numeric Keypad Mode: `CSI ? 66 l` */
export declare const ResetNumericKeypadMode: string;
/** Sequence to request Numeric Keypad Mode state: `CSI ? 66 $ p` */
export declare const RequestNumericKeypadMode: string;
/**
* DEC Private Mode 67: Backarrow Key Mode (DECBKM).
* Determines if backspace key sends backspace (ASCII 8) or delete (ASCII 127).
* - Set: Sends delete character.
* - Reset: Sends backspace character (default).
* @see {@link https://vt100.net/docs/vt510-rm/DECBKM.html}
*/
export declare const BackarrowKeyMode: AnsiMode;
/** Alias for {@link BackarrowKeyMode}. */
export declare const DECBKM: AnsiMode;
/** Sequence to set Backarrow Key Mode: `CSI ? 67 h` */
export declare const SetBackarrowKeyMode: string;
/** Sequence to reset Backarrow Key Mode: `CSI ? 67 l` */
export declare const ResetBackarrowKeyMode: string;
/** Sequence to request Backarrow Key Mode state: `CSI ? 67 $ p` */
export declare const RequestBackarrowKeyMode: string;
/**
* DEC Private Mode 69: Left/Right Margin Mode (DECLRMM).
* Controls whether left and right margins can be set with DECSLRM.
* @see {@link https://vt100.net/docs/vt510-rm/DECLRMM.html}
*/
export declare const LeftRightMarginMode: AnsiMode;
/** Alias for {@link LeftRightMarginMode}. */
export declare const DECLRMM: AnsiMode;
/** Sequence to set Left/Right Margin Mode: `CSI ? 69 h` */
export declare const SetLeftRightMarginMode: string;
/** Sequence to reset Left/Right Margin Mode: `CSI ? 69 l` */
export declare const ResetLeftRightMarginMode: string;
/** Sequence to request Left/Right Margin Mode state: `CSI ? 69 $ p` */
export declare const RequestLeftRightMarginMode: string;
/**
* DEC Private Mode 1000: Normal Mouse Mode.
* Reports mouse button presses and releases, including modifiers, wheel events, and extra buttons.
* Uses X10-like encoding with extensions.
* @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking}
*/
export declare const NormalMouseMode: AnsiMode;
/** Sequence to set Normal Mouse Mode: `CSI ? 1000 h` */
export declare const SetNormalMouseMode: string;
/** Sequence to reset Normal Mouse Mode: `CSI ? 1000 l` */
export declare const ResetNormalMouseMode: string;
/** Sequence to request Normal Mouse Mode state: `CSI ? 1000 $ p` */
export declare const RequestNormalMouseMode: string;
/**
* DEC Private Mode 1001: Highlight Mouse Tracking.
* Reports button presses, releases, and highlighted cells.
* @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking}
*/
export declare const HighlightMouseMode: AnsiMode;
/** Sequence to set Highlight Mouse Tracking: `CSI ? 1001 h` */
export declare const SetHighlightMouseMode: string;
/** Sequence to reset Highlight Mouse Tracking: `CSI ? 1001 l` */
export declare const ResetHighlightMouseMode: string;
/** Sequence to request Highlight Mouse Tracking state: `CSI ? 1001 $ p` */
export declare const RequestHighlightMouseMode: string;
/**
* DEC Private Mode 1002: Button Event Mouse Tracking (Cell Motion Mouse Tracking).
* Reports button-down events and mouse motion while a button is pressed.
* @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking}
*/
export declare const ButtonEventMouseMode: AnsiMode;
/** Sequence to set Button Event Mouse Tracking: `CSI ? 1002 h` */
export declare const SetButtonEventMouseMode: string;
/** Sequence to reset Button Event Mouse Tracking: `CSI ? 1002 l` */
export declare const ResetButtonEventMouseMode: string;
/** Sequence to request Button Event Mouse Tracking state: `CSI ? 1002 $ p` */
export declare const RequestButtonEventMouseMode: string;
/**
* DEC Private Mode 1003: Any Event Mouse Tracking (All Motion Mouse Tracking).
* Reports all mouse movements, regardless of button state (includes hover).
* @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking}
*/
export declare const AnyEventMouseMode: AnsiMode;
/** Sequence to set Any Event Mouse Tracking: `CSI ? 1003 h` */
export declare const SetAnyEventMouseMode: string;
/** Sequence to reset Any Event Mouse Tracking: `CSI ? 1003 l` */
export declare const ResetAnyEventMouseMode: string;
/** Sequence to request Any Event Mouse Tracking state: `CSI ? 1003 $ p` */
export declare const RequestAnyEventMouseMode: string;
/**
* DEC Private Mode 1004: Focus Event Mode.
* Reports terminal focus (FocusIn `CSI I`) and blur (FocusOut `CSI O`) events.
* @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Focus-Tracking}
*/
export declare const FocusEventMode: AnsiMode;
/** Sequence to set Focus Event Mode: `CSI ? 1004 h` */
export declare const SetFocusEventMode: string;
/** Sequence to reset Focus Event Mode: `CSI ? 1004 l` */
export declare const ResetFocusEventMode: string;
/** Sequence to request Focus Event Mode state: `CSI ? 1004 $ p` */
export declare const RequestFocusEventMode: string;
/**
* DEC Private Mode 1005: UTF-8 Extended Mouse Mode.
* Mouse coordinates are UTF-8 encoded if they exceed 95.
* @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking}
*/
export declare const Utf8ExtMouseMode: AnsiMode;
/** Sequence to set UTF-8 Extended Mouse Mode: `CSI ? 1005 h` */
export declare const SetUtf8ExtMouseMode: string;
/** Sequence to reset UTF-8 Extended Mouse Mode: `CSI ? 1005 l` */
export declare const ResetUtf8ExtMouseMode: string;
/** Sequence to request UTF-8 Extended Mouse Mode state: `CSI ? 1005 $ p` */
export declare const RequestUtf8ExtMouseMode: string;
/**
* DEC Private Mode 1006: SGR Extended Mouse Mode.
* Mouse events reported with SGR parameters: `CSI < Cb ; Cx ; Py M` (press) / `m` (release).
* Robust and recommended for modern applications.
* @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking}
*/
export declare const SgrExtMouseMode: AnsiMode;
/** Sequence to set SGR Extended Mouse Mode: `CSI ? 1006 h` */
export declare const SetSgrExtMouseMode: string;
/** Sequence to reset SGR Extended Mouse Mode: `CSI ? 1006 l` */
export declare const ResetSgrExtMouseMode: string;
/** Sequence to request SGR Extended Mouse Mode state: `CSI ? 1006 $ p` */
export declare const RequestSgrExtMouseMode: string;
/**
* DEC Private Mode 1015: URXVT Extended Mouse Mode.
* Uses an alternate encoding for mouse tracking.
* @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking}
*/
export declare const UrxvtExtMouseMode: AnsiMode;
/** Sequence to set URXVT Extended Mouse Mode: `CSI ? 1015 h` */
export declare const SetUrxvtExtMouseMode: string;
/** Sequence to reset URXVT Extended Mouse Mode: `CSI ? 1015 l` */
export declare const ResetUrxvtExtMouseMode: string;
/** Sequence to request URXVT Extended Mouse Mode state: `CSI ? 1015 $ p` */
export declare const RequestUrxvtExtMouseMode: string;
/**
* DEC Private Mode 1016: SGR Pixel Extended Mouse Mode.
* Similar to SGR Extended Mode, but reports pixel coordinates.
* @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking}
*/
export declare const SgrPixelExtMouseMode: AnsiMode;
/** Sequence to set SGR Pixel Extended Mouse Mode: `CSI ? 1016 h` */
export declare const SetSgrPixelExtMouseMode: string;
/** Sequence to reset SGR Pixel Extended Mouse Mode: `CSI ? 1016 l` */
export declare const ResetSgrPixelExtMouseMode: string;
/** Sequence to request SGR Pixel Extended Mouse Mode state: `CSI ? 1016 $ p` */
export declare const RequestSgrPixelExtMouseMode: string;
/**
* DEC Private Mode 1047: Alternate Screen Mode.
* Switches to alternate screen buffer and clears it.
* @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-The-Alternate-Screen-Buffer}
*/
export declare const AltScreenMode: AnsiMode;
/** Sequence to set Alternate Screen Mode: `CSI ? 1047 h` */
export declare const SetAltScreenMode: string;
/** Sequence to reset Alternate Screen Mode: `CSI ? 1047 l` */
export declare const ResetAltScreenMode: string;
/** Sequence to request Alternate Screen Mode state: `CSI ? 1047 $ p` */
export declare const RequestAltScreenMode: string;
/**
* DEC Private Mode 1048: Save Cursor Mode.
* Saves current cursor position (like DECSC).
* @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-The-Alternate-Screen-Buffer}
*/
export declare const SaveCursorMode: AnsiMode;
/** Sequence to set Save Cursor Mode: `CSI ? 1048 h` */
export declare const SetSaveCursorMode: string;
/** Sequence to reset Save Cursor Mode: `CSI ? 1048 l` */
export declare const ResetSaveCursorMode: string;
/** Sequence to request Save Cursor Mode state: `CSI ? 1048 $ p` */
export declare const RequestSaveCursorMode: string;
/**
* DEC Private Mode 1049: Alternate Screen Save Cursor Mode.
* Saves cursor, switches to alternate screen buffer, and clears screen.
* Widely used by full-screen applications.
* @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-The-Alternate-Screen-Buffer}
*/
export declare const AltScreenSaveCursorMode: AnsiMode;
/** Sequence to set Alternate Screen Save Cursor Mode: `CSI ? 1049 h` */
export declare const SetAltScreenSaveCursorMode: string;
/** Sequence to reset Alternate Screen Save Cursor Mode: `CSI ? 1049 l` */
export declare const ResetAltScreenSaveCursorMode: string;
/** Sequence to request Alternate Screen Save Cursor Mode state: `CSI ? 1049 $ p` */
export declare const RequestAltScreenSaveCursorMode: string;
/**
* DEC Private Mode 2004: Bracketed Paste Mode.
* Encloses pasted text with `ESC [ 200 ~` and `ESC [ 201 ~`.
* Allows applications to distinguish pasted text from typed text.
* @see {@link https://cirw.in/blog/bracketed-paste}
* @see {@link https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Bracketed-Paste-Mode}
*/
export declare const BracketedPasteMode: AnsiMode;
/** Sequence to set Bracketed Paste Mode: `CSI ? 2004 h` */
export declare const SetBracketedPasteMode: string;
/** Sequence to reset Bracketed Paste Mode: `CSI ? 2004 l` */
export declare const ResetBracketedPasteMode: string;
/** Sequence to request Bracketed Paste Mode state: `CSI ? 2004 $ p` */
export declare const RequestBracketedPasteMode: string;
/**
* DEC Private Mode 2026: Synchronized Output Mode.
* Helps synchronize output with the terminal, preventing issues like screen tearing or garbled output
* when rapid updates occur. The exact mechanism can vary (e.g., batching updates, waiting for vsync).
* @see {@link https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036}
*/
export declare const SynchronizedOutputMode: AnsiMode;
/** Sequence to set Synchronized Output Mode: `CSI ? 2026 h` */
export declare const SetSynchronizedOutputMode: string;
/** Sequence to reset Synchronized Output Mode: `CSI ? 2026 l` */
export declare const ResetSynchronizedOutputMode: string;
/** Sequence to request Synchronized Output Mode state: `CSI ? 2026 $ p` */
export declare const RequestSynchronizedOutputMode: string;
/**
* DEC Private Mode 2027: Grapheme Clustering Mode.
* Instructs the terminal to treat grapheme clusters as single units for rendering and cursor movement.
* Important for correct display of complex scripts and emojis.
* @see {@link https://github.com/contour-terminal/terminal-unicode-core}
*/
export declare const GraphemeClusteringMode: AnsiMode;
/** Sequence to set Grapheme Clustering Mode: `CSI ? 2027 h` */
export declare const SetGraphemeClusteringMode: string;
/** Sequence to reset Grapheme Clustering Mode: `CSI ? 2027 l` */
export declare const ResetGraphemeClusteringMode: string;
/** Sequence to request Grapheme Clustering Mode state: `CSI ? 2027 $ p` */
export declare const RequestGraphemeClusteringMode: string;
/**
* DEC Private Mode 9001: Win32 Input Mode.
* Relevant for Windows conPTY, influencing how keyboard input is processed and translated.
* @see {@link https://github.com/microsoft/terminal/blob/main/doc/specs/%234999%20-%20Improved%20keyboard%20handling%20in%20Conpty.md}
*/
export declare const Win32InputMode: AnsiMode;
/** Sequence to set Win32 Input Mode: `CSI ? 9001 h` */
export declare const SetWin32InputMode: string;
/** Sequence to reset Win32 Input Mode: `CSI ? 9001 l` */
export declare const ResetWin32InputMode: string;
/** Sequence to request Win32 Input Mode state: `CSI ? 9001 $ p` */
export declare const RequestWin32InputMode: string;