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 20typedef 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/// 30typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL SIMPLE_INPUT_INTERFACE; 31 32/// 33/// The keystroke information for the key that was pressed. 34/// 35typedef 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**/ 84typedef 85EFI_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**/ 105typedef 106EFI_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/// 116struct _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 125extern EFI_GUID gEfiSimpleTextInProtocolGuid; 126 127#endif 128