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
 |