1ca987d46SWarner Losh #ifndef _EFI_CON_H 2ca987d46SWarner Losh #define _EFI_CON_H 3ca987d46SWarner Losh 4ca987d46SWarner Losh /*++ 5ca987d46SWarner Losh 6ca987d46SWarner Losh Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved 7ca987d46SWarner Losh This software and associated documentation (if any) is furnished 8ca987d46SWarner Losh under a license and may only be used or copied in accordance 9ca987d46SWarner Losh with the terms of the license. Except as permitted by such 10ca987d46SWarner Losh license, no part of this software or documentation may be 11ca987d46SWarner Losh reproduced, stored in a retrieval system, or transmitted in any 12ca987d46SWarner Losh form or by any means without the express written consent of 13ca987d46SWarner Losh Intel Corporation. 14ca987d46SWarner Losh 15ca987d46SWarner Losh Module Name: 16ca987d46SWarner Losh 17ca987d46SWarner Losh eficon.h 18ca987d46SWarner Losh 19ca987d46SWarner Losh Abstract: 20ca987d46SWarner Losh 21ca987d46SWarner Losh EFI console protocols 22ca987d46SWarner Losh 23ca987d46SWarner Losh 24ca987d46SWarner Losh 25ca987d46SWarner Losh Revision History 26ca987d46SWarner Losh 27ca987d46SWarner Losh --*/ 28ca987d46SWarner Losh 29ca987d46SWarner Losh // 30ca987d46SWarner Losh // Text output protocol 31ca987d46SWarner Losh // 32ca987d46SWarner Losh 33ca987d46SWarner Losh #define SIMPLE_TEXT_OUTPUT_PROTOCOL \ 34ca987d46SWarner Losh { 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } 35ca987d46SWarner Losh 36ca987d46SWarner Losh INTERFACE_DECL(_SIMPLE_TEXT_OUTPUT_INTERFACE); 37ca987d46SWarner Losh 38ca987d46SWarner Losh typedef 39ca987d46SWarner Losh EFI_STATUS 40ca987d46SWarner Losh (EFIAPI *EFI_TEXT_RESET) ( 41ca987d46SWarner Losh IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, 42ca987d46SWarner Losh IN BOOLEAN ExtendedVerification 43ca987d46SWarner Losh ); 44ca987d46SWarner Losh 45ca987d46SWarner Losh typedef 46ca987d46SWarner Losh EFI_STATUS 47ca987d46SWarner Losh (EFIAPI *EFI_TEXT_OUTPUT_STRING) ( 48ca987d46SWarner Losh IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, 49ca987d46SWarner Losh IN CHAR16 *String 50ca987d46SWarner Losh ); 51ca987d46SWarner Losh 52ca987d46SWarner Losh typedef 53ca987d46SWarner Losh EFI_STATUS 54ca987d46SWarner Losh (EFIAPI *EFI_TEXT_TEST_STRING) ( 55ca987d46SWarner Losh IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, 56ca987d46SWarner Losh IN CHAR16 *String 57ca987d46SWarner Losh ); 58ca987d46SWarner Losh 59ca987d46SWarner Losh typedef 60ca987d46SWarner Losh EFI_STATUS 61ca987d46SWarner Losh (EFIAPI *EFI_TEXT_QUERY_MODE) ( 62ca987d46SWarner Losh IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, 63ca987d46SWarner Losh IN UINTN ModeNumber, 64ca987d46SWarner Losh OUT UINTN *Columns, 65ca987d46SWarner Losh OUT UINTN *Rows 66ca987d46SWarner Losh ); 67ca987d46SWarner Losh 68ca987d46SWarner Losh typedef 69ca987d46SWarner Losh EFI_STATUS 70ca987d46SWarner Losh (EFIAPI *EFI_TEXT_SET_MODE) ( 71ca987d46SWarner Losh IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, 72ca987d46SWarner Losh IN UINTN ModeNumber 73ca987d46SWarner Losh ); 74ca987d46SWarner Losh 75ca987d46SWarner Losh typedef 76ca987d46SWarner Losh EFI_STATUS 77ca987d46SWarner Losh (EFIAPI *EFI_TEXT_SET_ATTRIBUTE) ( 78ca987d46SWarner Losh IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, 79ca987d46SWarner Losh IN UINTN Attribute 80ca987d46SWarner Losh ); 81ca987d46SWarner Losh 82ca987d46SWarner Losh #define EFI_BLACK 0x00 83ca987d46SWarner Losh #define EFI_BLUE 0x01 84ca987d46SWarner Losh #define EFI_GREEN 0x02 85ca987d46SWarner Losh #define EFI_CYAN (EFI_BLUE | EFI_GREEN) 86ca987d46SWarner Losh #define EFI_RED 0x04 87ca987d46SWarner Losh #define EFI_MAGENTA (EFI_BLUE | EFI_RED) 88ca987d46SWarner Losh #define EFI_BROWN (EFI_GREEN | EFI_RED) 89ca987d46SWarner Losh #define EFI_LIGHTGRAY (EFI_BLUE | EFI_GREEN | EFI_RED) 90ca987d46SWarner Losh #define EFI_BRIGHT 0x08 91ca987d46SWarner Losh #define EFI_DARKGRAY (EFI_BRIGHT) 92ca987d46SWarner Losh #define EFI_LIGHTBLUE (EFI_BLUE | EFI_BRIGHT) 93ca987d46SWarner Losh #define EFI_LIGHTGREEN (EFI_GREEN | EFI_BRIGHT) 94ca987d46SWarner Losh #define EFI_LIGHTCYAN (EFI_CYAN | EFI_BRIGHT) 95ca987d46SWarner Losh #define EFI_LIGHTRED (EFI_RED | EFI_BRIGHT) 96ca987d46SWarner Losh #define EFI_LIGHTMAGENTA (EFI_MAGENTA | EFI_BRIGHT) 97ca987d46SWarner Losh #define EFI_YELLOW (EFI_BROWN | EFI_BRIGHT) 98ca987d46SWarner Losh #define EFI_WHITE (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT) 99ca987d46SWarner Losh 100ca987d46SWarner Losh #define EFI_TEXT_ATTR(f,b) ((f) | ((b) << 4)) 101ca987d46SWarner Losh 102ca987d46SWarner Losh #define EFI_BACKGROUND_BLACK 0x00 103ca987d46SWarner Losh #define EFI_BACKGROUND_BLUE 0x10 104ca987d46SWarner Losh #define EFI_BACKGROUND_GREEN 0x20 105ca987d46SWarner Losh #define EFI_BACKGROUND_CYAN (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN) 106ca987d46SWarner Losh #define EFI_BACKGROUND_RED 0x40 107ca987d46SWarner Losh #define EFI_BACKGROUND_MAGENTA (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED) 108ca987d46SWarner Losh #define EFI_BACKGROUND_BROWN (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED) 109ca987d46SWarner Losh #define EFI_BACKGROUND_LIGHTGRAY (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED) 110ca987d46SWarner Losh 111ca987d46SWarner Losh 112ca987d46SWarner Losh typedef 113ca987d46SWarner Losh EFI_STATUS 114ca987d46SWarner Losh (EFIAPI *EFI_TEXT_CLEAR_SCREEN) ( 115ca987d46SWarner Losh IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This 116ca987d46SWarner Losh ); 117ca987d46SWarner Losh 118ca987d46SWarner Losh typedef 119ca987d46SWarner Losh EFI_STATUS 120ca987d46SWarner Losh (EFIAPI *EFI_TEXT_SET_CURSOR_POSITION) ( 121ca987d46SWarner Losh IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, 122ca987d46SWarner Losh IN UINTN Column, 123ca987d46SWarner Losh IN UINTN Row 124ca987d46SWarner Losh ); 125ca987d46SWarner Losh 126ca987d46SWarner Losh typedef 127ca987d46SWarner Losh EFI_STATUS 128ca987d46SWarner Losh (EFIAPI *EFI_TEXT_ENABLE_CURSOR) ( 129ca987d46SWarner Losh IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE *This, 130ca987d46SWarner Losh IN BOOLEAN Enable 131ca987d46SWarner Losh ); 132ca987d46SWarner Losh 133ca987d46SWarner Losh typedef struct { 134ca987d46SWarner Losh INT32 MaxMode; 135ca987d46SWarner Losh // current settings 136ca987d46SWarner Losh INT32 Mode; 137ca987d46SWarner Losh INT32 Attribute; 138ca987d46SWarner Losh INT32 CursorColumn; 139ca987d46SWarner Losh INT32 CursorRow; 140ca987d46SWarner Losh BOOLEAN CursorVisible; 141ca987d46SWarner Losh } SIMPLE_TEXT_OUTPUT_MODE; 142ca987d46SWarner Losh 143ca987d46SWarner Losh typedef struct _SIMPLE_TEXT_OUTPUT_INTERFACE { 144ca987d46SWarner Losh EFI_TEXT_RESET Reset; 145ca987d46SWarner Losh 146ca987d46SWarner Losh EFI_TEXT_OUTPUT_STRING OutputString; 147ca987d46SWarner Losh EFI_TEXT_TEST_STRING TestString; 148ca987d46SWarner Losh 149ca987d46SWarner Losh EFI_TEXT_QUERY_MODE QueryMode; 150ca987d46SWarner Losh EFI_TEXT_SET_MODE SetMode; 151ca987d46SWarner Losh EFI_TEXT_SET_ATTRIBUTE SetAttribute; 152ca987d46SWarner Losh 153ca987d46SWarner Losh EFI_TEXT_CLEAR_SCREEN ClearScreen; 154ca987d46SWarner Losh EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition; 155ca987d46SWarner Losh EFI_TEXT_ENABLE_CURSOR EnableCursor; 156ca987d46SWarner Losh 157ca987d46SWarner Losh // Current mode 158ca987d46SWarner Losh SIMPLE_TEXT_OUTPUT_MODE *Mode; 159ca987d46SWarner Losh } SIMPLE_TEXT_OUTPUT_INTERFACE; 160ca987d46SWarner Losh 161ca987d46SWarner Losh // 162ca987d46SWarner Losh // Define's for required EFI Unicode Box Draw character 163ca987d46SWarner Losh // 164ca987d46SWarner Losh 165ca987d46SWarner Losh #define BOXDRAW_HORIZONTAL 0x2500 166ca987d46SWarner Losh #define BOXDRAW_VERTICAL 0x2502 167ca987d46SWarner Losh #define BOXDRAW_DOWN_RIGHT 0x250c 168ca987d46SWarner Losh #define BOXDRAW_DOWN_LEFT 0x2510 169ca987d46SWarner Losh #define BOXDRAW_UP_RIGHT 0x2514 170ca987d46SWarner Losh #define BOXDRAW_UP_LEFT 0x2518 171ca987d46SWarner Losh #define BOXDRAW_VERTICAL_RIGHT 0x251c 172ca987d46SWarner Losh #define BOXDRAW_VERTICAL_LEFT 0x2524 173ca987d46SWarner Losh #define BOXDRAW_DOWN_HORIZONTAL 0x252c 174ca987d46SWarner Losh #define BOXDRAW_UP_HORIZONTAL 0x2534 175ca987d46SWarner Losh #define BOXDRAW_VERTICAL_HORIZONTAL 0x253c 176ca987d46SWarner Losh 177ca987d46SWarner Losh #define BOXDRAW_DOUBLE_HORIZONTAL 0x2550 178ca987d46SWarner Losh #define BOXDRAW_DOUBLE_VERTICAL 0x2551 179ca987d46SWarner Losh #define BOXDRAW_DOWN_RIGHT_DOUBLE 0x2552 180ca987d46SWarner Losh #define BOXDRAW_DOWN_DOUBLE_RIGHT 0x2553 181ca987d46SWarner Losh #define BOXDRAW_DOUBLE_DOWN_RIGHT 0x2554 182ca987d46SWarner Losh 183ca987d46SWarner Losh #define BOXDRAW_DOWN_LEFT_DOUBLE 0x2555 184ca987d46SWarner Losh #define BOXDRAW_DOWN_DOUBLE_LEFT 0x2556 185ca987d46SWarner Losh #define BOXDRAW_DOUBLE_DOWN_LEFT 0x2557 186ca987d46SWarner Losh 187ca987d46SWarner Losh #define BOXDRAW_UP_RIGHT_DOUBLE 0x2558 188ca987d46SWarner Losh #define BOXDRAW_UP_DOUBLE_RIGHT 0x2559 189ca987d46SWarner Losh #define BOXDRAW_DOUBLE_UP_RIGHT 0x255a 190ca987d46SWarner Losh 191ca987d46SWarner Losh #define BOXDRAW_UP_LEFT_DOUBLE 0x255b 192ca987d46SWarner Losh #define BOXDRAW_UP_DOUBLE_LEFT 0x255c 193ca987d46SWarner Losh #define BOXDRAW_DOUBLE_UP_LEFT 0x255d 194ca987d46SWarner Losh 195ca987d46SWarner Losh #define BOXDRAW_VERTICAL_RIGHT_DOUBLE 0x255e 196ca987d46SWarner Losh #define BOXDRAW_VERTICAL_DOUBLE_RIGHT 0x255f 197ca987d46SWarner Losh #define BOXDRAW_DOUBLE_VERTICAL_RIGHT 0x2560 198ca987d46SWarner Losh 199ca987d46SWarner Losh #define BOXDRAW_VERTICAL_LEFT_DOUBLE 0x2561 200ca987d46SWarner Losh #define BOXDRAW_VERTICAL_DOUBLE_LEFT 0x2562 201ca987d46SWarner Losh #define BOXDRAW_DOUBLE_VERTICAL_LEFT 0x2563 202ca987d46SWarner Losh 203ca987d46SWarner Losh #define BOXDRAW_DOWN_HORIZONTAL_DOUBLE 0x2564 204ca987d46SWarner Losh #define BOXDRAW_DOWN_DOUBLE_HORIZONTAL 0x2565 205ca987d46SWarner Losh #define BOXDRAW_DOUBLE_DOWN_HORIZONTAL 0x2566 206ca987d46SWarner Losh 207ca987d46SWarner Losh #define BOXDRAW_UP_HORIZONTAL_DOUBLE 0x2567 208ca987d46SWarner Losh #define BOXDRAW_UP_DOUBLE_HORIZONTAL 0x2568 209ca987d46SWarner Losh #define BOXDRAW_DOUBLE_UP_HORIZONTAL 0x2569 210ca987d46SWarner Losh 211ca987d46SWarner Losh #define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE 0x256a 212ca987d46SWarner Losh #define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL 0x256b 213ca987d46SWarner Losh #define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL 0x256c 214ca987d46SWarner Losh 215ca987d46SWarner Losh // 216ca987d46SWarner Losh // EFI Required Block Elements Code Chart 217ca987d46SWarner Losh // 218ca987d46SWarner Losh 219ca987d46SWarner Losh #define BLOCKELEMENT_FULL_BLOCK 0x2588 220ca987d46SWarner Losh #define BLOCKELEMENT_LIGHT_SHADE 0x2591 221ca987d46SWarner Losh // 222ca987d46SWarner Losh // EFI Required Geometric Shapes Code Chart 223ca987d46SWarner Losh // 224ca987d46SWarner Losh 225ca987d46SWarner Losh #define GEOMETRICSHAPE_UP_TRIANGLE 0x25b2 226ca987d46SWarner Losh #define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba 227ca987d46SWarner Losh #define GEOMETRICSHAPE_DOWN_TRIANGLE 0x25bc 228ca987d46SWarner Losh #define GEOMETRICSHAPE_LEFT_TRIANGLE 0x25c4 229ca987d46SWarner Losh 230ca987d46SWarner Losh // 231ca987d46SWarner Losh // EFI Required Arrow shapes 232ca987d46SWarner Losh // 233ca987d46SWarner Losh 234ca987d46SWarner Losh #define ARROW_UP 0x2191 235ca987d46SWarner Losh #define ARROW_DOWN 0x2193 236ca987d46SWarner Losh 237ca987d46SWarner Losh // 238ca987d46SWarner Losh // Text input protocol 239ca987d46SWarner Losh // 240ca987d46SWarner Losh 241ca987d46SWarner Losh #define SIMPLE_TEXT_INPUT_PROTOCOL \ 242ca987d46SWarner Losh { 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} } 243ca987d46SWarner Losh 244ca987d46SWarner Losh INTERFACE_DECL(_SIMPLE_INPUT_INTERFACE); 245ca987d46SWarner Losh 246ca987d46SWarner Losh typedef struct { 247ca987d46SWarner Losh UINT16 ScanCode; 248ca987d46SWarner Losh CHAR16 UnicodeChar; 249ca987d46SWarner Losh } EFI_INPUT_KEY; 250ca987d46SWarner Losh 251ca987d46SWarner Losh // 252ca987d46SWarner Losh // Baseline unicode control chars 253ca987d46SWarner Losh // 254ca987d46SWarner Losh 255ca987d46SWarner Losh #define CHAR_NULL 0x0000 256ca987d46SWarner Losh #define CHAR_BACKSPACE 0x0008 257ca987d46SWarner Losh #define CHAR_TAB 0x0009 258ca987d46SWarner Losh #define CHAR_LINEFEED 0x000A 259ca987d46SWarner Losh #define CHAR_CARRIAGE_RETURN 0x000D 260ca987d46SWarner Losh 261ca987d46SWarner Losh // 262ca987d46SWarner Losh // Scan codes for base line keys 263ca987d46SWarner Losh // 264ca987d46SWarner Losh 265ca987d46SWarner Losh #define SCAN_NULL 0x0000 266ca987d46SWarner Losh #define SCAN_UP 0x0001 267ca987d46SWarner Losh #define SCAN_DOWN 0x0002 268ca987d46SWarner Losh #define SCAN_RIGHT 0x0003 269ca987d46SWarner Losh #define SCAN_LEFT 0x0004 270ca987d46SWarner Losh #define SCAN_HOME 0x0005 271ca987d46SWarner Losh #define SCAN_END 0x0006 272ca987d46SWarner Losh #define SCAN_INSERT 0x0007 273ca987d46SWarner Losh #define SCAN_DELETE 0x0008 274ca987d46SWarner Losh #define SCAN_PAGE_UP 0x0009 275ca987d46SWarner Losh #define SCAN_PAGE_DOWN 0x000A 276ca987d46SWarner Losh #define SCAN_F1 0x000B 277ca987d46SWarner Losh #define SCAN_F2 0x000C 278ca987d46SWarner Losh #define SCAN_F3 0x000D 279ca987d46SWarner Losh #define SCAN_F4 0x000E 280ca987d46SWarner Losh #define SCAN_F5 0x000F 281ca987d46SWarner Losh #define SCAN_F6 0x0010 282ca987d46SWarner Losh #define SCAN_F7 0x0011 283ca987d46SWarner Losh #define SCAN_F8 0x0012 284ca987d46SWarner Losh #define SCAN_F9 0x0013 285ca987d46SWarner Losh #define SCAN_F10 0x0014 286ca987d46SWarner Losh #define SCAN_ESC 0x0017 287ca987d46SWarner Losh 28865641822SToomas Soome // 28965641822SToomas Soome // EFI Scan code Ex 29065641822SToomas Soome // 29165641822SToomas Soome #define SCAN_F11 0x0015 29265641822SToomas Soome #define SCAN_F12 0x0016 29365641822SToomas Soome #define SCAN_F13 0x0068 29465641822SToomas Soome #define SCAN_F14 0x0069 29565641822SToomas Soome #define SCAN_F15 0x006A 29665641822SToomas Soome #define SCAN_F16 0x006B 29765641822SToomas Soome #define SCAN_F17 0x006C 29865641822SToomas Soome #define SCAN_F18 0x006D 29965641822SToomas Soome #define SCAN_F19 0x006E 30065641822SToomas Soome #define SCAN_F20 0x006F 30165641822SToomas Soome #define SCAN_F21 0x0070 30265641822SToomas Soome #define SCAN_F22 0x0071 30365641822SToomas Soome #define SCAN_F23 0x0072 30465641822SToomas Soome #define SCAN_F24 0x0073 30565641822SToomas Soome #define SCAN_MUTE 0x007F 30665641822SToomas Soome #define SCAN_VOLUME_UP 0x0080 30765641822SToomas Soome #define SCAN_VOLUME_DOWN 0x0081 30865641822SToomas Soome #define SCAN_BRIGHTNESS_UP 0x0100 30965641822SToomas Soome #define SCAN_BRIGHTNESS_DOWN 0x0101 31065641822SToomas Soome #define SCAN_SUSPEND 0x0102 31165641822SToomas Soome #define SCAN_HIBERNATE 0x0103 31265641822SToomas Soome #define SCAN_TOGGLE_DISPLAY 0x0104 31365641822SToomas Soome #define SCAN_RECOVERY 0x0105 31465641822SToomas Soome #define SCAN_EJECT 0x0106 31565641822SToomas Soome 316ca987d46SWarner Losh typedef 317ca987d46SWarner Losh EFI_STATUS 318ca987d46SWarner Losh (EFIAPI *EFI_INPUT_RESET) ( 319ca987d46SWarner Losh IN struct _SIMPLE_INPUT_INTERFACE *This, 320ca987d46SWarner Losh IN BOOLEAN ExtendedVerification 321ca987d46SWarner Losh ); 322ca987d46SWarner Losh 323ca987d46SWarner Losh typedef 324ca987d46SWarner Losh EFI_STATUS 325ca987d46SWarner Losh (EFIAPI *EFI_INPUT_READ_KEY) ( 326ca987d46SWarner Losh IN struct _SIMPLE_INPUT_INTERFACE *This, 327ca987d46SWarner Losh OUT EFI_INPUT_KEY *Key 328ca987d46SWarner Losh ); 329ca987d46SWarner Losh 330ca987d46SWarner Losh typedef struct _SIMPLE_INPUT_INTERFACE { 331ca987d46SWarner Losh EFI_INPUT_RESET Reset; 332ca987d46SWarner Losh EFI_INPUT_READ_KEY ReadKeyStroke; 333ca987d46SWarner Losh EFI_EVENT WaitForKey; 334ca987d46SWarner Losh } SIMPLE_INPUT_INTERFACE; 335ca987d46SWarner Losh 33665641822SToomas Soome #define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID \ 33765641822SToomas Soome {0xdd9e7534, 0x7762, 0x4698, {0x8c, 0x14, 0xf5, 0x85, \ 33865641822SToomas Soome 0x17, 0xa6, 0x25, 0xaa} } 33965641822SToomas Soome 34065641822SToomas Soome INTERFACE_DECL(_EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL); 34165641822SToomas Soome 34265641822SToomas Soome typedef UINT8 EFI_KEY_TOGGLE_STATE; 34365641822SToomas Soome // 34465641822SToomas Soome // Any Shift or Toggle State that is valid should have 34565641822SToomas Soome // high order bit set. 34665641822SToomas Soome // 34765641822SToomas Soome typedef struct EFI_KEY_STATE { 34865641822SToomas Soome UINT32 KeyShiftState; 34965641822SToomas Soome EFI_KEY_TOGGLE_STATE KeyToggleState; 35065641822SToomas Soome } EFI_KEY_STATE; 35165641822SToomas Soome 35265641822SToomas Soome typedef struct { 35365641822SToomas Soome EFI_INPUT_KEY Key; 35465641822SToomas Soome EFI_KEY_STATE KeyState; 35565641822SToomas Soome } EFI_KEY_DATA; 35665641822SToomas Soome 35765641822SToomas Soome // 35865641822SToomas Soome // Shift state 35965641822SToomas Soome // 36065641822SToomas Soome #define EFI_SHIFT_STATE_VALID 0x80000000 36165641822SToomas Soome #define EFI_RIGHT_SHIFT_PRESSED 0x00000001 36265641822SToomas Soome #define EFI_LEFT_SHIFT_PRESSED 0x00000002 36365641822SToomas Soome #define EFI_RIGHT_CONTROL_PRESSED 0x00000004 36465641822SToomas Soome #define EFI_LEFT_CONTROL_PRESSED 0x00000008 36565641822SToomas Soome #define EFI_RIGHT_ALT_PRESSED 0x00000010 36665641822SToomas Soome #define EFI_LEFT_ALT_PRESSED 0x00000020 36765641822SToomas Soome #define EFI_RIGHT_LOGO_PRESSED 0x00000040 36865641822SToomas Soome #define EFI_LEFT_LOGO_PRESSED 0x00000080 36965641822SToomas Soome #define EFI_MENU_KEY_PRESSED 0x00000100 37065641822SToomas Soome #define EFI_SYS_REQ_PRESSED 0x00000200 37165641822SToomas Soome 37265641822SToomas Soome // 37365641822SToomas Soome // Toggle state 37465641822SToomas Soome // 37565641822SToomas Soome #define EFI_TOGGLE_STATE_VALID 0x80 37665641822SToomas Soome #define EFI_KEY_STATE_EXPOSED 0x40 37765641822SToomas Soome #define EFI_SCROLL_LOCK_ACTIVE 0x01 37865641822SToomas Soome #define EFI_NUM_LOCK_ACTIVE 0x02 37965641822SToomas Soome #define EFI_CAPS_LOCK_ACTIVE 0x04 38065641822SToomas Soome 38165641822SToomas Soome // 38265641822SToomas Soome // EFI Key Notfication Function 38365641822SToomas Soome // 38465641822SToomas Soome typedef 38565641822SToomas Soome EFI_STATUS 38665641822SToomas Soome (EFIAPI *EFI_KEY_NOTIFY_FUNCTION) ( 38765641822SToomas Soome IN EFI_KEY_DATA *KeyData 38865641822SToomas Soome ); 38965641822SToomas Soome 39065641822SToomas Soome typedef 39165641822SToomas Soome EFI_STATUS 39265641822SToomas Soome (EFIAPI *EFI_INPUT_RESET_EX) ( 39365641822SToomas Soome IN struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, 39465641822SToomas Soome IN BOOLEAN ExtendedVerification 39565641822SToomas Soome ) 39665641822SToomas Soome /*++ 39765641822SToomas Soome 39865641822SToomas Soome Routine Description: 39965641822SToomas Soome Reset the input device and optionaly run diagnostics 40065641822SToomas Soome 40165641822SToomas Soome Arguments: 40265641822SToomas Soome This - Protocol instance pointer. 40365641822SToomas Soome ExtendedVerification - Driver may perform diagnostics on reset. 40465641822SToomas Soome 40565641822SToomas Soome Returns: 40665641822SToomas Soome EFI_SUCCESS - The device was reset. 40765641822SToomas Soome EFI_DEVICE_ERROR - The device is not functioning properly and could 40865641822SToomas Soome not be reset. 40965641822SToomas Soome 41065641822SToomas Soome --*/ 41165641822SToomas Soome ; 41265641822SToomas Soome 41365641822SToomas Soome typedef 41465641822SToomas Soome EFI_STATUS 41565641822SToomas Soome (EFIAPI *EFI_INPUT_READ_KEY_EX) ( 41665641822SToomas Soome IN struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, 41765641822SToomas Soome OUT EFI_KEY_DATA *KeyData 41865641822SToomas Soome ) 41965641822SToomas Soome /*++ 42065641822SToomas Soome 42165641822SToomas Soome Routine Description: 42265641822SToomas Soome Reads the next keystroke from the input device. The WaitForKey Event can 4239cd75b55SGordon Bergling be used to test for existence of a keystroke via WaitForEvent () call. 42465641822SToomas Soome 42565641822SToomas Soome Arguments: 42665641822SToomas Soome This - Protocol instance pointer. 42765641822SToomas Soome KeyData - A pointer to a buffer that is filled in with the keystroke 42865641822SToomas Soome state data for the key that was pressed. 42965641822SToomas Soome 43065641822SToomas Soome Returns: 43165641822SToomas Soome EFI_SUCCESS - The keystroke information was returned. 43265641822SToomas Soome EFI_NOT_READY - There was no keystroke data availiable. 43365641822SToomas Soome EFI_DEVICE_ERROR - The keystroke information was not returned due to 43465641822SToomas Soome hardware errors. 43565641822SToomas Soome EFI_INVALID_PARAMETER - KeyData is NULL. 43665641822SToomas Soome --*/ 43765641822SToomas Soome ; 43865641822SToomas Soome 43965641822SToomas Soome typedef 44065641822SToomas Soome EFI_STATUS 44165641822SToomas Soome (EFIAPI *EFI_SET_STATE) ( 44265641822SToomas Soome IN struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, 44365641822SToomas Soome IN EFI_KEY_TOGGLE_STATE *KeyToggleState 44465641822SToomas Soome ) 44565641822SToomas Soome /*++ 44665641822SToomas Soome 44765641822SToomas Soome Routine Description: 44865641822SToomas Soome Set certain state for the input device. 44965641822SToomas Soome 45065641822SToomas Soome Arguments: 45165641822SToomas Soome This - Protocol instance pointer. 45265641822SToomas Soome KeyToggleState - A pointer to the EFI_KEY_TOGGLE_STATE to set the 45365641822SToomas Soome state for the input device. 45465641822SToomas Soome 45565641822SToomas Soome Returns: 45665641822SToomas Soome EFI_SUCCESS - The device state was set successfully. 45765641822SToomas Soome EFI_DEVICE_ERROR - The device is not functioning correctly and could 45865641822SToomas Soome not have the setting adjusted. 45965641822SToomas Soome EFI_UNSUPPORTED - The device does not have the ability to set its state. 46065641822SToomas Soome EFI_INVALID_PARAMETER - KeyToggleState is NULL. 46165641822SToomas Soome 46265641822SToomas Soome --*/ 46365641822SToomas Soome ; 46465641822SToomas Soome 46565641822SToomas Soome typedef 46665641822SToomas Soome EFI_STATUS 46765641822SToomas Soome (EFIAPI *EFI_REGISTER_KEYSTROKE_NOTIFY) ( 46865641822SToomas Soome IN struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, 46965641822SToomas Soome IN EFI_KEY_DATA *KeyData, 47065641822SToomas Soome IN EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction, 47165641822SToomas Soome OUT EFI_HANDLE *NotifyHandle 47265641822SToomas Soome ) 47365641822SToomas Soome /*++ 47465641822SToomas Soome 47565641822SToomas Soome Routine Description: 47665641822SToomas Soome Register a notification function for a particular keystroke for the input device. 47765641822SToomas Soome 47865641822SToomas Soome Arguments: 47965641822SToomas Soome This - Protocol instance pointer. 48065641822SToomas Soome KeyData - A pointer to a buffer that is filled in with the keystroke 48165641822SToomas Soome information data for the key that was pressed. 48265641822SToomas Soome KeyNotificationFunction - Points to the function to be called when the key 48365641822SToomas Soome sequence is typed specified by KeyData. 48465641822SToomas Soome NotifyHandle - Points to the unique handle assigned to the registered notification. 48565641822SToomas Soome 48665641822SToomas Soome Returns: 48765641822SToomas Soome EFI_SUCCESS - The notification function was registered successfully. 488*ed76a950SJose Luis Duran EFI_OUT_OF_RESOURCES - Unable to allocate resources for necessary data structures. 48965641822SToomas Soome EFI_INVALID_PARAMETER - KeyData or NotifyHandle is NULL. 49065641822SToomas Soome 49165641822SToomas Soome --*/ 49265641822SToomas Soome ; 49365641822SToomas Soome 49465641822SToomas Soome typedef 49565641822SToomas Soome EFI_STATUS 49665641822SToomas Soome (EFIAPI *EFI_UNREGISTER_KEYSTROKE_NOTIFY) ( 49765641822SToomas Soome IN struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, 49865641822SToomas Soome IN EFI_HANDLE NotificationHandle 49965641822SToomas Soome ) 50065641822SToomas Soome /*++ 50165641822SToomas Soome 50265641822SToomas Soome Routine Description: 50365641822SToomas Soome Remove a registered notification function from a particular keystroke. 50465641822SToomas Soome 50565641822SToomas Soome Arguments: 50665641822SToomas Soome This - Protocol instance pointer. 50765641822SToomas Soome NotificationHandle - The handle of the notification function being unregistered. 50865641822SToomas Soome 50965641822SToomas Soome Returns: 51065641822SToomas Soome EFI_SUCCESS - The notification function was unregistered successfully. 51165641822SToomas Soome EFI_INVALID_PARAMETER - The NotificationHandle is invalid. 51265641822SToomas Soome EFI_NOT_FOUND - Can not find the matching entry in database. 51365641822SToomas Soome 51465641822SToomas Soome --*/ 51565641822SToomas Soome ; 51665641822SToomas Soome 51765641822SToomas Soome typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL { 51865641822SToomas Soome EFI_INPUT_RESET_EX Reset; 51965641822SToomas Soome EFI_INPUT_READ_KEY_EX ReadKeyStrokeEx; 52065641822SToomas Soome EFI_EVENT WaitForKeyEx; 52165641822SToomas Soome EFI_SET_STATE SetState; 52265641822SToomas Soome EFI_REGISTER_KEYSTROKE_NOTIFY RegisterKeyNotify; 52365641822SToomas Soome EFI_UNREGISTER_KEYSTROKE_NOTIFY UnregisterKeyNotify; 52465641822SToomas Soome } EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL; 52565641822SToomas Soome 526ca987d46SWarner Losh #endif 527