REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
		
			
				
	
	
		
			313 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			313 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Simple Text Input Ex protocol from the UEFI 2.0 specification.
 | 
						|
 | 
						|
  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.
 | 
						|
 | 
						|
  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef __SIMPLE_TEXT_IN_EX_H__
 | 
						|
#define __SIMPLE_TEXT_IN_EX_H__
 | 
						|
 | 
						|
#include <Protocol/SimpleTextIn.h>
 | 
						|
 | 
						|
#define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID \
 | 
						|
  {0xdd9e7534, 0x7762, 0x4698, { 0x8c, 0x14, 0xf5, 0x85, 0x17, 0xa6, 0x25, 0xaa } }
 | 
						|
 | 
						|
typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL;
 | 
						|
 | 
						|
/**
 | 
						|
  The Reset() function resets the input device hardware. As part
 | 
						|
  of initialization process, the firmware/device will make a quick
 | 
						|
  but reasonable attempt to verify that the device is functioning.
 | 
						|
  If the ExtendedVerification flag is TRUE the firmware may take
 | 
						|
  an extended amount of time to verify the device is operating on
 | 
						|
  reset. Otherwise the reset operation is to occur as quickly as
 | 
						|
  possible. The hardware verification process is not defined by
 | 
						|
  this specification and is left up to the platform firmware or
 | 
						|
  driver to implement.
 | 
						|
 | 
						|
  @param This                 A pointer to the EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL instance.
 | 
						|
 | 
						|
  @param ExtendedVerification Indicates that the driver may
 | 
						|
                              perform a more exhaustive
 | 
						|
                              verification operation of the
 | 
						|
                              device during reset.
 | 
						|
 | 
						|
 | 
						|
  @retval EFI_SUCCESS       The device was reset.
 | 
						|
 | 
						|
  @retval EFI_DEVICE_ERROR  The device is not functioning
 | 
						|
                            correctly and could not be reset.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_INPUT_RESET_EX)(
 | 
						|
  IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
 | 
						|
  IN BOOLEAN                           ExtendedVerification
 | 
						|
  );
 | 
						|
 | 
						|
///
 | 
						|
/// 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;
 | 
						|
 | 
						|
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;
 | 
						|
 | 
						|
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;
 | 
						|
 | 
						|
//
 | 
						|
// Any Shift or Toggle State that is valid should have
 | 
						|
// high order bit set.
 | 
						|
//
 | 
						|
// Shift state
 | 
						|
//
 | 
						|
#define EFI_SHIFT_STATE_VALID      0x80000000
 | 
						|
#define EFI_RIGHT_SHIFT_PRESSED    0x00000001
 | 
						|
#define EFI_LEFT_SHIFT_PRESSED     0x00000002
 | 
						|
#define EFI_RIGHT_CONTROL_PRESSED  0x00000004
 | 
						|
#define EFI_LEFT_CONTROL_PRESSED   0x00000008
 | 
						|
#define EFI_RIGHT_ALT_PRESSED      0x00000010
 | 
						|
#define EFI_LEFT_ALT_PRESSED       0x00000020
 | 
						|
#define EFI_RIGHT_LOGO_PRESSED     0x00000040
 | 
						|
#define EFI_LEFT_LOGO_PRESSED      0x00000080
 | 
						|
#define EFI_MENU_KEY_PRESSED       0x00000100
 | 
						|
#define EFI_SYS_REQ_PRESSED        0x00000200
 | 
						|
 | 
						|
//
 | 
						|
// 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
 | 
						|
//
 | 
						|
#define SCAN_F11              0x0015
 | 
						|
#define SCAN_F12              0x0016
 | 
						|
#define SCAN_PAUSE            0x0048
 | 
						|
#define SCAN_F13              0x0068
 | 
						|
#define SCAN_F14              0x0069
 | 
						|
#define SCAN_F15              0x006A
 | 
						|
#define SCAN_F16              0x006B
 | 
						|
#define SCAN_F17              0x006C
 | 
						|
#define SCAN_F18              0x006D
 | 
						|
#define SCAN_F19              0x006E
 | 
						|
#define SCAN_F20              0x006F
 | 
						|
#define SCAN_F21              0x0070
 | 
						|
#define SCAN_F22              0x0071
 | 
						|
#define SCAN_F23              0x0072
 | 
						|
#define SCAN_F24              0x0073
 | 
						|
#define SCAN_MUTE             0x007F
 | 
						|
#define SCAN_VOLUME_UP        0x0080
 | 
						|
#define SCAN_VOLUME_DOWN      0x0081
 | 
						|
#define SCAN_BRIGHTNESS_UP    0x0100
 | 
						|
#define SCAN_BRIGHTNESS_DOWN  0x0101
 | 
						|
#define SCAN_SUSPEND          0x0102
 | 
						|
#define SCAN_HIBERNATE        0x0103
 | 
						|
#define SCAN_TOGGLE_DISPLAY   0x0104
 | 
						|
#define SCAN_RECOVERY         0x0105
 | 
						|
#define SCAN_EJECT            0x0106
 | 
						|
 | 
						|
/**
 | 
						|
  The function reads the next keystroke from the input device. If
 | 
						|
  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
 | 
						|
  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
 | 
						|
  reflected in KeyData.Key.UnicodeChar or KeyData.Key.ScanCode .
 | 
						|
  When interpreting the data from this function, it should be
 | 
						|
  noted that if a class of printable characters that are
 | 
						|
  normally adjusted by shift modifiers (e.g. Shift Key + "f"
 | 
						|
  key) would be presented solely as a KeyData.Key.UnicodeChar
 | 
						|
  without the associated shift state. So in the previous example
 | 
						|
  of a Shift Key + "f" key being pressed, the only pertinent
 | 
						|
  data returned would be KeyData.Key.UnicodeChar with the value
 | 
						|
  of "F". This of course would not typically be the case for
 | 
						|
  non-printable characters such as the pressing of the Right
 | 
						|
  Shift Key + F10 key since the corresponding returned data
 | 
						|
  would be reflected both in the KeyData.KeyState.KeyShiftState
 | 
						|
  and KeyData.Key.ScanCode values. UEFI drivers which implement
 | 
						|
  the EFI_SIMPLE_TEXT_INPUT_EX protocol are required to return
 | 
						|
  KeyData.Key and KeyData.KeyState values. These drivers must
 | 
						|
  always return the most current state of
 | 
						|
  KeyData.KeyState.KeyShiftState and
 | 
						|
  KeyData.KeyState.KeyToggleState. It should also be noted that
 | 
						|
  certain input devices may not be able to produce shift or toggle
 | 
						|
  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.
 | 
						|
  @retval EFI_DEVICE_ERROR The keystroke information was not returned due to
 | 
						|
                           hardware errors.
 | 
						|
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_INPUT_READ_KEY_EX)(
 | 
						|
  IN  EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
 | 
						|
  OUT EFI_KEY_DATA                      *KeyData
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  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
 | 
						|
                            correctly and could not have the
 | 
						|
                            setting adjusted.
 | 
						|
 | 
						|
  @retval EFI_UNSUPPORTED   The device does not support the
 | 
						|
                            ability to have its state set.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_SET_STATE)(
 | 
						|
  IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
 | 
						|
  IN EFI_KEY_TOGGLE_STATE              *KeyToggleState
 | 
						|
  );
 | 
						|
 | 
						|
///
 | 
						|
/// The function will be called when the key sequence is typed specified by KeyData.
 | 
						|
///
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_KEY_NOTIFY_FUNCTION)(
 | 
						|
  IN EFI_KEY_DATA *KeyData
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  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. 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           Key notify was registered successfully.
 | 
						|
 | 
						|
  @retval EFI_OUT_OF_RESOURCES  Unable to allocate necessary
 | 
						|
                                data structures.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_REGISTER_KEYSTROKE_NOTIFY)(
 | 
						|
  IN  EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
 | 
						|
  IN  EFI_KEY_DATA                      *KeyData,
 | 
						|
  IN  EFI_KEY_NOTIFY_FUNCTION           KeyNotificationFunction,
 | 
						|
  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           Key notify was unregistered successfully.
 | 
						|
 | 
						|
  @retval EFI_INVALID_PARAMETER The NotificationHandle is
 | 
						|
                                invalid.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_UNREGISTER_KEYSTROKE_NOTIFY)(
 | 
						|
  IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *This,
 | 
						|
  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.
 | 
						|
///
 | 
						|
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;
 | 
						|
  EFI_UNREGISTER_KEYSTROKE_NOTIFY    UnregisterKeyNotify;
 | 
						|
};
 | 
						|
 | 
						|
extern EFI_GUID  gEfiSimpleTextInputExProtocolGuid;
 | 
						|
 | 
						|
#endif
 |