1 | #ifndef _EFI_CON_H |
---|
2 | #define _EFI_CON_H |
---|
3 | |
---|
4 | /*++ |
---|
5 | |
---|
6 | Copyright (c) 1998 Intel Corporation |
---|
7 | |
---|
8 | Module Name: |
---|
9 | |
---|
10 | eficon.h |
---|
11 | |
---|
12 | Abstract: |
---|
13 | |
---|
14 | EFI console protocols |
---|
15 | |
---|
16 | |
---|
17 | |
---|
18 | Revision History |
---|
19 | |
---|
20 | --*/ |
---|
21 | |
---|
22 | // |
---|
23 | // Text output protocol |
---|
24 | // |
---|
25 | |
---|
26 | #define SIMPLE_TEXT_OUTPUT_PROTOCOL \ |
---|
27 | { 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
---|
28 | |
---|
29 | INTERFACE_DECL(_SIMPLE_TEXT_OUTPUT_INTERFACE); |
---|
30 | |
---|
31 | typedef |
---|
32 | EFI_STATUS |
---|
33 | (EFIAPI *EFI_TEXT_RESET) ( |
---|
34 | IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
---|
35 | IN BOOLEAN ExtendedVerification |
---|
36 | ); |
---|
37 | |
---|
38 | typedef |
---|
39 | EFI_STATUS |
---|
40 | (EFIAPI *EFI_TEXT_OUTPUT_STRING) ( |
---|
41 | IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
---|
42 | IN CHAR16 *String |
---|
43 | ); |
---|
44 | |
---|
45 | typedef |
---|
46 | EFI_STATUS |
---|
47 | (EFIAPI *EFI_TEXT_TEST_STRING) ( |
---|
48 | IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
---|
49 | IN CHAR16 *String |
---|
50 | ); |
---|
51 | |
---|
52 | typedef |
---|
53 | EFI_STATUS |
---|
54 | (EFIAPI *EFI_TEXT_QUERY_MODE) ( |
---|
55 | IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
---|
56 | IN UINTN ModeNumber, |
---|
57 | OUT UINTN *Columns, |
---|
58 | OUT UINTN *Rows |
---|
59 | ); |
---|
60 | |
---|
61 | typedef |
---|
62 | EFI_STATUS |
---|
63 | (EFIAPI *EFI_TEXT_SET_MODE) ( |
---|
64 | IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
---|
65 | IN UINTN ModeNumber |
---|
66 | ); |
---|
67 | |
---|
68 | typedef |
---|
69 | EFI_STATUS |
---|
70 | (EFIAPI *EFI_TEXT_SET_ATTRIBUTE) ( |
---|
71 | IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
---|
72 | IN UINTN Attribute |
---|
73 | ); |
---|
74 | |
---|
75 | #define EFI_BLACK 0x00 |
---|
76 | #define EFI_BLUE 0x01 |
---|
77 | #define EFI_GREEN 0x02 |
---|
78 | #define EFI_CYAN (EFI_BLUE | EFI_GREEN) |
---|
79 | #define EFI_RED 0x04 |
---|
80 | #define EFI_MAGENTA (EFI_BLUE | EFI_RED) |
---|
81 | #define EFI_BROWN (EFI_GREEN | EFI_RED) |
---|
82 | #define EFI_LIGHTGRAY (EFI_BLUE | EFI_GREEN | EFI_RED) |
---|
83 | #define EFI_BRIGHT 0x08 |
---|
84 | #define EFI_DARKGRAY (EFI_BRIGHT) |
---|
85 | #define EFI_LIGHTBLUE (EFI_BLUE | EFI_BRIGHT) |
---|
86 | #define EFI_LIGHTGREEN (EFI_GREEN | EFI_BRIGHT) |
---|
87 | #define EFI_LIGHTCYAN (EFI_CYAN | EFI_BRIGHT) |
---|
88 | #define EFI_LIGHTRED (EFI_RED | EFI_BRIGHT) |
---|
89 | #define EFI_LIGHTMAGENTA (EFI_MAGENTA | EFI_BRIGHT) |
---|
90 | #define EFI_YELLOW (EFI_BROWN | EFI_BRIGHT) |
---|
91 | #define EFI_WHITE (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT) |
---|
92 | |
---|
93 | #define EFI_TEXT_ATTR(f,b) ((f) | ((b) << 4)) |
---|
94 | |
---|
95 | #define EFI_BACKGROUND_BLACK 0x00 |
---|
96 | #define EFI_BACKGROUND_BLUE 0x10 |
---|
97 | #define EFI_BACKGROUND_GREEN 0x20 |
---|
98 | #define EFI_BACKGROUND_CYAN (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN) |
---|
99 | #define EFI_BACKGROUND_RED 0x40 |
---|
100 | #define EFI_BACKGROUND_MAGENTA (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED) |
---|
101 | #define EFI_BACKGROUND_BROWN (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED) |
---|
102 | #define EFI_BACKGROUND_LIGHTGRAY (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED) |
---|
103 | |
---|
104 | |
---|
105 | typedef |
---|
106 | EFI_STATUS |
---|
107 | (EFIAPI *EFI_TEXT_CLEAR_SCREEN) ( |
---|
108 | IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This |
---|
109 | ); |
---|
110 | |
---|
111 | typedef |
---|
112 | EFI_STATUS |
---|
113 | (EFIAPI *EFI_TEXT_SET_CURSOR_POSITION) ( |
---|
114 | IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
---|
115 | IN UINTN Column, |
---|
116 | IN UINTN Row |
---|
117 | ); |
---|
118 | |
---|
119 | typedef |
---|
120 | EFI_STATUS |
---|
121 | (EFIAPI *EFI_TEXT_ENABLE_CURSOR) ( |
---|
122 | IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
---|
123 | IN BOOLEAN Enable |
---|
124 | ); |
---|
125 | |
---|
126 | typedef struct { |
---|
127 | INT32 MaxMode; |
---|
128 | // current settings |
---|
129 | INT32 Mode; |
---|
130 | INT32 Attribute; |
---|
131 | INT32 CursorColumn; |
---|
132 | INT32 CursorRow; |
---|
133 | BOOLEAN CursorVisible; |
---|
134 | } SIMPLE_TEXT_OUTPUT_MODE; |
---|
135 | |
---|
136 | typedef struct _SIMPLE_TEXT_OUTPUT_INTERFACE { |
---|
137 | EFI_TEXT_RESET Reset; |
---|
138 | |
---|
139 | EFI_TEXT_OUTPUT_STRING OutputString; |
---|
140 | EFI_TEXT_TEST_STRING TestString; |
---|
141 | |
---|
142 | EFI_TEXT_QUERY_MODE QueryMode; |
---|
143 | EFI_TEXT_SET_MODE SetMode; |
---|
144 | EFI_TEXT_SET_ATTRIBUTE SetAttribute; |
---|
145 | |
---|
146 | EFI_TEXT_CLEAR_SCREEN ClearScreen; |
---|
147 | EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition; |
---|
148 | EFI_TEXT_ENABLE_CURSOR EnableCursor; |
---|
149 | |
---|
150 | // Current mode |
---|
151 | SIMPLE_TEXT_OUTPUT_MODE *Mode; |
---|
152 | } SIMPLE_TEXT_OUTPUT_INTERFACE; |
---|
153 | |
---|
154 | // |
---|
155 | // Define's for required EFI Unicode Box Draw character |
---|
156 | // |
---|
157 | |
---|
158 | #define BOXDRAW_HORIZONTAL 0x2500 |
---|
159 | #define BOXDRAW_VERTICAL 0x2502 |
---|
160 | #define BOXDRAW_DOWN_RIGHT 0x250c |
---|
161 | #define BOXDRAW_DOWN_LEFT 0x2510 |
---|
162 | #define BOXDRAW_UP_RIGHT 0x2514 |
---|
163 | #define BOXDRAW_UP_LEFT 0x2518 |
---|
164 | #define BOXDRAW_VERTICAL_RIGHT 0x251c |
---|
165 | #define BOXDRAW_VERTICAL_LEFT 0x2524 |
---|
166 | #define BOXDRAW_DOWN_HORIZONTAL 0x252c |
---|
167 | #define BOXDRAW_UP_HORIZONTAL 0x2534 |
---|
168 | #define BOXDRAW_VERTICAL_HORIZONTAL 0x253c |
---|
169 | |
---|
170 | #define BOXDRAW_DOUBLE_HORIZONTAL 0x2550 |
---|
171 | #define BOXDRAW_DOUBLE_VERTICAL 0x2551 |
---|
172 | #define BOXDRAW_DOWN_RIGHT_DOUBLE 0x2552 |
---|
173 | #define BOXDRAW_DOWN_DOUBLE_RIGHT 0x2553 |
---|
174 | #define BOXDRAW_DOUBLE_DOWN_RIGHT 0x2554 |
---|
175 | |
---|
176 | #define BOXDRAW_DOWN_LEFT_DOUBLE 0x2555 |
---|
177 | #define BOXDRAW_DOWN_DOUBLE_LEFT 0x2556 |
---|
178 | #define BOXDRAW_DOUBLE_DOWN_LEFT 0x2557 |
---|
179 | |
---|
180 | #define BOXDRAW_UP_RIGHT_DOUBLE 0x2558 |
---|
181 | #define BOXDRAW_UP_DOUBLE_RIGHT 0x2559 |
---|
182 | #define BOXDRAW_DOUBLE_UP_RIGHT 0x255a |
---|
183 | |
---|
184 | #define BOXDRAW_UP_LEFT_DOUBLE 0x255b |
---|
185 | #define BOXDRAW_UP_DOUBLE_LEFT 0x255c |
---|
186 | #define BOXDRAW_DOUBLE_UP_LEFT 0x255d |
---|
187 | |
---|
188 | #define BOXDRAW_VERTICAL_RIGHT_DOUBLE 0x255e |
---|
189 | #define BOXDRAW_VERTICAL_DOUBLE_RIGHT 0x255f |
---|
190 | #define BOXDRAW_DOUBLE_VERTICAL_RIGHT 0x2560 |
---|
191 | |
---|
192 | #define BOXDRAW_VERTICAL_LEFT_DOUBLE 0x2561 |
---|
193 | #define BOXDRAW_VERTICAL_DOUBLE_LEFT 0x2562 |
---|
194 | #define BOXDRAW_DOUBLE_VERTICAL_LEFT 0x2563 |
---|
195 | |
---|
196 | #define BOXDRAW_DOWN_HORIZONTAL_DOUBLE 0x2564 |
---|
197 | #define BOXDRAW_DOWN_DOUBLE_HORIZONTAL 0x2565 |
---|
198 | #define BOXDRAW_DOUBLE_DOWN_HORIZONTAL 0x2566 |
---|
199 | |
---|
200 | #define BOXDRAW_UP_HORIZONTAL_DOUBLE 0x2567 |
---|
201 | #define BOXDRAW_UP_DOUBLE_HORIZONTAL 0x2568 |
---|
202 | #define BOXDRAW_DOUBLE_UP_HORIZONTAL 0x2569 |
---|
203 | |
---|
204 | #define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE 0x256a |
---|
205 | #define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL 0x256b |
---|
206 | #define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL 0x256c |
---|
207 | |
---|
208 | // |
---|
209 | // EFI Required Block Elements Code Chart |
---|
210 | // |
---|
211 | |
---|
212 | #define BLOCKELEMENT_FULL_BLOCK 0x2588 |
---|
213 | #define BLOCKELEMENT_LIGHT_SHADE 0x2591 |
---|
214 | // |
---|
215 | // EFI Required Geometric Shapes Code Chart |
---|
216 | // |
---|
217 | |
---|
218 | #define GEOMETRICSHAPE_UP_TRIANGLE 0x25b2 |
---|
219 | #define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba |
---|
220 | #define GEOMETRICSHAPE_DOWN_TRIANGLE 0x25bc |
---|
221 | #define GEOMETRICSHAPE_LEFT_TRIANGLE 0x25c4 |
---|
222 | |
---|
223 | // |
---|
224 | // EFI Required Arrow shapes |
---|
225 | // |
---|
226 | |
---|
227 | #define ARROW_UP 0x2191 |
---|
228 | #define ARROW_DOWN 0x2193 |
---|
229 | |
---|
230 | // |
---|
231 | // Text input protocol |
---|
232 | // |
---|
233 | |
---|
234 | #define SIMPLE_TEXT_INPUT_PROTOCOL \ |
---|
235 | { 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
---|
236 | |
---|
237 | INTERFACE_DECL(_SIMPLE_INPUT_INTERFACE); |
---|
238 | |
---|
239 | typedef struct { |
---|
240 | UINT16 ScanCode; |
---|
241 | CHAR16 UnicodeChar; |
---|
242 | } EFI_INPUT_KEY; |
---|
243 | |
---|
244 | // |
---|
245 | // Baseline unicode control chars |
---|
246 | // |
---|
247 | |
---|
248 | #define CHAR_NULL 0x0000 |
---|
249 | #define CHAR_BACKSPACE 0x0008 |
---|
250 | #define CHAR_TAB 0x0009 |
---|
251 | #define CHAR_LINEFEED 0x000A |
---|
252 | #define CHAR_CARRIAGE_RETURN 0x000D |
---|
253 | |
---|
254 | // |
---|
255 | // Scan codes for base line keys |
---|
256 | // |
---|
257 | |
---|
258 | #define SCAN_NULL 0x0000 |
---|
259 | #define SCAN_UP 0x0001 |
---|
260 | #define SCAN_DOWN 0x0002 |
---|
261 | #define SCAN_RIGHT 0x0003 |
---|
262 | #define SCAN_LEFT 0x0004 |
---|
263 | #define SCAN_HOME 0x0005 |
---|
264 | #define SCAN_END 0x0006 |
---|
265 | #define SCAN_INSERT 0x0007 |
---|
266 | #define SCAN_DELETE 0x0008 |
---|
267 | #define SCAN_PAGE_UP 0x0009 |
---|
268 | #define SCAN_PAGE_DOWN 0x000A |
---|
269 | #define SCAN_F1 0x000B |
---|
270 | #define SCAN_F2 0x000C |
---|
271 | #define SCAN_F3 0x000D |
---|
272 | #define SCAN_F4 0x000E |
---|
273 | #define SCAN_F5 0x000F |
---|
274 | #define SCAN_F6 0x0010 |
---|
275 | #define SCAN_F7 0x0011 |
---|
276 | #define SCAN_F8 0x0012 |
---|
277 | #define SCAN_F9 0x0013 |
---|
278 | #define SCAN_F10 0x0014 |
---|
279 | #define SCAN_ESC 0x0017 |
---|
280 | |
---|
281 | typedef |
---|
282 | EFI_STATUS |
---|
283 | (EFIAPI *EFI_INPUT_RESET) ( |
---|
284 | IN struct _SIMPLE_INPUT_INTERFACE *This, |
---|
285 | IN BOOLEAN ExtendedVerification |
---|
286 | ); |
---|
287 | |
---|
288 | typedef |
---|
289 | EFI_STATUS |
---|
290 | (EFIAPI *EFI_INPUT_READ_KEY) ( |
---|
291 | IN struct _SIMPLE_INPUT_INTERFACE *This, |
---|
292 | OUT EFI_INPUT_KEY *Key |
---|
293 | ); |
---|
294 | |
---|
295 | typedef struct _SIMPLE_INPUT_INTERFACE { |
---|
296 | EFI_INPUT_RESET Reset; |
---|
297 | EFI_INPUT_READ_KEY ReadKeyStroke; |
---|
298 | EFI_EVENT WaitForKey; |
---|
299 | } SIMPLE_INPUT_INTERFACE; |
---|
300 | |
---|
301 | #endif |
---|
302 | |
---|