#if defined(SASC) && SASC < 658
typedef unsigned char char_u;
#endif
enum SpecialKey
{
KS_NAME = 0, KS_CE, KS_AL, KS_CAL, KS_DL, KS_CDL, KS_CS, KS_CL, KS_CD, KS_UT, KS_DA, KS_DB, KS_VI, KS_VE, KS_VS, KS_CVS, KS_CSH, KS_CRC, KS_CRS, KS_ME, KS_MR, KS_MD, KS_SE, KS_SO, KS_CZH, KS_CZR, KS_UE, KS_US, KS_UCE, KS_UCS, KS_STE, KS_STS, KS_MS, KS_CM, KS_SR, KS_CRI, KS_VB, KS_KS, KS_KE, KS_TI, KS_CTI, KS_TE, KS_CTE, KS_BC, KS_CCS, KS_CCO, KS_CSF, KS_CSB, KS_XS, KS_XN, KS_MB, KS_CAF, KS_CAB, KS_LE, KS_ND, KS_CIS, KS_CIE, KS_CSC, KS_CEC, KS_TS, KS_FS, KS_CWP, KS_CGP, KS_CWS, KS_CRV, KS_RFG, KS_RBG, KS_CSI, KS_CEI, KS_CSR, KS_CSV, KS_OP, KS_U7, KS_8F, KS_8B, KS_CBE, KS_CBD, KS_CPS, KS_CPE, KS_CST, KS_CRT, KS_SSI, KS_SRI };
#define KS_LAST KS_SRI
extern char_u *(term_strings[]);
#define T_NAME (TERM_STR(KS_NAME)) // terminal name
#define T_CE (TERM_STR(KS_CE)) // clear to end of line
#define T_AL (TERM_STR(KS_AL)) // add new blank line
#define T_CAL (TERM_STR(KS_CAL)) // add number of blank lines
#define T_DL (TERM_STR(KS_DL)) // delete line
#define T_CDL (TERM_STR(KS_CDL)) // delete number of lines
#define T_CS (TERM_STR(KS_CS)) // scroll region
#define T_CSV (TERM_STR(KS_CSV)) // scroll region vertical
#define T_CL (TERM_STR(KS_CL)) // clear screen
#define T_CD (TERM_STR(KS_CD)) // clear to end of display
#define T_UT (TERM_STR(KS_UT)) // clearing uses background color
#define T_DA (TERM_STR(KS_DA)) // text may be scrolled down from up
#define T_DB (TERM_STR(KS_DB)) // text may be scrolled up from down
#define T_VI (TERM_STR(KS_VI)) // cursor invisible
#define T_VE (TERM_STR(KS_VE)) // cursor visible
#define T_VS (TERM_STR(KS_VS)) // cursor very visible (blink)
#define T_CVS (TERM_STR(KS_CVS)) // cursor normally visible (no blink)
#define T_CSH (TERM_STR(KS_CSH)) // cursor shape
#define T_CRC (TERM_STR(KS_CRC)) // request cursor blinking
#define T_CRS (TERM_STR(KS_CRS)) // request cursor style
#define T_ME (TERM_STR(KS_ME)) // normal mode
#define T_MR (TERM_STR(KS_MR)) // reverse mode
#define T_MD (TERM_STR(KS_MD)) // bold mode
#define T_SE (TERM_STR(KS_SE)) // normal mode
#define T_SO (TERM_STR(KS_SO)) // standout mode
#define T_CZH (TERM_STR(KS_CZH)) // italic mode start
#define T_CZR (TERM_STR(KS_CZR)) // italic mode end
#define T_UE (TERM_STR(KS_UE)) // exit underscore (underline) mode
#define T_US (TERM_STR(KS_US)) // underscore (underline) mode
#define T_UCE (TERM_STR(KS_UCE)) // exit undercurl mode
#define T_UCS (TERM_STR(KS_UCS)) // undercurl mode
#define T_STE (TERM_STR(KS_STE)) // exit strikethrough mode
#define T_STS (TERM_STR(KS_STS)) // strikethrough mode
#define T_MS (TERM_STR(KS_MS)) // save to move cur in reverse mode
#define T_CM (TERM_STR(KS_CM)) // cursor motion
#define T_SR (TERM_STR(KS_SR)) // scroll reverse (backward)
#define T_CRI (TERM_STR(KS_CRI)) // cursor number of chars right
#define T_VB (TERM_STR(KS_VB)) // visual bell
#define T_KS (TERM_STR(KS_KS)) // put term in "keypad transmit" mode
#define T_KE (TERM_STR(KS_KE)) // out of "keypad transmit" mode
#define T_TI (TERM_STR(KS_TI)) // put terminal in termcap mode
#define T_CTI (TERM_STR(KS_CTI)) // put terminal in "raw" mode
#define T_TE (TERM_STR(KS_TE)) // end of termcap mode
#define T_CTE (TERM_STR(KS_CTE)) // end of "raw" mode
#define T_BC (TERM_STR(KS_BC)) // backspace character
#define T_CCS (TERM_STR(KS_CCS)) // cur is relative to scroll region
#define T_CCO (TERM_STR(KS_CCO)) // number of colors
#define T_CSF (TERM_STR(KS_CSF)) // set foreground color
#define T_CSB (TERM_STR(KS_CSB)) // set background color
#define T_XS (TERM_STR(KS_XS)) // standout not erased by overwriting
#define T_XN (TERM_STR(KS_XN)) // newline glitch
#define T_MB (TERM_STR(KS_MB)) // blink mode
#define T_CAF (TERM_STR(KS_CAF)) // set foreground color (ANSI)
#define T_CAB (TERM_STR(KS_CAB)) // set background color (ANSI)
#define T_LE (TERM_STR(KS_LE)) // cursor left
#define T_ND (TERM_STR(KS_ND)) // cursor right
#define T_CIS (TERM_STR(KS_CIS)) // set icon text start
#define T_CIE (TERM_STR(KS_CIE)) // set icon text end
#define T_TS (TERM_STR(KS_TS)) // set window title start
#define T_FS (TERM_STR(KS_FS)) // set window title end
#define T_CSC (TERM_STR(KS_CSC)) // set cursor color start
#define T_CEC (TERM_STR(KS_CEC)) // set cursor color end
#define T_CWP (TERM_STR(KS_CWP)) // set window position
#define T_CGP (TERM_STR(KS_CGP)) // get window position
#define T_CWS (TERM_STR(KS_CWS)) // window size
#define T_CSI (TERM_STR(KS_CSI)) // start insert mode
#define T_CEI (TERM_STR(KS_CEI)) // end insert mode
#define T_CSR (TERM_STR(KS_CSR)) // start replace mode
#define T_CRV (TERM_STR(KS_CRV)) // request version string
#define T_RFG (TERM_STR(KS_RFG)) // request foreground RGB
#define T_RBG (TERM_STR(KS_RBG)) // request background RGB
#define T_OP (TERM_STR(KS_OP)) // original color pair
#define T_U7 (TERM_STR(KS_U7)) // request cursor position
#define T_8F (TERM_STR(KS_8F)) // set foreground color (RGB)
#define T_8B (TERM_STR(KS_8B)) // set background color (RGB)
#define T_BE (TERM_STR(KS_CBE)) // enable bracketed paste mode
#define T_BD (TERM_STR(KS_CBD)) // disable bracketed paste mode
#define T_PS (TERM_STR(KS_CPS)) // start of bracketed paste
#define T_PE (TERM_STR(KS_CPE)) // end of bracketed paste
#define T_CST (TERM_STR(KS_CST)) // save window title
#define T_CRT (TERM_STR(KS_CRT)) // restore window title
#define T_SSI (TERM_STR(KS_SSI)) // save icon text
#define T_SRI (TERM_STR(KS_SRI)) // restore icon text
typedef enum {
TMODE_COOK, TMODE_SLEEP, TMODE_RAW, TMODE_UNKNOWN } tmode_T;