1 /** @file 2 Simple Text Input protocol from the UEFI 2.0 specification. 3 4 Abstraction of a very simple input device like a keyboard or serial 5 terminal. 6 7 Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR> 8 SPDX-License-Identifier: BSD-2-Clause-Patent 9 10 **/ 11 12 #ifndef __SIMPLE_TEXT_IN_PROTOCOL_H__ 13 #define __SIMPLE_TEXT_IN_PROTOCOL_H__ 14 15 #define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \ 16 { \ 17 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \ 18 } 19 20 typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL; 21 22 /// 23 /// Protocol GUID name defined in EFI1.1. 24 /// 25 #define SIMPLE_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID 26 27 /// 28 /// Protocol name in EFI1.1 for backward-compatible. 29 /// 30 typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL SIMPLE_INPUT_INTERFACE; 31 32 /// 33 /// The keystroke information for the key that was pressed. 34 /// 35 typedef struct { 36 UINT16 ScanCode; 37 CHAR16 UnicodeChar; 38 } EFI_INPUT_KEY; 39 40 // 41 // Required unicode control chars 42 // 43 #define CHAR_BACKSPACE 0x0008 44 #define CHAR_TAB 0x0009 45 #define CHAR_LINEFEED 0x000A 46 #define CHAR_CARRIAGE_RETURN 0x000D 47 48 // 49 // EFI Scan codes 50 // 51 #define SCAN_NULL 0x0000 52 #define SCAN_UP 0x0001 53 #define SCAN_DOWN 0x0002 54 #define SCAN_RIGHT 0x0003 55 #define SCAN_LEFT 0x0004 56 #define SCAN_HOME 0x0005 57 #define SCAN_END 0x0006 58 #define SCAN_INSERT 0x0007 59 #define SCAN_DELETE 0x0008 60 #define SCAN_PAGE_UP 0x0009 61 #define SCAN_PAGE_DOWN 0x000A 62 #define SCAN_F1 0x000B 63 #define SCAN_F2 0x000C 64 #define SCAN_F3 0x000D 65 #define SCAN_F4 0x000E 66 #define SCAN_F5 0x000F 67 #define SCAN_F6 0x0010 68 #define SCAN_F7 0x0011 69 #define SCAN_F8 0x0012 70 #define SCAN_F9 0x0013 71 #define SCAN_F10 0x0014 72 #define SCAN_ESC 0x0017 73 74 /** 75 Reset the input device and optionally run diagnostics 76 77 @param This Protocol instance pointer. 78 @param ExtendedVerification Driver may perform diagnostics on reset. 79 80 @retval EFI_SUCCESS The device was reset. 81 @retval EFI_DEVICE_ERROR The device is not functioning properly and could not be reset. 82 83 **/ 84 typedef 85 EFI_STATUS 86 (EFIAPI *EFI_INPUT_RESET)( 87 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, 88 IN BOOLEAN ExtendedVerification 89 ); 90 91 /** 92 Reads the next keystroke from the input device. The WaitForKey Event can 93 be used to test for existence of a keystroke via WaitForEvent () call. 94 95 @param This Protocol instance pointer. 96 @param Key A pointer to a buffer that is filled in with the keystroke 97 information for the key that was pressed. 98 99 @retval EFI_SUCCESS The keystroke information was returned. 100 @retval EFI_NOT_READY There was no keystroke data available. 101 @retval EFI_DEVICE_ERROR The keystroke information was not returned due to 102 hardware errors. 103 104 **/ 105 typedef 106 EFI_STATUS 107 (EFIAPI *EFI_INPUT_READ_KEY)( 108 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, 109 OUT EFI_INPUT_KEY *Key 110 ); 111 112 /// 113 /// The EFI_SIMPLE_TEXT_INPUT_PROTOCOL is used on the ConsoleIn device. 114 /// It is the minimum required protocol for ConsoleIn. 115 /// 116 struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL { 117 EFI_INPUT_RESET Reset; 118 EFI_INPUT_READ_KEY ReadKeyStroke; 119 /// 120 /// Event to use with WaitForEvent() to wait for a key to be available 121 /// 122 EFI_EVENT WaitForKey; 123 }; 124 125 extern EFI_GUID gEfiSimpleTextInProtocolGuid; 126 127 #endif 128