forked from toolshed/abra
133 lines
4.1 KiB
Go
133 lines
4.1 KiB
Go
package ansi
|
|
|
|
// This file define uses multiple sequences to set (SM), reset (RM), and request
|
|
// (DECRQM) different ANSI and DEC modes.
|
|
//
|
|
// See: https://vt100.net/docs/vt510-rm/SM.html
|
|
// See: https://vt100.net/docs/vt510-rm/RM.html
|
|
// See: https://vt100.net/docs/vt510-rm/DECRQM.html
|
|
//
|
|
// The terminal then responds to the request with a Report Mode function
|
|
// (DECRPM) in the format:
|
|
//
|
|
// ANSI format:
|
|
//
|
|
// CSI Pa ; Ps ; $ y
|
|
//
|
|
// DEC format:
|
|
//
|
|
// CSI ? Pa ; Ps $ y
|
|
//
|
|
// Where Pa is the mode number, and Ps is the mode value.
|
|
// See: https://vt100.net/docs/vt510-rm/DECRPM.html
|
|
|
|
// Application Cursor Keys (DECCKM) is a mode that determines whether the
|
|
// cursor keys send ANSI cursor sequences or application sequences.
|
|
//
|
|
// See: https://vt100.net/docs/vt510-rm/DECCKM.html
|
|
const (
|
|
EnableCursorKeys = "\x1b[?1h"
|
|
DisableCursorKeys = "\x1b[?1l"
|
|
RequestCursorKeys = "\x1b[?1$p"
|
|
)
|
|
|
|
// Text Cursor Enable Mode (DECTCEM) is a mode that shows/hides the cursor.
|
|
//
|
|
// See: https://vt100.net/docs/vt510-rm/DECTCEM.html
|
|
const (
|
|
ShowCursor = "\x1b[?25h"
|
|
HideCursor = "\x1b[?25l"
|
|
RequestCursorVisibility = "\x1b[?25$p"
|
|
)
|
|
|
|
// VT Mouse Tracking is a mode that determines whether the mouse reports on
|
|
// button press and release.
|
|
//
|
|
// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking
|
|
const (
|
|
EnableMouse = "\x1b[?1000h"
|
|
DisableMouse = "\x1b[?1000l"
|
|
RequestMouse = "\x1b[?1000$p"
|
|
)
|
|
|
|
// VT Hilite Mouse Tracking is a mode that determines whether the mouse reports on
|
|
// button presses, releases, and highlighted cells.
|
|
//
|
|
// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking
|
|
const (
|
|
EnableMouseHilite = "\x1b[?1001h"
|
|
DisableMouseHilite = "\x1b[?1001l"
|
|
RequestMouseHilite = "\x1b[?1001$p"
|
|
)
|
|
|
|
// Cell Motion Mouse Tracking is a mode that determines whether the mouse
|
|
// reports on button press, release, and motion events.
|
|
//
|
|
// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking
|
|
const (
|
|
EnableMouseCellMotion = "\x1b[?1002h"
|
|
DisableMouseCellMotion = "\x1b[?1002l"
|
|
RequestMouseCellMotion = "\x1b[?1002$p"
|
|
)
|
|
|
|
// All Mouse Tracking is a mode that determines whether the mouse reports on
|
|
// button press, release, motion, and highlight events.
|
|
//
|
|
// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking
|
|
const (
|
|
EnableMouseAllMotion = "\x1b[?1003h"
|
|
DisableMouseAllMotion = "\x1b[?1003l"
|
|
RequestMouseAllMotion = "\x1b[?1003$p"
|
|
)
|
|
|
|
// SGR Mouse Extension is a mode that determines whether the mouse reports events
|
|
// formatted with SGR parameters.
|
|
//
|
|
// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Mouse-Tracking
|
|
const (
|
|
EnableMouseSgrExt = "\x1b[?1006h"
|
|
DisableMouseSgrExt = "\x1b[?1006l"
|
|
RequestMouseSgrExt = "\x1b[?1006$p"
|
|
)
|
|
|
|
// Alternate Screen Buffer is a mode that determines whether the alternate screen
|
|
// buffer is active.
|
|
//
|
|
// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-The-Alternate-Screen-Buffer
|
|
const (
|
|
EnableAltScreenBuffer = "\x1b[?1049h"
|
|
DisableAltScreenBuffer = "\x1b[?1049l"
|
|
RequestAltScreenBuffer = "\x1b[?1049$p"
|
|
)
|
|
|
|
// Bracketed Paste Mode is a mode that determines whether pasted text is
|
|
// bracketed with escape sequences.
|
|
//
|
|
// See: https://cirw.in/blog/bracketed-paste
|
|
// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Bracketed-Paste-Mode
|
|
const (
|
|
EnableBracketedPaste = "\x1b[?2004h"
|
|
DisableBracketedPaste = "\x1b[?2004l"
|
|
RequestBracketedPaste = "\x1b[?2004$p"
|
|
)
|
|
|
|
// Synchronized Output Mode is a mode that determines whether output is
|
|
// synchronized with the terminal.
|
|
//
|
|
// See: https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036
|
|
const (
|
|
EnableSyncdOutput = "\x1b[?2026h"
|
|
DisableSyncdOutput = "\x1b[?2026l"
|
|
RequestSyncdOutput = "\x1b[?2026$p"
|
|
)
|
|
|
|
// Win32Input is a mode that determines whether input is processed by the
|
|
// Win32 console and Conpty.
|
|
//
|
|
// See: https://github.com/microsoft/terminal/blob/main/doc/specs/%234999%20-%20Improved%20keyboard%20handling%20in%20Conpty.md
|
|
const (
|
|
EnableWin32Input = "\x1b[?9001h"
|
|
DisableWin32Input = "\x1b[?9001l"
|
|
RequestWin32Input = "\x1b[?9001$p"
|
|
)
|