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;