X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdePkg%2FInclude%2FProtocol%2FSimpleTextInEx.h;h=ffc11c601e1304e3ee283d4675a4a633dc4bd571;hp=3092fcbdd0952e476a4c81c66cb09ef6d13554a5;hb=2de87e461d37680ebbae455b51341dbf49a27567;hpb=4ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086 diff --git a/MdePkg/Include/Protocol/SimpleTextInEx.h b/MdePkg/Include/Protocol/SimpleTextInEx.h index 3092fcbdd0..ffc11c601e 100644 --- a/MdePkg/Include/Protocol/SimpleTextInEx.h +++ b/MdePkg/Include/Protocol/SimpleTextInEx.h @@ -1,25 +1,25 @@ /** @file - The file defines the protocol to obtain input from the - ConsoleIn device. The EFI specification requires that the - EFI_SIMPLE_TEXT_INPUT_PROTOCOL supports the same languages as - the corresponding + Simple Text Input Ex protocol from the UEFI 2.0 specification. - Copyright (c) 2006 - 2008, Intel Corporation - All rights reserved. This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php + This protocol defines an extension to the EFI_SIMPLE_TEXT_INPUT_PROTOCOL + which exposes much more state and modifier information from the input device, + also allows one to register a notification for a particular keystroke. - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ #ifndef __SIMPLE_TEXT_IN_EX_H__ #define __SIMPLE_TEXT_IN_EX_H__ -#include -#include +#include #define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID \ {0xdd9e7534, 0x7762, 0x4698, { 0x8c, 0x14, 0xf5, 0x85, 0x17, 0xa6, 0x25, 0xaa } } @@ -47,7 +47,7 @@ typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL EFI_SIMPLE_TEXT_INPUT_EX_PROTO @retval EFI_SUCCESS The device was reset. - + @retval EFI_DEVICE_ERROR The device is not functioning correctly and could not be reset. @@ -60,42 +60,38 @@ EFI_STATUS ); -// -// EFI_KEY_TOGGLE_STATE -// +/// +/// EFI_KEY_TOGGLE_STATE. The toggle states are defined. +/// They are: EFI_TOGGLE_STATE_VALID, EFI_SCROLL_LOCK_ACTIVE +/// EFI_NUM_LOCK_ACTIVE, EFI_CAPS_LOCK_ACTIVE +/// typedef UINT8 EFI_KEY_TOGGLE_STATE; -/** - Definition of EFI_KEY_STATE - - @param KeyShiftState Reflects the currently pressed shift - modifiers for the input device. The - returned value is valid only if the high - order bit has been set. - - @param KeyToggleState Reflects the current internal state of - various toggled attributes. The returned - value is valid only if the high order - bit has been set. - -**/ typedef struct _EFI_KEY_STATE { + /// + /// Reflects the currently pressed shift + /// modifiers for the input device. The + /// returned value is valid only if the high + /// order bit has been set. + /// UINT32 KeyShiftState; + /// + /// Reflects the current internal state of + /// various toggled attributes. The returned + /// value is valid only if the high order + /// bit has been set. + /// EFI_KEY_TOGGLE_STATE KeyToggleState; } EFI_KEY_STATE; -/** - Definition of EFI_KEY_DATA. - - @param Key The EFI scan code and Unicode value returned from - the input device. - - @param KeyState The current state of various toggled - attributes as well as input modifier values. - -**/ typedef struct { + /// + /// The EFI scan code and Unicode value returned from the input device. + /// EFI_INPUT_KEY Key; + /// + /// The current state of various toggled attributes as well as input modifier values. + /// EFI_KEY_STATE KeyState; } EFI_KEY_DATA; @@ -117,17 +113,21 @@ typedef struct { #define EFI_MENU_KEY_PRESSED 0x00000100 #define EFI_SYS_REQ_PRESSED 0x00000200 -// -// Toggle state -// +// +// Toggle state +// #define EFI_TOGGLE_STATE_VALID 0x80 +#define EFI_KEY_STATE_EXPOSED 0x40 #define EFI_SCROLL_LOCK_ACTIVE 0x01 #define EFI_NUM_LOCK_ACTIVE 0x02 #define EFI_CAPS_LOCK_ACTIVE 0x04 - -// -// EFI Scan codes -// + +// +// EFI Scan codes +// +#define SCAN_F11 0x0015 +#define SCAN_F12 0x0016 +#define SCAN_PAUSE 0x0048 #define SCAN_F13 0x0068 #define SCAN_F14 0x0069 #define SCAN_F15 0x006A @@ -156,7 +156,7 @@ typedef struct { there is no pending keystroke the function returns EFI_NOT_READY. If there is a pending keystroke, then KeyData.Key.ScanCode is the EFI scan code defined in Error! - Reference source not found.. The KeyData.Key.UnicodeChar is the + Reference source not found. The KeyData.Key.UnicodeChar is the actual printable character or is zero if the key does not represent a printable character (control key, function key, etc.). The KeyData.KeyState is shift state for the character @@ -182,21 +182,18 @@ typedef struct { state information, and in those cases the high order bit in the respective Toggle and Shift state fields should not be active. - + @param This A pointer to the EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL instance. @param KeyData A pointer to a buffer that is filled in with the keystroke state data for the key that was pressed. - - @retval EFI_SUCCESS The keystroke information was - returned. - - @retval EFI_NOT_READY There was no keystroke data available. - EFI_DEVICE_ERROR The keystroke - information was not returned due to - hardware errors. + + @retval EFI_SUCCESS The keystroke information was returned. + @retval EFI_NOT_READY There was no keystroke data available. + @retval EFI_DEVICE_ERROR The keystroke information was not returned due to + hardware errors. **/ @@ -210,13 +207,13 @@ EFI_STATUS /** The SetState() function allows the input device hardware to have state settings adjusted. - + @param This A pointer to the EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL instance. - + @param KeyToggleState Pointer to the EFI_KEY_TOGGLE_STATE to set the state for the input device. - - + + @retval EFI_SUCCESS The device state was set appropriately. @retval EFI_DEVICE_ERROR The device is not functioning @@ -234,9 +231,9 @@ EFI_STATUS IN EFI_KEY_TOGGLE_STATE *KeyToggleState ); -// -// EFI_KEY_NOTIFY -// +/// +/// The function will be called when the key sequence is typed specified by KeyData. +/// typedef EFI_STATUS (EFIAPI *EFI_KEY_NOTIFY_FUNCTION)( @@ -246,23 +243,24 @@ EFI_STATUS /** The RegisterKeystrokeNotify() function registers a function which will be called when a specified keystroke will occur. - + @param This A pointer to the EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL instance. - + @param KeyData A pointer to a buffer that is filled in with the keystroke information for the key that was - pressed. - - @param KeyNotificationFunction Points to the function to be - called when the key sequence - is typed specified by KeyData. - - + pressed. If KeyData.Key, KeyData.KeyState.KeyToggleState + and KeyData.KeyState.KeyShiftState are 0, then any incomplete + keystroke will trigger a notification of the KeyNotificationFunction. + + @param KeyNotificationFunction Points to the function to be called when the key sequence + is typed specified by KeyData. This notification function + should be called at <=TPL_CALLBACK. + + @param NotifyHandle Points to the unique handle assigned to the registered notification. - - @retval EFI_SUCCESS The device state was set - appropriately. + + @retval EFI_SUCCESS Key notify was registered successfully. @retval EFI_OUT_OF_RESOURCES Unable to allocate necessary data structures. @@ -274,20 +272,20 @@ EFI_STATUS IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, IN EFI_KEY_DATA *KeyData, IN EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction, - OUT EFI_HANDLE *NotifyHandle + OUT VOID **NotifyHandle ); /** The UnregisterKeystrokeNotify() function removes the notification which was previously registered. - + @param This A pointer to the EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL instance. - + @param NotificationHandle The handle of the notification function being unregistered. - - @retval EFI_SUCCESS The device state was set appropriately. - + + @retval EFI_SUCCESS Key notify was unregistered successfully. + @retval EFI_INVALID_PARAMETER The NotificationHandle is invalid. @@ -296,38 +294,22 @@ typedef EFI_STATUS (EFIAPI *EFI_UNREGISTER_KEYSTROKE_NOTIFY)( IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, - IN EFI_HANDLE NotificationHandle + IN VOID *NotificationHandle ); -/** - The EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL is used on the ConsoleIn - device. It is an extension to the Simple Text Input protocol - which allows a variety of extended shift state information to be - returned. - - @param Reset - Reset the ConsoleIn device. See Reset(). - - @param ReadKeyStrokeEx - Returns the next input character. - - @param WaitForKeyEx - Event to use with WaitForEvent() to wait for a key to be available. - - @param SetState - Set the EFI_KEY_TOGGLE_STATE state settings for the input device. - - @param RegisterKeyNotify - Register a notification function to be called when a given key sequence is hit. - - @param UnregisterKeyNotifyRemoves - A specific notification function. - -**/ +/// +/// The EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL is used on the ConsoleIn +/// device. It is an extension to the Simple Text Input protocol +/// which allows a variety of extended shift state information to be +/// returned. +/// struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL{ EFI_INPUT_RESET_EX Reset; EFI_INPUT_READ_KEY_EX ReadKeyStrokeEx; + /// + /// Event to use with WaitForEvent() to wait for a key to be available. + /// EFI_EVENT WaitForKeyEx; EFI_SET_STATE SetState; EFI_REGISTER_KEYSTROKE_NOTIFY RegisterKeyNotify;