From 5615440df5d3a6fe316394167514da056b46dd04 Mon Sep 17 00:00:00 2001 From: belliash Date: Sun, 31 Jul 2022 18:54:00 +0200 Subject: [PATCH] Add EFI console extension protocol --- sdk/xtdk/xtuefi.h | 45 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/sdk/xtdk/xtuefi.h b/sdk/xtdk/xtuefi.h index 2e18eca..566c852 100644 --- a/sdk/xtdk/xtuefi.h +++ b/sdk/xtdk/xtuefi.h @@ -165,6 +165,9 @@ typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL, * typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL, *PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL; typedef struct _EFI_SIMPLE_TEXT_OUTPUT_MODE EFI_SIMPLE_TEXT_OUTPUT_MODE, *PEFI_SIMPLE_TEXT_OUTPUT_MODE; typedef struct _EFI_INPUT_KEY EFI_INPUT_KEY, *PEFI_INPUT_KEY; +typedef struct _EFI_KEY_STATE EFI_KEY_STATE, *PEFI_KEY_STATE; +typedef struct _EFI_KEY_DATA EFI_KEY_DATA, *PEFI_KEY_DATA; +typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL, *PEFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL; typedef struct _EFI_SYSTEM_TABLE EFI_SYSTEM_TABLE, *PEFI_SYSTEM_TABLE; typedef struct _EFI_IPv4_ADDRESS EFI_IPv4_ADDRESS, *PEFI_IPv4_ADDRESS; typedef struct _EFI_IPv6_ADDRESS EFI_IPv6_ADDRESS, *PEFI_IPv6_ADDRESS; @@ -290,6 +293,12 @@ typedef EFI_STATUS (*PEFI_TEXT_SET_ATTRIBUTE)(IN PEFI_SIMPLE_TEXT_OUTPUT_PROTOCO typedef EFI_STATUS (*PEFI_TEXT_CLEAR_SCREEN)(IN PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This); typedef EFI_STATUS (*PEFI_TEXT_SET_CURSOR_POSITION)(IN PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This, IN UINT_PTR Column, IN UINT_PTR Row); typedef EFI_STATUS (*PEFI_TEXT_ENABLE_CURSOR)(IN PEFI_SIMPLE_TEXT_OUTPUT_PROTOCOL This, IN BOOLEAN Enable); +typedef EFI_STATUS (*PEFI_INPUT_RESET_EX)(IN PEFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL This, IN BOOLEAN ExtendedVerification); +typedef EFI_STATUS (*PEFI_INPUT_READ_KEY_EX)(IN PEFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL This, OUT PEFI_KEY_DATA KeyData); +typedef EFI_STATUS (*PEFI_SET_STATE)(IN PEFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL This, IN PUINT8 KeyToggleState); +typedef EFI_STATUS (*PEFI_KEY_NOTIFY_FUNCTION)(IN PEFI_KEY_DATA KeyData); +typedef EFI_STATUS (*PEFI_REGISTER_KEYSTROKE_NOTIFY)(IN PEFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL This, IN PEFI_KEY_DATA KeyData, IN PEFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction, OUT PVOID *NotifyHandle); +typedef EFI_STATUS (*PEFI_UNREGISTER_KEYSTROKE_NOTIFY)(IN PEFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL This, IN PVOID NotificationHandle); typedef PUINT16(*PEFI_DEVICE_PATH_TO_TEXT_NODE)(IN CONST PEFI_DEVICE_PATH_PROTOCOL DeviceNode, IN BOOLEAN DisplayOnly, IN BOOLEAN AllowShortcuts); typedef PUINT16(*PEFI_DEVICE_PATH_TO_TEXT_PATH)(IN CONST PEFI_DEVICE_PATH_PROTOCOL DevicePath, IN BOOLEAN DisplayOnly, IN BOOLEAN AllowShortcuts); typedef PEFI_DEVICE_PATH_PROTOCOL(*PEFI_DEVICE_PATH_FROM_TEXT_NODE)(IN CONST PUINT16 TextDeviceNode); @@ -528,6 +537,31 @@ typedef struct _EFI_INPUT_KEY UINT16 UnicodeChar; } EFI_INPUT_KEY, *PEFI_INPUT_KEY; +/* EFI Key State information */ +typedef struct _EFI_KEY_STATE +{ + UINT32 KeyShiftState; + UINT8 KeyToggleState; +} EFI_KEY_STATE, *PEFI_KEY_STATE; + +/* EFI Key Data information */ +typedef struct _EFI_KEY_DATA +{ + EFI_INPUT_KEY Key; + EFI_KEY_STATE KeyState; +} EFI_KEY_DATA, *PEFI_KEY_DATA; + +/* EFI Simple Text Input Ex protocol */ +typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL +{ + PEFI_INPUT_RESET_EX Reset; + PEFI_INPUT_READ_KEY_EX ReadKeyStrokeEx; + EFI_EVENT WaitForKeyEx; + PEFI_SET_STATE SetState; + PEFI_REGISTER_KEYSTROKE_NOTIFY RegisterKeyNotify; + PEFI_UNREGISTER_KEYSTROKE_NOTIFY UnregisterKeyNotify; +} EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL, *PEFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL; + /* EFI System Table */ typedef struct _EFI_SYSTEM_TABLE { @@ -1054,15 +1088,4 @@ typedef struct _EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL UINT32 SegmentNumber; } EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL, *PEFI_PCI_ROOT_BRIDGE_IO_PROTOCOL; - - - - - - - - - - - #endif /* __XTDK_XTUEFI_H */