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