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