61 lines
1.9 KiB
TypeScript
61 lines
1.9 KiB
TypeScript
/**
|
|
* DEC (Digital Equipment Corporation) Private Mode Sequences
|
|
*
|
|
* DEC private modes use CSI ? N h (set) and CSI ? N l (reset) format.
|
|
* These are terminal-specific extensions to the ANSI standard.
|
|
*/
|
|
|
|
import { csi } from './csi.js'
|
|
|
|
/**
|
|
* DEC private mode numbers
|
|
*/
|
|
export const DEC = {
|
|
CURSOR_VISIBLE: 25,
|
|
ALT_SCREEN: 47,
|
|
ALT_SCREEN_CLEAR: 1049,
|
|
MOUSE_NORMAL: 1000,
|
|
MOUSE_BUTTON: 1002,
|
|
MOUSE_ANY: 1003,
|
|
MOUSE_SGR: 1006,
|
|
FOCUS_EVENTS: 1004,
|
|
BRACKETED_PASTE: 2004,
|
|
SYNCHRONIZED_UPDATE: 2026,
|
|
} as const
|
|
|
|
/** Generate CSI ? N h sequence (set mode) */
|
|
export function decset(mode: number): string {
|
|
return csi(`?${mode}h`)
|
|
}
|
|
|
|
/** Generate CSI ? N l sequence (reset mode) */
|
|
export function decreset(mode: number): string {
|
|
return csi(`?${mode}l`)
|
|
}
|
|
|
|
// Pre-generated sequences for common modes
|
|
export const BSU = decset(DEC.SYNCHRONIZED_UPDATE)
|
|
export const ESU = decreset(DEC.SYNCHRONIZED_UPDATE)
|
|
export const EBP = decset(DEC.BRACKETED_PASTE)
|
|
export const DBP = decreset(DEC.BRACKETED_PASTE)
|
|
export const EFE = decset(DEC.FOCUS_EVENTS)
|
|
export const DFE = decreset(DEC.FOCUS_EVENTS)
|
|
export const SHOW_CURSOR = decset(DEC.CURSOR_VISIBLE)
|
|
export const HIDE_CURSOR = decreset(DEC.CURSOR_VISIBLE)
|
|
export const ENTER_ALT_SCREEN = decset(DEC.ALT_SCREEN_CLEAR)
|
|
export const EXIT_ALT_SCREEN = decreset(DEC.ALT_SCREEN_CLEAR)
|
|
// Mouse tracking: 1000 reports button press/release/wheel, 1002 adds drag
|
|
// events (button-motion), 1003 adds all-motion (no button held — for
|
|
// hover), 1006 uses SGR format (CSI < btn;col;row M/m) instead of legacy
|
|
// X10 bytes. Combined: wheel + click/drag for selection + hover.
|
|
export const ENABLE_MOUSE_TRACKING =
|
|
decset(DEC.MOUSE_NORMAL) +
|
|
decset(DEC.MOUSE_BUTTON) +
|
|
decset(DEC.MOUSE_ANY) +
|
|
decset(DEC.MOUSE_SGR)
|
|
export const DISABLE_MOUSE_TRACKING =
|
|
decreset(DEC.MOUSE_SGR) +
|
|
decreset(DEC.MOUSE_ANY) +
|
|
decreset(DEC.MOUSE_BUTTON) +
|
|
decreset(DEC.MOUSE_NORMAL)
|