7 Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
8 This software and associated documentation (if any) is furnished
9 under a license and may only be used or copied in accordance
10 with the terms of the license. Except as permitted by such
11 license, no part of this software or documentation may be
12 reproduced, stored in a retrieval system, or transmitted in any
13 form or by any means without the express written consent of
31 // Text output protocol
34 #define SIMPLE_TEXT_OUTPUT_PROTOCOL \
35 { 0x387477c2, 0x69c7, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b }
37 INTERFACE_DECL(_SIMPLE_TEXT_OUTPUT_INTERFACE);
41 (EFIAPI *EFI_TEXT_RESET) (
42 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
43 IN BOOLEAN ExtendedVerification
48 (EFIAPI *EFI_TEXT_OUTPUT_STRING) (
49 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
55 (EFIAPI *EFI_TEXT_TEST_STRING) (
56 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
62 (EFIAPI *EFI_TEXT_QUERY_MODE) (
63 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
71 (EFIAPI *EFI_TEXT_SET_MODE) (
72 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
78 (EFIAPI *EFI_TEXT_SET_ATTRIBUTE) (
79 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
83 #define EFI_BLACK 0x00
85 #define EFI_GREEN 0x02
86 #define EFI_CYAN (EFI_BLUE | EFI_GREEN)
88 #define EFI_MAGENTA (EFI_BLUE | EFI_RED)
89 #define EFI_BROWN (EFI_GREEN | EFI_RED)
90 #define EFI_LIGHTGRAY (EFI_BLUE | EFI_GREEN | EFI_RED)
91 #define EFI_BRIGHT 0x08
92 #define EFI_DARKGRAY (EFI_BRIGHT)
93 #define EFI_LIGHTBLUE (EFI_BLUE | EFI_BRIGHT)
94 #define EFI_LIGHTGREEN (EFI_GREEN | EFI_BRIGHT)
95 #define EFI_LIGHTCYAN (EFI_CYAN | EFI_BRIGHT)
96 #define EFI_LIGHTRED (EFI_RED | EFI_BRIGHT)
97 #define EFI_LIGHTMAGENTA (EFI_MAGENTA | EFI_BRIGHT)
98 #define EFI_YELLOW (EFI_BROWN | EFI_BRIGHT)
99 #define EFI_WHITE (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT)
101 #define EFI_TEXT_ATTR(f,b) ((f) | ((b) << 4))
103 #define EFI_BACKGROUND_BLACK 0x00
104 #define EFI_BACKGROUND_BLUE 0x10
105 #define EFI_BACKGROUND_GREEN 0x20
106 #define EFI_BACKGROUND_CYAN (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN)
107 #define EFI_BACKGROUND_RED 0x40
108 #define EFI_BACKGROUND_MAGENTA (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED)
109 #define EFI_BACKGROUND_BROWN (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
110 #define EFI_BACKGROUND_LIGHTGRAY (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
115 (EFIAPI *EFI_TEXT_CLEAR_SCREEN) (
116 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This
121 (EFIAPI *EFI_TEXT_SET_CURSOR_POSITION) (
122 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
129 (EFIAPI *EFI_TEXT_ENABLE_CURSOR) (
130 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
141 BOOLEAN CursorVisible;
142 } SIMPLE_TEXT_OUTPUT_MODE;
144 typedef struct _SIMPLE_TEXT_OUTPUT_INTERFACE {
145 EFI_TEXT_RESET Reset;
147 EFI_TEXT_OUTPUT_STRING OutputString;
148 EFI_TEXT_TEST_STRING TestString;
150 EFI_TEXT_QUERY_MODE QueryMode;
151 EFI_TEXT_SET_MODE SetMode;
152 EFI_TEXT_SET_ATTRIBUTE SetAttribute;
154 EFI_TEXT_CLEAR_SCREEN ClearScreen;
155 EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition;
156 EFI_TEXT_ENABLE_CURSOR EnableCursor;
159 SIMPLE_TEXT_OUTPUT_MODE *Mode;
160 } SIMPLE_TEXT_OUTPUT_INTERFACE;
163 // Define's for required EFI Unicode Box Draw character
166 #define BOXDRAW_HORIZONTAL 0x2500
167 #define BOXDRAW_VERTICAL 0x2502
168 #define BOXDRAW_DOWN_RIGHT 0x250c
169 #define BOXDRAW_DOWN_LEFT 0x2510
170 #define BOXDRAW_UP_RIGHT 0x2514
171 #define BOXDRAW_UP_LEFT 0x2518
172 #define BOXDRAW_VERTICAL_RIGHT 0x251c
173 #define BOXDRAW_VERTICAL_LEFT 0x2524
174 #define BOXDRAW_DOWN_HORIZONTAL 0x252c
175 #define BOXDRAW_UP_HORIZONTAL 0x2534
176 #define BOXDRAW_VERTICAL_HORIZONTAL 0x253c
178 #define BOXDRAW_DOUBLE_HORIZONTAL 0x2550
179 #define BOXDRAW_DOUBLE_VERTICAL 0x2551
180 #define BOXDRAW_DOWN_RIGHT_DOUBLE 0x2552
181 #define BOXDRAW_DOWN_DOUBLE_RIGHT 0x2553
182 #define BOXDRAW_DOUBLE_DOWN_RIGHT 0x2554
184 #define BOXDRAW_DOWN_LEFT_DOUBLE 0x2555
185 #define BOXDRAW_DOWN_DOUBLE_LEFT 0x2556
186 #define BOXDRAW_DOUBLE_DOWN_LEFT 0x2557
188 #define BOXDRAW_UP_RIGHT_DOUBLE 0x2558
189 #define BOXDRAW_UP_DOUBLE_RIGHT 0x2559
190 #define BOXDRAW_DOUBLE_UP_RIGHT 0x255a
192 #define BOXDRAW_UP_LEFT_DOUBLE 0x255b
193 #define BOXDRAW_UP_DOUBLE_LEFT 0x255c
194 #define BOXDRAW_DOUBLE_UP_LEFT 0x255d
196 #define BOXDRAW_VERTICAL_RIGHT_DOUBLE 0x255e
197 #define BOXDRAW_VERTICAL_DOUBLE_RIGHT 0x255f
198 #define BOXDRAW_DOUBLE_VERTICAL_RIGHT 0x2560
200 #define BOXDRAW_VERTICAL_LEFT_DOUBLE 0x2561
201 #define BOXDRAW_VERTICAL_DOUBLE_LEFT 0x2562
202 #define BOXDRAW_DOUBLE_VERTICAL_LEFT 0x2563
204 #define BOXDRAW_DOWN_HORIZONTAL_DOUBLE 0x2564
205 #define BOXDRAW_DOWN_DOUBLE_HORIZONTAL 0x2565
206 #define BOXDRAW_DOUBLE_DOWN_HORIZONTAL 0x2566
208 #define BOXDRAW_UP_HORIZONTAL_DOUBLE 0x2567
209 #define BOXDRAW_UP_DOUBLE_HORIZONTAL 0x2568
210 #define BOXDRAW_DOUBLE_UP_HORIZONTAL 0x2569
212 #define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE 0x256a
213 #define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL 0x256b
214 #define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL 0x256c
217 // EFI Required Block Elements Code Chart
220 #define BLOCKELEMENT_FULL_BLOCK 0x2588
221 #define BLOCKELEMENT_LIGHT_SHADE 0x2591
223 // EFI Required Geometric Shapes Code Chart
226 #define GEOMETRICSHAPE_UP_TRIANGLE 0x25b2
227 #define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba
228 #define GEOMETRICSHAPE_DOWN_TRIANGLE 0x25bc
229 #define GEOMETRICSHAPE_LEFT_TRIANGLE 0x25c4
232 // EFI Required Arrow shapes
235 #define ARROW_UP 0x2191
236 #define ARROW_DOWN 0x2193
239 // Text input protocol
242 #define SIMPLE_TEXT_INPUT_PROTOCOL \
243 { 0x387477c1, 0x69c7, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b }
245 INTERFACE_DECL(_SIMPLE_INPUT_INTERFACE);
253 // Baseline unicode control chars
256 #define CHAR_NULL 0x0000
257 #define CHAR_BACKSPACE 0x0008
258 #define CHAR_TAB 0x0009
259 #define CHAR_LINEFEED 0x000A
260 #define CHAR_CARRIAGE_RETURN 0x000D
263 // Scan codes for base line keys
266 #define SCAN_NULL 0x0000
267 #define SCAN_UP 0x0001
268 #define SCAN_DOWN 0x0002
269 #define SCAN_RIGHT 0x0003
270 #define SCAN_LEFT 0x0004
271 #define SCAN_HOME 0x0005
272 #define SCAN_END 0x0006
273 #define SCAN_INSERT 0x0007
274 #define SCAN_DELETE 0x0008
275 #define SCAN_PAGE_UP 0x0009
276 #define SCAN_PAGE_DOWN 0x000A
277 #define SCAN_F1 0x000B
278 #define SCAN_F2 0x000C
279 #define SCAN_F3 0x000D
280 #define SCAN_F4 0x000E
281 #define SCAN_F5 0x000F
282 #define SCAN_F6 0x0010
283 #define SCAN_F7 0x0011
284 #define SCAN_F8 0x0012
285 #define SCAN_F9 0x0013
286 #define SCAN_F10 0x0014
287 #define SCAN_ESC 0x0017
291 (EFIAPI *EFI_INPUT_RESET) (
292 IN struct _SIMPLE_INPUT_INTERFACE *This,
293 IN BOOLEAN ExtendedVerification
298 (EFIAPI *EFI_INPUT_READ_KEY) (
299 IN struct _SIMPLE_INPUT_INTERFACE *This,
300 OUT EFI_INPUT_KEY *Key
303 typedef struct _SIMPLE_INPUT_INTERFACE {
304 EFI_INPUT_RESET Reset;
305 EFI_INPUT_READ_KEY ReadKeyStroke;
306 EFI_EVENT WaitForKey;
307 } SIMPLE_INPUT_INTERFACE;