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 303