| #ifndef _EFI_CON_H |
| #define _EFI_CON_H |
| |
| /*++ |
| |
| Copyright (c) 1998 Intel Corporation |
| |
| Module Name: |
| |
| eficon.h |
| |
| Abstract: |
| |
| EFI console protocols |
| |
| |
| |
| Revision History |
| |
| --*/ |
| |
| // |
| // Text output protocol |
| // |
| |
| #define SIMPLE_TEXT_OUTPUT_PROTOCOL \ |
| { 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
| |
| INTERFACE_DECL(_SIMPLE_TEXT_OUTPUT_INTERFACE); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TEXT_RESET) ( |
| IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
| IN BOOLEAN ExtendedVerification |
| ); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TEXT_OUTPUT_STRING) ( |
| IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
| IN CHAR16 *String |
| ); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TEXT_TEST_STRING) ( |
| IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
| IN CHAR16 *String |
| ); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TEXT_QUERY_MODE) ( |
| IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
| IN UINTN ModeNumber, |
| OUT UINTN *Columns, |
| OUT UINTN *Rows |
| ); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TEXT_SET_MODE) ( |
| IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
| IN UINTN ModeNumber |
| ); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TEXT_SET_ATTRIBUTE) ( |
| IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
| IN UINTN Attribute |
| ); |
| |
| #define EFI_BLACK 0x00 |
| #define EFI_BLUE 0x01 |
| #define EFI_GREEN 0x02 |
| #define EFI_CYAN (EFI_BLUE | EFI_GREEN) |
| #define EFI_RED 0x04 |
| #define EFI_MAGENTA (EFI_BLUE | EFI_RED) |
| #define EFI_BROWN (EFI_GREEN | EFI_RED) |
| #define EFI_LIGHTGRAY (EFI_BLUE | EFI_GREEN | EFI_RED) |
| #define EFI_BRIGHT 0x08 |
| #define EFI_DARKGRAY (EFI_BRIGHT) |
| #define EFI_LIGHTBLUE (EFI_BLUE | EFI_BRIGHT) |
| #define EFI_LIGHTGREEN (EFI_GREEN | EFI_BRIGHT) |
| #define EFI_LIGHTCYAN (EFI_CYAN | EFI_BRIGHT) |
| #define EFI_LIGHTRED (EFI_RED | EFI_BRIGHT) |
| #define EFI_LIGHTMAGENTA (EFI_MAGENTA | EFI_BRIGHT) |
| #define EFI_YELLOW (EFI_BROWN | EFI_BRIGHT) |
| #define EFI_WHITE (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT) |
| |
| #define EFI_TEXT_ATTR(f,b) ((f) | ((b) << 4)) |
| |
| #define EFI_BACKGROUND_BLACK 0x00 |
| #define EFI_BACKGROUND_BLUE 0x10 |
| #define EFI_BACKGROUND_GREEN 0x20 |
| #define EFI_BACKGROUND_CYAN (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN) |
| #define EFI_BACKGROUND_RED 0x40 |
| #define EFI_BACKGROUND_MAGENTA (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED) |
| #define EFI_BACKGROUND_BROWN (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED) |
| #define EFI_BACKGROUND_LIGHTGRAY (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED) |
| |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TEXT_CLEAR_SCREEN) ( |
| IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This |
| ); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TEXT_SET_CURSOR_POSITION) ( |
| IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
| IN UINTN Column, |
| IN UINTN Row |
| ); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TEXT_ENABLE_CURSOR) ( |
| IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, |
| IN BOOLEAN Enable |
| ); |
| |
| typedef struct { |
| INT32 MaxMode; |
| // current settings |
| INT32 Mode; |
| INT32 Attribute; |
| INT32 CursorColumn; |
| INT32 CursorRow; |
| BOOLEAN CursorVisible; |
| } SIMPLE_TEXT_OUTPUT_MODE; |
| |
| typedef struct _SIMPLE_TEXT_OUTPUT_INTERFACE { |
| EFI_TEXT_RESET Reset; |
| |
| EFI_TEXT_OUTPUT_STRING OutputString; |
| EFI_TEXT_TEST_STRING TestString; |
| |
| EFI_TEXT_QUERY_MODE QueryMode; |
| EFI_TEXT_SET_MODE SetMode; |
| EFI_TEXT_SET_ATTRIBUTE SetAttribute; |
| |
| EFI_TEXT_CLEAR_SCREEN ClearScreen; |
| EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition; |
| EFI_TEXT_ENABLE_CURSOR EnableCursor; |
| |
| // Current mode |
| SIMPLE_TEXT_OUTPUT_MODE *Mode; |
| } SIMPLE_TEXT_OUTPUT_INTERFACE; |
| |
| // |
| // Define's for required EFI Unicode Box Draw character |
| // |
| |
| #define BOXDRAW_HORIZONTAL 0x2500 |
| #define BOXDRAW_VERTICAL 0x2502 |
| #define BOXDRAW_DOWN_RIGHT 0x250c |
| #define BOXDRAW_DOWN_LEFT 0x2510 |
| #define BOXDRAW_UP_RIGHT 0x2514 |
| #define BOXDRAW_UP_LEFT 0x2518 |
| #define BOXDRAW_VERTICAL_RIGHT 0x251c |
| #define BOXDRAW_VERTICAL_LEFT 0x2524 |
| #define BOXDRAW_DOWN_HORIZONTAL 0x252c |
| #define BOXDRAW_UP_HORIZONTAL 0x2534 |
| #define BOXDRAW_VERTICAL_HORIZONTAL 0x253c |
| |
| #define BOXDRAW_DOUBLE_HORIZONTAL 0x2550 |
| #define BOXDRAW_DOUBLE_VERTICAL 0x2551 |
| #define BOXDRAW_DOWN_RIGHT_DOUBLE 0x2552 |
| #define BOXDRAW_DOWN_DOUBLE_RIGHT 0x2553 |
| #define BOXDRAW_DOUBLE_DOWN_RIGHT 0x2554 |
| |
| #define BOXDRAW_DOWN_LEFT_DOUBLE 0x2555 |
| #define BOXDRAW_DOWN_DOUBLE_LEFT 0x2556 |
| #define BOXDRAW_DOUBLE_DOWN_LEFT 0x2557 |
| |
| #define BOXDRAW_UP_RIGHT_DOUBLE 0x2558 |
| #define BOXDRAW_UP_DOUBLE_RIGHT 0x2559 |
| #define BOXDRAW_DOUBLE_UP_RIGHT 0x255a |
| |
| #define BOXDRAW_UP_LEFT_DOUBLE 0x255b |
| #define BOXDRAW_UP_DOUBLE_LEFT 0x255c |
| #define BOXDRAW_DOUBLE_UP_LEFT 0x255d |
| |
| #define BOXDRAW_VERTICAL_RIGHT_DOUBLE 0x255e |
| #define BOXDRAW_VERTICAL_DOUBLE_RIGHT 0x255f |
| #define BOXDRAW_DOUBLE_VERTICAL_RIGHT 0x2560 |
| |
| #define BOXDRAW_VERTICAL_LEFT_DOUBLE 0x2561 |
| #define BOXDRAW_VERTICAL_DOUBLE_LEFT 0x2562 |
| #define BOXDRAW_DOUBLE_VERTICAL_LEFT 0x2563 |
| |
| #define BOXDRAW_DOWN_HORIZONTAL_DOUBLE 0x2564 |
| #define BOXDRAW_DOWN_DOUBLE_HORIZONTAL 0x2565 |
| #define BOXDRAW_DOUBLE_DOWN_HORIZONTAL 0x2566 |
| |
| #define BOXDRAW_UP_HORIZONTAL_DOUBLE 0x2567 |
| #define BOXDRAW_UP_DOUBLE_HORIZONTAL 0x2568 |
| #define BOXDRAW_DOUBLE_UP_HORIZONTAL 0x2569 |
| |
| #define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE 0x256a |
| #define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL 0x256b |
| #define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL 0x256c |
| |
| // |
| // EFI Required Block Elements Code Chart |
| // |
| |
| #define BLOCKELEMENT_FULL_BLOCK 0x2588 |
| #define BLOCKELEMENT_LIGHT_SHADE 0x2591 |
| // |
| // EFI Required Geometric Shapes Code Chart |
| // |
| |
| #define GEOMETRICSHAPE_UP_TRIANGLE 0x25b2 |
| #define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba |
| #define GEOMETRICSHAPE_DOWN_TRIANGLE 0x25bc |
| #define GEOMETRICSHAPE_LEFT_TRIANGLE 0x25c4 |
| |
| // |
| // EFI Required Arrow shapes |
| // |
| |
| #define ARROW_UP 0x2191 |
| #define ARROW_DOWN 0x2193 |
| |
| // |
| // Text input protocol |
| // |
| |
| #define SIMPLE_TEXT_INPUT_PROTOCOL \ |
| { 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } |
| |
| INTERFACE_DECL(_SIMPLE_INPUT_INTERFACE); |
| |
| typedef struct { |
| UINT16 ScanCode; |
| CHAR16 UnicodeChar; |
| } EFI_INPUT_KEY; |
| |
| // |
| // Baseline unicode control chars |
| // |
| |
| #define CHAR_NULL 0x0000 |
| #define CHAR_BACKSPACE 0x0008 |
| #define CHAR_TAB 0x0009 |
| #define CHAR_LINEFEED 0x000A |
| #define CHAR_CARRIAGE_RETURN 0x000D |
| |
| // |
| // Scan codes for base line keys |
| // |
| |
| #define SCAN_NULL 0x0000 |
| #define SCAN_UP 0x0001 |
| #define SCAN_DOWN 0x0002 |
| #define SCAN_RIGHT 0x0003 |
| #define SCAN_LEFT 0x0004 |
| #define SCAN_HOME 0x0005 |
| #define SCAN_END 0x0006 |
| #define SCAN_INSERT 0x0007 |
| #define SCAN_DELETE 0x0008 |
| #define SCAN_PAGE_UP 0x0009 |
| #define SCAN_PAGE_DOWN 0x000A |
| #define SCAN_F1 0x000B |
| #define SCAN_F2 0x000C |
| #define SCAN_F3 0x000D |
| #define SCAN_F4 0x000E |
| #define SCAN_F5 0x000F |
| #define SCAN_F6 0x0010 |
| #define SCAN_F7 0x0011 |
| #define SCAN_F8 0x0012 |
| #define SCAN_F9 0x0013 |
| #define SCAN_F10 0x0014 |
| #define SCAN_ESC 0x0017 |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_INPUT_RESET) ( |
| IN struct _SIMPLE_INPUT_INTERFACE *This, |
| IN BOOLEAN ExtendedVerification |
| ); |
| |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_INPUT_READ_KEY) ( |
| IN struct _SIMPLE_INPUT_INTERFACE *This, |
| OUT EFI_INPUT_KEY *Key |
| ); |
| |
| typedef struct _SIMPLE_INPUT_INTERFACE { |
| EFI_INPUT_RESET Reset; |
| EFI_INPUT_READ_KEY ReadKeyStroke; |
| EFI_EVENT WaitForKey; |
| } SIMPLE_INPUT_INTERFACE; |
| |
| #endif |
| |