2 * $FreeBSD: src/sys/boot/efi/include/eficon.h,v 1.2 2002/05/19 03:17:20 marcel Exp $
3 * $DragonFly: src/sys/boot/efi/include/eficon.h,v 1.1 2003/11/10 06:08:32 dillon Exp $
10 Copyright (c) 1998 Intel Corporation
27 * Text output protocol
30 #define SIMPLE_TEXT_OUTPUT_PROTOCOL \
31 { 0x387477c2, 0x69c7, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b }
33 INTERFACE_DECL(_SIMPLE_TEXT_OUTPUT_INTERFACE);
37 (EFIAPI *EFI_TEXT_RESET) (
38 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
39 IN BOOLEAN ExtendedVerification
44 (EFIAPI *EFI_TEXT_OUTPUT_STRING) (
45 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
51 (EFIAPI *EFI_TEXT_TEST_STRING) (
52 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
58 (EFIAPI *EFI_TEXT_QUERY_MODE) (
59 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
67 (EFIAPI *EFI_TEXT_SET_MODE) (
68 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
74 (EFIAPI *EFI_TEXT_SET_ATTRIBUTE) (
75 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
79 #define EFI_BLACK 0x00
81 #define EFI_GREEN 0x02
82 #define EFI_CYAN (EFI_BLUE | EFI_GREEN)
84 #define EFI_MAGENTA (EFI_BLUE | EFI_RED)
85 #define EFI_BROWN (EFI_GREEN | EFI_RED)
86 #define EFI_LIGHTGRAY (EFI_BLUE | EFI_GREEN | EFI_RED)
87 #define EFI_BRIGHT 0x08
88 #define EFI_DARKGRAY (EFI_BRIGHT)
89 #define EFI_LIGHTBLUE (EFI_BLUE | EFI_BRIGHT)
90 #define EFI_LIGHTGREEN (EFI_GREEN | EFI_BRIGHT)
91 #define EFI_LIGHTCYAN (EFI_CYAN | EFI_BRIGHT)
92 #define EFI_LIGHTRED (EFI_RED | EFI_BRIGHT)
93 #define EFI_LIGHTMAGENTA (EFI_MAGENTA | EFI_BRIGHT)
94 #define EFI_YELLOW (EFI_BROWN | EFI_BRIGHT)
95 #define EFI_WHITE (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT)
97 #define EFI_TEXT_ATTR(f,b) ((f) | ((b) << 4))
99 #define EFI_BACKGROUND_BLACK 0x00
100 #define EFI_BACKGROUND_BLUE 0x10
101 #define EFI_BACKGROUND_GREEN 0x20
102 #define EFI_BACKGROUND_CYAN (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN)
103 #define EFI_BACKGROUND_RED 0x40
104 #define EFI_BACKGROUND_MAGENTA (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED)
105 #define EFI_BACKGROUND_BROWN (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
106 #define EFI_BACKGROUND_LIGHTGRAY (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
111 (EFIAPI *EFI_TEXT_CLEAR_SCREEN) (
112 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This
117 (EFIAPI *EFI_TEXT_SET_CURSOR_POSITION) (
118 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
125 (EFIAPI *EFI_TEXT_ENABLE_CURSOR) (
126 IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This,
132 /* current settings */
137 BOOLEAN CursorVisible;
138 } SIMPLE_TEXT_OUTPUT_MODE;
140 typedef struct _SIMPLE_TEXT_OUTPUT_INTERFACE {
141 EFI_TEXT_RESET Reset;
143 EFI_TEXT_OUTPUT_STRING OutputString;
144 EFI_TEXT_TEST_STRING TestString;
146 EFI_TEXT_QUERY_MODE QueryMode;
147 EFI_TEXT_SET_MODE SetMode;
148 EFI_TEXT_SET_ATTRIBUTE SetAttribute;
150 EFI_TEXT_CLEAR_SCREEN ClearScreen;
151 EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition;
152 EFI_TEXT_ENABLE_CURSOR EnableCursor;
155 SIMPLE_TEXT_OUTPUT_MODE *Mode;
156 } SIMPLE_TEXT_OUTPUT_INTERFACE;
159 * Define's for required EFI Unicode Box Draw character
162 #define BOXDRAW_HORIZONTAL 0x2500
163 #define BOXDRAW_VERTICAL 0x2502
164 #define BOXDRAW_DOWN_RIGHT 0x250c
165 #define BOXDRAW_DOWN_LEFT 0x2510
166 #define BOXDRAW_UP_RIGHT 0x2514
167 #define BOXDRAW_UP_LEFT 0x2518
168 #define BOXDRAW_VERTICAL_RIGHT 0x251c
169 #define BOXDRAW_VERTICAL_LEFT 0x2524
170 #define BOXDRAW_DOWN_HORIZONTAL 0x252c
171 #define BOXDRAW_UP_HORIZONTAL 0x2534
172 #define BOXDRAW_VERTICAL_HORIZONTAL 0x253c
174 #define BOXDRAW_DOUBLE_HORIZONTAL 0x2550
175 #define BOXDRAW_DOUBLE_VERTICAL 0x2551
176 #define BOXDRAW_DOWN_RIGHT_DOUBLE 0x2552
177 #define BOXDRAW_DOWN_DOUBLE_RIGHT 0x2553
178 #define BOXDRAW_DOUBLE_DOWN_RIGHT 0x2554
180 #define BOXDRAW_DOWN_LEFT_DOUBLE 0x2555
181 #define BOXDRAW_DOWN_DOUBLE_LEFT 0x2556
182 #define BOXDRAW_DOUBLE_DOWN_LEFT 0x2557
184 #define BOXDRAW_UP_RIGHT_DOUBLE 0x2558
185 #define BOXDRAW_UP_DOUBLE_RIGHT 0x2559
186 #define BOXDRAW_DOUBLE_UP_RIGHT 0x255a
188 #define BOXDRAW_UP_LEFT_DOUBLE 0x255b
189 #define BOXDRAW_UP_DOUBLE_LEFT 0x255c
190 #define BOXDRAW_DOUBLE_UP_LEFT 0x255d
192 #define BOXDRAW_VERTICAL_RIGHT_DOUBLE 0x255e
193 #define BOXDRAW_VERTICAL_DOUBLE_RIGHT 0x255f
194 #define BOXDRAW_DOUBLE_VERTICAL_RIGHT 0x2560
196 #define BOXDRAW_VERTICAL_LEFT_DOUBLE 0x2561
197 #define BOXDRAW_VERTICAL_DOUBLE_LEFT 0x2562
198 #define BOXDRAW_DOUBLE_VERTICAL_LEFT 0x2563
200 #define BOXDRAW_DOWN_HORIZONTAL_DOUBLE 0x2564
201 #define BOXDRAW_DOWN_DOUBLE_HORIZONTAL 0x2565
202 #define BOXDRAW_DOUBLE_DOWN_HORIZONTAL 0x2566
204 #define BOXDRAW_UP_HORIZONTAL_DOUBLE 0x2567
205 #define BOXDRAW_UP_DOUBLE_HORIZONTAL 0x2568
206 #define BOXDRAW_DOUBLE_UP_HORIZONTAL 0x2569
208 #define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE 0x256a
209 #define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL 0x256b
210 #define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL 0x256c
213 * EFI Required Block Elements Code Chart
215 #define BLOCKELEMENT_FULL_BLOCK 0x2588
216 #define BLOCKELEMENT_LIGHT_SHADE 0x2591
219 * EFI Required Geometric Shapes Code Chart
221 #define GEOMETRICSHAPE_UP_TRIANGLE 0x25b2
222 #define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba
223 #define GEOMETRICSHAPE_DOWN_TRIANGLE 0x25bc
224 #define GEOMETRICSHAPE_LEFT_TRIANGLE 0x25c4
227 * EFI Required Arrow shapes
229 #define ARROW_UP 0x2191
230 #define ARROW_DOWN 0x2193
233 * Text input protocol
236 #define SIMPLE_TEXT_INPUT_PROTOCOL \
237 { 0x387477c1, 0x69c7, 0x11d2, 0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b }
239 INTERFACE_DECL(_SIMPLE_INPUT_INTERFACE);
247 * Baseline unicode control chars
250 #define CHAR_NULL 0x0000
251 #define CHAR_BACKSPACE 0x0008
252 #define CHAR_TAB 0x0009
253 #define CHAR_LINEFEED 0x000A
254 #define CHAR_CARRIAGE_RETURN 0x000D
257 * Scan codes for base line keys
259 #define SCAN_NULL 0x0000
260 #define SCAN_UP 0x0001
261 #define SCAN_DOWN 0x0002
262 #define SCAN_RIGHT 0x0003
263 #define SCAN_LEFT 0x0004
264 #define SCAN_HOME 0x0005
265 #define SCAN_END 0x0006
266 #define SCAN_INSERT 0x0007
267 #define SCAN_DELETE 0x0008
268 #define SCAN_PAGE_UP 0x0009
269 #define SCAN_PAGE_DOWN 0x000A
270 #define SCAN_F1 0x000B
271 #define SCAN_F2 0x000C
272 #define SCAN_F3 0x000D
273 #define SCAN_F4 0x000E
274 #define SCAN_F5 0x000F
275 #define SCAN_F6 0x0010
276 #define SCAN_F7 0x0011
277 #define SCAN_F8 0x0012
278 #define SCAN_F9 0x0013
279 #define SCAN_F10 0x0014
280 #define SCAN_ESC 0x0017
284 (EFIAPI *EFI_INPUT_RESET) (
285 IN struct _SIMPLE_INPUT_INTERFACE *This,
286 IN BOOLEAN ExtendedVerification
291 (EFIAPI *EFI_INPUT_READ_KEY) (
292 IN struct _SIMPLE_INPUT_INTERFACE *This,
293 OUT EFI_INPUT_KEY *Key
296 typedef struct _SIMPLE_INPUT_INTERFACE {
297 EFI_INPUT_RESET Reset;
298 EFI_INPUT_READ_KEY ReadKeyStroke;
299 EFI_EVENT WaitForKey;
300 } SIMPLE_INPUT_INTERFACE;