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