1 /*
2  * Copyright (c) 2018 Nordic Semiconductor ASA
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef SHELL_VT100_H__
8 #define SHELL_VT100_H__
9 
10 #define SHELL_VT100_ASCII_ESC		(0x1b)
11 #define SHELL_VT100_ASCII_DEL		(0x7F)
12 #define SHELL_VT100_ASCII_BSPACE	(0x08)
13 #define SHELL_VT100_ASCII_CTRL_A	(0x01)
14 #define SHELL_VT100_ASCII_CTRL_B	(0x02)
15 #define SHELL_VT100_ASCII_CTRL_C	(0x03)
16 #define SHELL_VT100_ASCII_CTRL_D	(0x04)
17 #define SHELL_VT100_ASCII_CTRL_E	(0x05)
18 #define SHELL_VT100_ASCII_CTRL_F	(0x06)
19 #define SHELL_VT100_ASCII_CTRL_K	(0x0B)
20 #define SHELL_VT100_ASCII_CTRL_L	(0x0C)
21 #define SHELL_VT100_ASCII_CTRL_N	(0x0E)
22 #define SHELL_VT100_ASCII_CTRL_P	(0x10)
23 #define SHELL_VT100_ASCII_CTRL_T	(0x14)
24 #define SHELL_VT100_ASCII_CTRL_U	(0x15)
25 #define SHELL_VT100_ASCII_CTRL_W	(0x17)
26 #define SHELL_VT100_ASCII_ALT_B		(0x62)
27 #define SHELL_VT100_ASCII_ALT_F		(0x66)
28 #define SHELL_VT100_ASCII_ALT_R		(0x72)
29 
30 /* Set new line mode */
31 #define SHELL_VT100_SETNL		"\e[20h\0"
32 /* Set cursor key to application */
33 #define SHELL_VT100_SETAPPL		"\e[?1h\0"
34 /* Set number of columns to 132 */
35 #define SHELL_VT100_SETCOL_132		"\e[?3h\0"
36 /* Set smooth scrolling */
37 #define SHELL_VT100_SETSMOOTH		"\e[?4h\0"
38 /* Set reverse video on screen */
39 #define SHELL_VT100_SETREVSCRN		"\e[?5h\0"
40 /* Set origin to relative */
41 #define SHELL_VT100_SETORGREL		"\e[?6h\0"
42 /* Set auto-wrap mode */
43 #define SHELL_VT100_SETWRAP_ON		"\e[?7h\0"
44 /* Set auto-wrap mode */
45 #define SHELL_VT100_SETWRAP_OFF		"\e[?7l\0"
46 /* Set auto-repeat mode */
47 #define SHELL_VT100_SETREP		"\e[?8h\0"
48 /* Set interlacing mode */
49 #define SHELL_VT100_SETINTER		"\e[?9h\0"
50 /* Set line feed mode */
51 #define SHELL_VT100_SETLF		"\e[20l\0"
52 /* Set cursor key to cursor */
53 #define SHELL_VT100_SETCURSOR		"\e[?1l\0"
54 /* Set VT52 (versus ANSI) */
55 #define SHELL_VT100_SETVT52		"\e[?2l\0"
56 /* Set number of columns to 80 */
57 #define SHELL_VT100_SETCOL_80		"\e[?3l\0"
58 /* Set jump scrolling */
59 #define SHELL_VT100_SETJUMP		"\e[?4l\0"
60 /* Set normal video on screen */
61 #define SHELL_VT100_SETNORMSCRN		"\e[?5l\0"
62 /* Set origin to absolute */
63 #define SHELL_VT100_SETORGABS		"\e[?6l\0"
64 /* Reset auto-wrap mode */
65 #define SHELL_VT100_RESETWRAP		"\e[?7l\0"
66 /* Reset auto-repeat mode */
67 #define SHELL_VT100_RESETREP		"\e[?8l\0"
68 /* Reset interlacing mode */
69 #define SHELL_VT100_RESETINTER		"\e[?9l\0"
70 /* Set alternate keypad mode */
71 #define SHELL_VT100_ALTKEYPAD		"\e=\0"
72 /* Set numeric keypad mode */
73 #define SHELL_VT100_NUMKEYPAD		"\e>\0"
74 /* Set United Kingdom G0 character set */
75 #define SHELL_VT100_SETUKG0		"\e(A\0"
76 /* Set United Kingdom G1 character set */
77 #define SHELL_VT100_SETUKG1		"\e)A\0"
78 /* Set United States G0 character set */
79 #define SHELL_VT100_SETUSG0		"\e(B\0"
80 /* Set United States G1 character set */
81 #define SHELL_VT100_SETUSG1		"\e)B\0"
82 /* Set G0 special chars. & line set */
83 #define SHELL_VT100_SETSPECG0		"\e(0\0"
84 /* Set G1 special chars. & line set */
85 #define SHELL_VT100_SETSPECG1		"\e)0\0"
86 /* Set G0 alternate character ROM */
87 #define SHELL_VT100_SETALTG0		"\e(1\0"
88 /* Set G1 alternate character ROM */
89 #define SHELL_VT100_SETALTG1		"\e)1\0"
90 /* Set G0 alt char ROM and spec. graphics */
91 #define SHELL_VT100_SETALTSPECG0	"\e(2\0"
92 /* Set G1 alt char ROM and spec. graphics */
93 #define SHELL_VT100_SETALTSPECG1	"\e)2\0"
94 /* Set single shift 2 */
95 #define SHELL_VT100_SETSS2		"\eN\0"
96 /* Set single shift 3 */
97 #define SHELL_VT100_SETSS3		"\eO\0"
98 /* Turn off character attributes */
99 #define SHELL_VT100_MODESOFF		"\e[m\0"
100 /* Turn off character attributes */
101 #define SHELL_VT100_MODESOFF_		"\e[0m\0"
102 /* Turn bold mode on */
103 #define SHELL_VT100_BOLD		"\e[1m\0"
104 /* Turn low intensity mode on */
105 #define SHELL_VT100_LOWINT		"\e[2m\0"
106 /* Turn underline mode on */
107 #define SHELL_VT100_UNDERLINE		"\e[4m\0"
108 /* Turn blinking mode on */
109 #define SHELL_VT100_BLINK		"\e[5m\0"
110 /* Turn reverse video on */
111 #define SHELL_VT100_REVERSE		"\e[7m\0"
112 /* Turn invisible text mode on */
113 #define SHELL_VT100_INVISIBLE		"\e[8m\0"
114 /* Move cursor to upper left corner */
115 #define SHELL_VT100_CURSORHOME		"\e[H\0"
116 /* Move cursor to upper left corner */
117 #define SHELL_VT100_CURSORHOME_		"\e[;H\0"
118 /* Move cursor to upper left corner */
119 #define SHELL_VT100_HVHOME		"\e[f\0"
120 /* Move cursor to upper left corner */
121 #define SHELL_VT100_HVHOME_		"\e[;f\0"
122 /* Move/scroll window up one line */
123 #define SHELL_VT100_INDEX		"\eD\0"
124 /* Move/scroll window down one line */
125 #define SHELL_VT100_REVINDEX		"\eM\0"
126 /* Move to next line */
127 #define SHELL_VT100_NEXTLINE		"\eE\0"
128 /* Save cursor position and attributes */
129 #define SHELL_VT100_SAVECURSOR		"\e7\0"
130 /* Restore cursor position and attribute */
131 #define SHELL_VT100_RESTORECURSOR	"\e8\0"
132 /* Set a tab at the current column */
133 #define SHELL_VT100_TABSET		"\eH\0"
134 /* Clear a tab at the current column */
135 #define SHELL_VT100_TABCLR		"\e[g\0"
136 /* Clear a tab at the current column */
137 #define SHELL_VT100_TABCLR_		"\e[0g\0"
138 /* Clear all tabs */
139 #define SHELL_VT100_TABCLRALL		"\e[3g\0"
140 /* Double-height letters, top half */
141 #define SHELL_VT100_DHTOP		"\e#3\0"
142 /* Double-height letters, bottom hal */
143 #define SHELL_VT100_DHBOT		"\e#4\0"
144 /* Single width, single height letters */
145 #define SHELL_VT100_SWSH		"\e#5\0"
146 /* Double width, single height letters */
147 #define SHELL_VT100_DWSH		"\e#6\0"
148 /* Clear line from cursor right */
149 #define SHELL_VT100_CLEAREOL		"\e[K\0"
150 /* Clear line from cursor right */
151 #define SHELL_VT100_CLEAREOL_		"\e[0K\0"
152 /* Clear line from cursor left */
153 #define SHELL_VT100_CLEARBOL		"\e[1K\0"
154 /* Clear entire line */
155 #define SHELL_VT100_CLEARLINE		"\e[2K\0"
156 /* Clear screen from cursor down */
157 #define SHELL_VT100_CLEAREOS		"\e[J\0"
158 /* Clear screen from cursor down */
159 #define SHELL_VT100_CLEAREOS_		"\e[0J\0"
160 /* Clear screen from cursor up */
161 #define SHELL_VT100_CLEARBOS		"\e[1J\0"
162 /* Clear entire screen */
163 #define SHELL_VT100_CLEARSCREEN		"\e[2J\0"
164 /* Device status report */
165 #define SHELL_VT100_DEVSTAT		"\e5n\0"
166 /* Response: terminal is OK */
167 #define SHELL_VT100_TERMOK		"\e0n\0"
168 /* Response: terminal is OK */
169 #define SHELL_VT100_TERMNOK		"\e3n\0"
170 /* Get cursor position */
171 #define SHELL_VT100_GETCURSOR		"\e[6n\0"
172 /* Response: cursor is at v,h */
173 #define SHELL_VT100_CURSORPOSAT		"\e, (v);', (h)R\0"
174 /* Identify what terminal type */
175 #define SHELL_VT100_IDENT		"\e[c\0"
176 /* Identify what terminal type */
177 #define SHELL_VT100_IDENT_		"\e[0c\0"
178 /* Response: terminal type code n */
179 #define SHELL_VT100_GETTYPE		"\e[?1;', (n)0c\0"
180 /*Reset terminal to initial state */
181 #define SHELL_VT100_RESET		"\ec\0"
182 /* Screen alignment display */
183 #define SHELL_VT100_ALIGN		"\e#8\0"
184 /* Confidence power up test */
185 #define SHELL_VT100_TESTPU		"\e[2;1y\0"
186 /* Confidence loopback test */
187 #define SHELL_VT100_TESTLB		"\e[2;2y\0"
188 /* Repeat power up test */
189 #define SHELL_VT100_TESTPUREP		"\e[2;9y\0"
190 /* Repeat loopback test */
191 #define SHELL_VT100_TESTLBREP		"\e[2;10y\0"
192 /* Turn off all four leds */
193 #define SHELL_VT100_LEDSOFF		"\e[0q\0"
194 /* Turn on LED #1 */
195 #define SHELL_VT100_LED1		"\e[1q\0"
196 /* Turn on LED #2 */
197 #define SHELL_VT100_LED2		"\e[2q\0"
198 /* Turn on LED #3 */
199 #define SHELL_VT100_LED3		"\e[3q\0"
200 /* Turn on LED #4 */
201 #define SHELL_VT100_LED4		"\e[4q\0"
202 
203 /* Function Keys */
204 #define SHELL_VT100_PF1			"\eOP\0"
205 #define SHELL_VT100_PF2			"\eOQ\0"
206 #define SHELL_VT100_PF3			"\eOR\0"
207 #define SHELL_VT100_PF4			"\eOS\0"
208 
209 /* Arrow keys */
210 #define SHELL_VT100_UP_RESET		"\eA\0"
211 #define SHELL_VT100_UP_SET		"\eOA\0"
212 #define SHELL_VT100_DOWN_RESET		"\eB\0"
213 #define SHELL_VT100_DOWN_SET		"\eOB\0"
214 #define SHELL_VT100_RIGHT_RESET		"\eC\0"
215 #define SHELL_VT100_RIGHT_SET		"\eOC\0"
216 #define SHELL_VT100_LEFT_RESET		"\eD\0"
217 #define SHELL_VT100_LEFT_SET		"\eOD\0"
218 
219 /* Numeric Keypad Keys */
220 #define SHELL_VT100_NUMERIC_0		"0\0"
221 #define SHELL_VT100_ALT_0		"\eOp\0"
222 #define SHELL_VT100_NUMERIC_1		"1\0"
223 #define SHELL_VT100_ALT_1		"\eOq\0"
224 #define SHELL_VT100_NUMERIC_2		"2\0"
225 #define SHELL_VT100_ALT_2		"\eOr\0"
226 #define SHELL_VT100_NUMERIC_3		"3\0"
227 #define SHELL_VT100_ALT_3		"\eOs\0"
228 #define SHELL_VT100_NUMERIC_4		"4\0"
229 #define SHELL_VT100_ALT_4		"\eOt\0"
230 #define SHELL_VT100_NUMERIC_5		"5\0"
231 #define SHELL_VT100_ALT_5		"\eOu\0"
232 #define SHELL_VT100_NUMERIC_6		"6\0"
233 #define SHELL_VT100_ALT_6		"\eOv\0"
234 #define SHELL_VT100_NUMERIC_7		"7\0"
235 #define SHELL_VT100_ALT_7		"\eOw\0"
236 #define SHELL_VT100_NUMERIC_8		"8\0"
237 #define SHELL_VT100_ALT_8		"\eOx\0"
238 #define SHELL_VT100_NUMERIC_9		"9\0"
239 #define SHELL_VT100_ALT_9		"\eOy\0"
240 #define SHELL_VT100_NUMERIC_MINUS	"-\0"
241 #define SHELL_VT100_ALT_MINUS		"\eOm\0"
242 #define SHELL_VT100_NUMERIC_COMMA	",\0"
243 #define SHELL_VT100_ALT_COMMA		"\eOl\0"
244 #define SHELL_VT100_NUMERIC_ENTER	ASCII_CR
245 #define SHELL_VT100_NUMERIC_PERIOD	".\0"
246 #define SHELL_VT100_ALT_PERIOD		"\eOn\0"
247 #define SHELL_VT100_ALT_ENTER		"\eOM\0"
248 
249 #endif /* SHELL_VT100_H__ */
250