Bram Moolenaar | edf3f97 | 2016-08-29 22:49:24 +0200 | [diff] [blame] | 1 | /* vi:set ts=8 sts=4 sw=4 noet: |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 2 | * |
| 3 | * VIM - Vi IMproved by Bram Moolenaar |
| 4 | * |
| 5 | * Do ":help uganda" in Vim to read copying and usage conditions. |
| 6 | * Do ":help credits" in Vim to see a list of people who contributed. |
| 7 | */ |
| 8 | |
| 9 | /* |
| 10 | * This file contains the defines for the machine dependent escape sequences |
| 11 | * that the editor needs to perform various operations. All of the sequences |
| 12 | * here are optional, except "cm" (cursor motion). |
| 13 | */ |
| 14 | |
| 15 | #if defined(SASC) && SASC < 658 |
| 16 | /* |
| 17 | * The SAS C compiler has a bug that makes typedefs being forgot in include |
| 18 | * files. Has been fixed in version 6.58. |
| 19 | */ |
| 20 | typedef unsigned char char_u; |
| 21 | #endif |
| 22 | |
| 23 | /* |
| 24 | * Index of the termcap codes in the term_strings array. |
| 25 | */ |
| 26 | enum SpecialKey |
| 27 | { |
Bram Moolenaar | 9bf703d | 2019-11-30 19:44:38 +0100 | [diff] [blame] | 28 | KS_NAME = 0,// name of this terminal entry |
| 29 | KS_CE, // clear to end of line |
| 30 | KS_AL, // add new blank line |
| 31 | KS_CAL, // add number of blank lines |
| 32 | KS_DL, // delete line |
| 33 | KS_CDL, // delete number of lines |
| 34 | KS_CS, // scroll region |
| 35 | KS_CL, // clear screen |
| 36 | KS_CD, // clear to end of display |
| 37 | KS_UT, // clearing uses current background color |
| 38 | KS_DA, // text may be scrolled down from up |
| 39 | KS_DB, // text may be scrolled up from down |
| 40 | KS_VI, // cursor invisible |
| 41 | KS_VE, // cursor visible |
| 42 | KS_VS, // cursor very visible (blink) |
| 43 | KS_CVS, // cursor normally visible (no blink) |
| 44 | KS_CSH, // cursor shape |
| 45 | KS_CRC, // request cursor blinking |
| 46 | KS_CRS, // request cursor style |
| 47 | KS_ME, // normal mode |
| 48 | KS_MR, // reverse mode |
| 49 | KS_MD, // bold mode |
| 50 | KS_SE, // normal mode |
| 51 | KS_SO, // standout mode |
| 52 | KS_CZH, // italic mode start |
| 53 | KS_CZR, // italic mode end |
| 54 | KS_UE, // exit underscore (underline) mode |
| 55 | KS_US, // underscore (underline) mode |
| 56 | KS_UCE, // exit undercurl mode |
| 57 | KS_UCS, // undercurl mode |
| 58 | KS_STE, // exit strikethrough mode |
| 59 | KS_STS, // strikethrough mode |
| 60 | KS_MS, // save to move cur in reverse mode |
| 61 | KS_CM, // cursor motion |
| 62 | KS_SR, // scroll reverse (backward) |
| 63 | KS_CRI, // cursor number of chars right |
| 64 | KS_VB, // visual bell |
| 65 | KS_KS, // put term in "keypad transmit" mode |
| 66 | KS_KE, // out of "keypad transmit" mode |
| 67 | KS_TI, // put terminal in termcap mode |
| 68 | KS_CTI, // put terminal in "raw" mode |
| 69 | KS_TE, // end of termcap mode |
| 70 | KS_CTE, // end of "raw" mode |
| 71 | KS_BC, // backspace character (cursor left) |
| 72 | KS_CCS, // cur is relative to scroll region |
| 73 | KS_CCO, // number of colors |
| 74 | KS_CSF, // set foreground color |
| 75 | KS_CSB, // set background color |
| 76 | KS_XS, // standout not erased by overwriting (hpterm) |
| 77 | KS_XN, // newline glitch |
| 78 | KS_MB, // blink mode |
| 79 | KS_CAF, // set foreground color (ANSI) |
| 80 | KS_CAB, // set background color (ANSI) |
Bram Moolenaar | e023e88 | 2020-05-31 16:42:30 +0200 | [diff] [blame] | 81 | KS_CAU, // set underline color (ANSI) |
Bram Moolenaar | 9bf703d | 2019-11-30 19:44:38 +0100 | [diff] [blame] | 82 | KS_LE, // cursor left (mostly backspace) |
| 83 | KS_ND, // cursor right |
| 84 | KS_CIS, // set icon text start |
| 85 | KS_CIE, // set icon text end |
| 86 | KS_CSC, // set cursor color start |
| 87 | KS_CEC, // set cursor color end |
| 88 | KS_TS, // set window title start (to status line) |
| 89 | KS_FS, // set window title end (from status line) |
| 90 | KS_CWP, // set window position in pixels |
| 91 | KS_CGP, // get window position |
| 92 | KS_CWS, // set window size in characters |
| 93 | KS_CRV, // request version string |
| 94 | KS_RFG, // request foreground color |
| 95 | KS_RBG, // request background color |
| 96 | KS_CSI, // start insert mode (bar cursor) |
| 97 | KS_CEI, // end insert mode (block cursor) |
| 98 | KS_CSR, // start replace mode (underline cursor) |
| 99 | KS_CSV, // scroll region vertical |
| 100 | KS_OP, // original color pair |
| 101 | KS_U7, // request cursor position |
| 102 | KS_8F, // set foreground color (RGB) |
| 103 | KS_8B, // set background color (RGB) |
Bram Moolenaar | e023e88 | 2020-05-31 16:42:30 +0200 | [diff] [blame] | 104 | KS_8U, // set underline color (RGB) |
Bram Moolenaar | 9bf703d | 2019-11-30 19:44:38 +0100 | [diff] [blame] | 105 | KS_CBE, // enable bracketed paste mode |
| 106 | KS_CBD, // disable bracketed paste mode |
| 107 | KS_CPS, // start of bracketed paste |
| 108 | KS_CPE, // end of bracketed paste |
| 109 | KS_CST, // save window title |
| 110 | KS_CRT, // restore window title |
| 111 | KS_SSI, // save icon text |
| 112 | KS_SRI // restore icon text |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 113 | }; |
| 114 | |
Bram Moolenaar | 40385db | 2018-08-07 22:31:44 +0200 | [diff] [blame] | 115 | #define KS_LAST KS_SRI |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 116 | |
| 117 | /* |
| 118 | * the terminal capabilities are stored in this array |
| 119 | * IMPORTANT: When making changes, note the following: |
| 120 | * - there should be an entry for each code in the builtin termcaps |
| 121 | * - there should be an option for each code in option.c |
| 122 | * - there should be code in term.c to obtain the value from the termcap |
| 123 | */ |
| 124 | |
Bram Moolenaar | 9bf703d | 2019-11-30 19:44:38 +0100 | [diff] [blame] | 125 | extern char_u *(term_strings[]); // current terminal strings |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 126 | |
| 127 | /* |
| 128 | * strings used for terminal |
| 129 | */ |
Bram Moolenaar | 9bf703d | 2019-11-30 19:44:38 +0100 | [diff] [blame] | 130 | #define T_NAME (TERM_STR(KS_NAME)) // terminal name |
| 131 | #define T_CE (TERM_STR(KS_CE)) // clear to end of line |
| 132 | #define T_AL (TERM_STR(KS_AL)) // add new blank line |
| 133 | #define T_CAL (TERM_STR(KS_CAL)) // add number of blank lines |
| 134 | #define T_DL (TERM_STR(KS_DL)) // delete line |
| 135 | #define T_CDL (TERM_STR(KS_CDL)) // delete number of lines |
| 136 | #define T_CS (TERM_STR(KS_CS)) // scroll region |
| 137 | #define T_CSV (TERM_STR(KS_CSV)) // scroll region vertical |
| 138 | #define T_CL (TERM_STR(KS_CL)) // clear screen |
| 139 | #define T_CD (TERM_STR(KS_CD)) // clear to end of display |
| 140 | #define T_UT (TERM_STR(KS_UT)) // clearing uses background color |
| 141 | #define T_DA (TERM_STR(KS_DA)) // text may be scrolled down from up |
| 142 | #define T_DB (TERM_STR(KS_DB)) // text may be scrolled up from down |
| 143 | #define T_VI (TERM_STR(KS_VI)) // cursor invisible |
| 144 | #define T_VE (TERM_STR(KS_VE)) // cursor visible |
| 145 | #define T_VS (TERM_STR(KS_VS)) // cursor very visible (blink) |
| 146 | #define T_CVS (TERM_STR(KS_CVS)) // cursor normally visible (no blink) |
| 147 | #define T_CSH (TERM_STR(KS_CSH)) // cursor shape |
| 148 | #define T_CRC (TERM_STR(KS_CRC)) // request cursor blinking |
| 149 | #define T_CRS (TERM_STR(KS_CRS)) // request cursor style |
| 150 | #define T_ME (TERM_STR(KS_ME)) // normal mode |
| 151 | #define T_MR (TERM_STR(KS_MR)) // reverse mode |
| 152 | #define T_MD (TERM_STR(KS_MD)) // bold mode |
| 153 | #define T_SE (TERM_STR(KS_SE)) // normal mode |
| 154 | #define T_SO (TERM_STR(KS_SO)) // standout mode |
| 155 | #define T_CZH (TERM_STR(KS_CZH)) // italic mode start |
| 156 | #define T_CZR (TERM_STR(KS_CZR)) // italic mode end |
| 157 | #define T_UE (TERM_STR(KS_UE)) // exit underscore (underline) mode |
| 158 | #define T_US (TERM_STR(KS_US)) // underscore (underline) mode |
| 159 | #define T_UCE (TERM_STR(KS_UCE)) // exit undercurl mode |
| 160 | #define T_UCS (TERM_STR(KS_UCS)) // undercurl mode |
| 161 | #define T_STE (TERM_STR(KS_STE)) // exit strikethrough mode |
| 162 | #define T_STS (TERM_STR(KS_STS)) // strikethrough mode |
| 163 | #define T_MS (TERM_STR(KS_MS)) // save to move cur in reverse mode |
| 164 | #define T_CM (TERM_STR(KS_CM)) // cursor motion |
| 165 | #define T_SR (TERM_STR(KS_SR)) // scroll reverse (backward) |
| 166 | #define T_CRI (TERM_STR(KS_CRI)) // cursor number of chars right |
| 167 | #define T_VB (TERM_STR(KS_VB)) // visual bell |
| 168 | #define T_KS (TERM_STR(KS_KS)) // put term in "keypad transmit" mode |
| 169 | #define T_KE (TERM_STR(KS_KE)) // out of "keypad transmit" mode |
| 170 | #define T_TI (TERM_STR(KS_TI)) // put terminal in termcap mode |
| 171 | #define T_CTI (TERM_STR(KS_CTI)) // put terminal in "raw" mode |
| 172 | #define T_TE (TERM_STR(KS_TE)) // end of termcap mode |
| 173 | #define T_CTE (TERM_STR(KS_CTE)) // end of "raw" mode |
| 174 | #define T_BC (TERM_STR(KS_BC)) // backspace character |
| 175 | #define T_CCS (TERM_STR(KS_CCS)) // cur is relative to scroll region |
| 176 | #define T_CCO (TERM_STR(KS_CCO)) // number of colors |
| 177 | #define T_CSF (TERM_STR(KS_CSF)) // set foreground color |
| 178 | #define T_CSB (TERM_STR(KS_CSB)) // set background color |
| 179 | #define T_XS (TERM_STR(KS_XS)) // standout not erased by overwriting |
| 180 | #define T_XN (TERM_STR(KS_XN)) // newline glitch |
| 181 | #define T_MB (TERM_STR(KS_MB)) // blink mode |
| 182 | #define T_CAF (TERM_STR(KS_CAF)) // set foreground color (ANSI) |
| 183 | #define T_CAB (TERM_STR(KS_CAB)) // set background color (ANSI) |
Bram Moolenaar | e023e88 | 2020-05-31 16:42:30 +0200 | [diff] [blame] | 184 | #define T_CAU (TERM_STR(KS_CAU)) // set underline color (ANSI) |
Bram Moolenaar | 9bf703d | 2019-11-30 19:44:38 +0100 | [diff] [blame] | 185 | #define T_LE (TERM_STR(KS_LE)) // cursor left |
| 186 | #define T_ND (TERM_STR(KS_ND)) // cursor right |
| 187 | #define T_CIS (TERM_STR(KS_CIS)) // set icon text start |
| 188 | #define T_CIE (TERM_STR(KS_CIE)) // set icon text end |
| 189 | #define T_TS (TERM_STR(KS_TS)) // set window title start |
| 190 | #define T_FS (TERM_STR(KS_FS)) // set window title end |
| 191 | #define T_CSC (TERM_STR(KS_CSC)) // set cursor color start |
| 192 | #define T_CEC (TERM_STR(KS_CEC)) // set cursor color end |
| 193 | #define T_CWP (TERM_STR(KS_CWP)) // set window position |
| 194 | #define T_CGP (TERM_STR(KS_CGP)) // get window position |
| 195 | #define T_CWS (TERM_STR(KS_CWS)) // window size |
| 196 | #define T_CSI (TERM_STR(KS_CSI)) // start insert mode |
| 197 | #define T_CEI (TERM_STR(KS_CEI)) // end insert mode |
| 198 | #define T_CSR (TERM_STR(KS_CSR)) // start replace mode |
| 199 | #define T_CRV (TERM_STR(KS_CRV)) // request version string |
| 200 | #define T_RFG (TERM_STR(KS_RFG)) // request foreground RGB |
| 201 | #define T_RBG (TERM_STR(KS_RBG)) // request background RGB |
| 202 | #define T_OP (TERM_STR(KS_OP)) // original color pair |
| 203 | #define T_U7 (TERM_STR(KS_U7)) // request cursor position |
| 204 | #define T_8F (TERM_STR(KS_8F)) // set foreground color (RGB) |
| 205 | #define T_8B (TERM_STR(KS_8B)) // set background color (RGB) |
Bram Moolenaar | e023e88 | 2020-05-31 16:42:30 +0200 | [diff] [blame] | 206 | #define T_8U (TERM_STR(KS_8U)) // set underline color (RGB) |
Bram Moolenaar | 9bf703d | 2019-11-30 19:44:38 +0100 | [diff] [blame] | 207 | #define T_BE (TERM_STR(KS_CBE)) // enable bracketed paste mode |
| 208 | #define T_BD (TERM_STR(KS_CBD)) // disable bracketed paste mode |
| 209 | #define T_PS (TERM_STR(KS_CPS)) // start of bracketed paste |
| 210 | #define T_PE (TERM_STR(KS_CPE)) // end of bracketed paste |
| 211 | #define T_CST (TERM_STR(KS_CST)) // save window title |
| 212 | #define T_CRT (TERM_STR(KS_CRT)) // restore window title |
| 213 | #define T_SSI (TERM_STR(KS_SSI)) // save icon text |
| 214 | #define T_SRI (TERM_STR(KS_SRI)) // restore icon text |
Bram Moolenaar | 071d427 | 2004-06-13 20:20:40 +0000 | [diff] [blame] | 215 | |
Bram Moolenaar | 26e8644 | 2020-05-17 14:06:16 +0200 | [diff] [blame] | 216 | typedef enum { |
| 217 | TMODE_COOK, // terminal mode for external cmds and Ex mode |
| 218 | TMODE_SLEEP, // terminal mode for sleeping (cooked but no echo) |
| 219 | TMODE_RAW, // terminal mode for Normal and Insert mode |
| 220 | TMODE_UNKNOWN // after executing a shell |
| 221 | } tmode_T; |