10d1ba665SWarner Losh /** @file 20d1ba665SWarner Losh Simple Text Input protocol from the UEFI 2.0 specification. 30d1ba665SWarner Losh 40d1ba665SWarner Losh Abstraction of a very simple input device like a keyboard or serial 50d1ba665SWarner Losh terminal. 60d1ba665SWarner Losh 70d1ba665SWarner Losh Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR> 8*3245fa21SMitchell Horne SPDX-License-Identifier: BSD-2-Clause-Patent 90d1ba665SWarner Losh 100d1ba665SWarner Losh **/ 110d1ba665SWarner Losh 120d1ba665SWarner Losh #ifndef __SIMPLE_TEXT_IN_PROTOCOL_H__ 130d1ba665SWarner Losh #define __SIMPLE_TEXT_IN_PROTOCOL_H__ 140d1ba665SWarner Losh 150d1ba665SWarner Losh #define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \ 160d1ba665SWarner Losh { \ 170d1ba665SWarner Losh 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \ 180d1ba665SWarner Losh } 190d1ba665SWarner Losh 200d1ba665SWarner Losh typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL; 210d1ba665SWarner Losh 220d1ba665SWarner Losh /// 230d1ba665SWarner Losh /// Protocol GUID name defined in EFI1.1. 240d1ba665SWarner Losh /// 250d1ba665SWarner Losh #define SIMPLE_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID 260d1ba665SWarner Losh 270d1ba665SWarner Losh /// 280d1ba665SWarner Losh /// Protocol name in EFI1.1 for backward-compatible. 290d1ba665SWarner Losh /// 300d1ba665SWarner Losh typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL SIMPLE_INPUT_INTERFACE; 310d1ba665SWarner Losh 320d1ba665SWarner Losh /// 330d1ba665SWarner Losh /// The keystroke information for the key that was pressed. 340d1ba665SWarner Losh /// 350d1ba665SWarner Losh typedef struct { 360d1ba665SWarner Losh UINT16 ScanCode; 370d1ba665SWarner Losh CHAR16 UnicodeChar; 380d1ba665SWarner Losh } EFI_INPUT_KEY; 390d1ba665SWarner Losh 400d1ba665SWarner Losh // 410d1ba665SWarner Losh // Required unicode control chars 420d1ba665SWarner Losh // 430d1ba665SWarner Losh #define CHAR_BACKSPACE 0x0008 440d1ba665SWarner Losh #define CHAR_TAB 0x0009 450d1ba665SWarner Losh #define CHAR_LINEFEED 0x000A 460d1ba665SWarner Losh #define CHAR_CARRIAGE_RETURN 0x000D 470d1ba665SWarner Losh 480d1ba665SWarner Losh // 490d1ba665SWarner Losh // EFI Scan codes 500d1ba665SWarner Losh // 510d1ba665SWarner Losh #define SCAN_NULL 0x0000 520d1ba665SWarner Losh #define SCAN_UP 0x0001 530d1ba665SWarner Losh #define SCAN_DOWN 0x0002 540d1ba665SWarner Losh #define SCAN_RIGHT 0x0003 550d1ba665SWarner Losh #define SCAN_LEFT 0x0004 560d1ba665SWarner Losh #define SCAN_HOME 0x0005 570d1ba665SWarner Losh #define SCAN_END 0x0006 580d1ba665SWarner Losh #define SCAN_INSERT 0x0007 590d1ba665SWarner Losh #define SCAN_DELETE 0x0008 600d1ba665SWarner Losh #define SCAN_PAGE_UP 0x0009 610d1ba665SWarner Losh #define SCAN_PAGE_DOWN 0x000A 620d1ba665SWarner Losh #define SCAN_F1 0x000B 630d1ba665SWarner Losh #define SCAN_F2 0x000C 640d1ba665SWarner Losh #define SCAN_F3 0x000D 650d1ba665SWarner Losh #define SCAN_F4 0x000E 660d1ba665SWarner Losh #define SCAN_F5 0x000F 670d1ba665SWarner Losh #define SCAN_F6 0x0010 680d1ba665SWarner Losh #define SCAN_F7 0x0011 690d1ba665SWarner Losh #define SCAN_F8 0x0012 700d1ba665SWarner Losh #define SCAN_F9 0x0013 710d1ba665SWarner Losh #define SCAN_F10 0x0014 720d1ba665SWarner Losh #define SCAN_ESC 0x0017 730d1ba665SWarner Losh 740d1ba665SWarner Losh /** 750d1ba665SWarner Losh Reset the input device and optionally run diagnostics 760d1ba665SWarner Losh 770d1ba665SWarner Losh @param This Protocol instance pointer. 780d1ba665SWarner Losh @param ExtendedVerification Driver may perform diagnostics on reset. 790d1ba665SWarner Losh 800d1ba665SWarner Losh @retval EFI_SUCCESS The device was reset. 810d1ba665SWarner Losh @retval EFI_DEVICE_ERROR The device is not functioning properly and could not be reset. 820d1ba665SWarner Losh 830d1ba665SWarner Losh **/ 840d1ba665SWarner Losh typedef 850d1ba665SWarner Losh EFI_STATUS 860d1ba665SWarner Losh (EFIAPI *EFI_INPUT_RESET)( 870d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, 880d1ba665SWarner Losh IN BOOLEAN ExtendedVerification 890d1ba665SWarner Losh ); 900d1ba665SWarner Losh 910d1ba665SWarner Losh /** 920d1ba665SWarner Losh Reads the next keystroke from the input device. The WaitForKey Event can 930d1ba665SWarner Losh be used to test for existence of a keystroke via WaitForEvent () call. 940d1ba665SWarner Losh 950d1ba665SWarner Losh @param This Protocol instance pointer. 960d1ba665SWarner Losh @param Key A pointer to a buffer that is filled in with the keystroke 970d1ba665SWarner Losh information for the key that was pressed. 980d1ba665SWarner Losh 990d1ba665SWarner Losh @retval EFI_SUCCESS The keystroke information was returned. 1000d1ba665SWarner Losh @retval EFI_NOT_READY There was no keystroke data available. 1010d1ba665SWarner Losh @retval EFI_DEVICE_ERROR The keystroke information was not returned due to 1020d1ba665SWarner Losh hardware errors. 1030d1ba665SWarner Losh 1040d1ba665SWarner Losh **/ 1050d1ba665SWarner Losh typedef 1060d1ba665SWarner Losh EFI_STATUS 1070d1ba665SWarner Losh (EFIAPI *EFI_INPUT_READ_KEY)( 1080d1ba665SWarner Losh IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, 1090d1ba665SWarner Losh OUT EFI_INPUT_KEY *Key 1100d1ba665SWarner Losh ); 1110d1ba665SWarner Losh 1120d1ba665SWarner Losh /// 1130d1ba665SWarner Losh /// The EFI_SIMPLE_TEXT_INPUT_PROTOCOL is used on the ConsoleIn device. 1140d1ba665SWarner Losh /// It is the minimum required protocol for ConsoleIn. 1150d1ba665SWarner Losh /// 1160d1ba665SWarner Losh struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL { 1170d1ba665SWarner Losh EFI_INPUT_RESET Reset; 1180d1ba665SWarner Losh EFI_INPUT_READ_KEY ReadKeyStroke; 1190d1ba665SWarner Losh /// 1200d1ba665SWarner Losh /// Event to use with WaitForEvent() to wait for a key to be available 1210d1ba665SWarner Losh /// 1220d1ba665SWarner Losh EFI_EVENT WaitForKey; 1230d1ba665SWarner Losh }; 1240d1ba665SWarner Losh 1250d1ba665SWarner Losh extern EFI_GUID gEfiSimpleTextInProtocolGuid; 1260d1ba665SWarner Losh 1270d1ba665SWarner Losh #endif 128