4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Simple Text Input protocol from the UEFI 2.0 specification.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Abstraction of a very simple input device like a keyboard or serial
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync terminal.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync http://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef __SIMPLE_TEXT_IN_PROTOCOL_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define __SIMPLE_TEXT_IN_PROTOCOL_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Protocol GUID name defined in EFI1.1.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SIMPLE_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Protocol name in EFI1.1 for backward-compatible.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL SIMPLE_INPUT_INTERFACE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// The keystroke information for the key that was pressed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 ScanCode;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR16 UnicodeChar;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_INPUT_KEY;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// Required unicode control chars
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define CHAR_NULL 0x0000
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define CHAR_BACKSPACE 0x0008
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define CHAR_TAB 0x0009
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define CHAR_LINEFEED 0x000A
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define CHAR_CARRIAGE_RETURN 0x000D
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync// EFI Scan codes
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync//
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_NULL 0x0000
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_UP 0x0001
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_DOWN 0x0002
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_RIGHT 0x0003
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_LEFT 0x0004
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_HOME 0x0005
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_END 0x0006
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_INSERT 0x0007
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_DELETE 0x0008
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_PAGE_UP 0x0009
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_PAGE_DOWN 0x000A
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_F1 0x000B
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_F2 0x000C
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_F3 0x000D
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_F4 0x000E
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_F5 0x000F
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_F6 0x0010
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_F7 0x0011
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_F8 0x0012
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_F9 0x0013
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_F10 0x0014
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define SCAN_ESC 0x0017
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Reset the input device and optionally run diagnostics
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This Protocol instance pointer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ExtendedVerification Driver may perform diagnostics on reset.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The device was reset.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR The device is not functioning properly and could not be reset.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_INPUT_RESET)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN ExtendedVerification
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Reads the next keystroke from the input device. The WaitForKey Event can
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync be used to test for existence of a keystroke via WaitForEvent () call.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This Protocol instance pointer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Key A pointer to a buffer that is filled in with the keystroke
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync information for the key that was pressed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The keystroke information was returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_READY There was no keystroke data available.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR The keystroke information was not returned due to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync hardware errors.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_INPUT_READ_KEY)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT EFI_INPUT_KEY *Key
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// The EFI_SIMPLE_TEXT_INPUT_PROTOCOL is used on the ConsoleIn device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// It is the minimum required protocol for ConsoleIn.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_INPUT_RESET Reset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_INPUT_READ_KEY ReadKeyStroke;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync /// Event to use with WaitForEvent() to wait for a key to be available
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_EVENT WaitForKey;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiSimpleTextInProtocolGuid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif