#ifndef _WIN_NT_GOP_H_\r
#define _WIN_NT_GOP_H_\r
\r
-//\r
-// Include common header file for this module.\r
-//\r
-#include "CommonHeader.h"\r
\r
-//@MT:#include "EfiWinNT.h"\r
-//@MT:#include "Tiano.h"\r
-//@MT:#include "EfiDriverLib.h"\r
+#include <Uefi.h>\r
+#include <WinNtDxe.h>\r
+\r
+#include <Guid/EventGroup.h>\r
+#include <Protocol/WinNtIo.h>\r
+#include <Protocol/ComponentName.h>\r
+#include <Protocol/SimpleTextIn.h>\r
+#include <Protocol/SimpleTextInEx.h>\r
+#include <Protocol/DriverBinding.h>\r
+#include <Protocol/GraphicsOutput.h>\r
+\r
+#include <Library/DebugLib.h>\r
+#include <Library/BaseLib.h>\r
+#include <Library/UefiDriverEntryPoint.h>\r
+#include <Library/UefiLib.h>\r
+#include <Library/BaseMemoryLib.h>\r
+#include <Library/UefiBootServicesTableLib.h>\r
+#include <Library/MemoryAllocationLib.h>\r
\r
//\r
-// Driver Consumed Protocols\r
-//\r
-//@MT:#include EFI_PROTOCOL_DEFINITION (DevicePath)\r
-//@MT:#include EFI_PROTOCOL_DEFINITION (WinNtIo)\r
+// WM_SYSKEYDOWN/WM_SYSKEYUP Notification\r
+// lParam\r
+// bit 24: Specifies whether the key is an extended key, \r
+// such as the right-hand ALT and CTRL keys that appear on \r
+// an enhanced 101- or 102-key keyboard. \r
+// The value is 1 if it is an extended key; otherwise, it is 0.\r
+// bit 29:Specifies the context code. \r
+// The value is 1 if the ALT key is down while the key is pressed/released; \r
+// it is 0 if the WM_SYSKEYDOWN message is posted to the active window \r
+// because no window has the keyboard focus.\r
+#define GOP_EXTENDED_KEY (0x1 << 24)\r
+#define GOP_ALT_KEY_PRESSED (0x1 << 29)\r
\r
-//\r
-// Driver Produced Protocols\r
-//\r
-//@MT:#include EFI_PROTOCOL_DEFINITION (DriverBinding)\r
-//@MT:#include EFI_PROTOCOL_DEFINITION (ComponentName)\r
-//@MT:#include EFI_PROTOCOL_DEFINITION (GraphicsOutput)\r
-//@MT:#include "LinkedList.h"\r
\r
#define MAX_Q 256\r
\r
\r
#define WIN_NT_GOP_CLASS_NAME L"WinNtGopWindow"\r
\r
-#define GOP_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('S', 'g', 'o', 'N')\r
+#define GOP_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('S', 'g', 'o', 'N')\r
+\r
+#define WIN_NT_GOP_SIMPLE_TEXTIN_EX_NOTIFY_SIGNATURE SIGNATURE_32 ('W', 'g', 'S', 'n')\r
+\r
+typedef struct _WIN_NT_GOP_SIMPLE_TEXTIN_EX_NOTIFY {\r
+ UINTN Signature;\r
+ EFI_HANDLE NotifyHandle;\r
+ EFI_KEY_DATA KeyData;\r
+ EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn;\r
+ LIST_ENTRY NotifyEntry;\r
+} WIN_NT_GOP_SIMPLE_TEXTIN_EX_NOTIFY;\r
\r
#define GRAPHICS_OUTPUT_INVALIDE_MODE_NUMBER 0xffff\r
\r
CRITICAL_SECTION QCriticalSection;\r
GOP_QUEUE_FIXED Queue;\r
\r
+ EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL SimpleTextInEx;\r
+ EFI_KEY_STATE KeyState;\r
+ LIST_ENTRY NotifyList;\r
+ BOOLEAN LeftShift;\r
+ BOOLEAN RightShift; \r
+ BOOLEAN LeftAlt;\r
+ BOOLEAN RightAlt;\r
+ BOOLEAN LeftCtrl;\r
+ BOOLEAN RightCtrl;\r
+ BOOLEAN LeftLogo;\r
+ BOOLEAN RightLogo;\r
+ BOOLEAN Menu;\r
+ BOOLEAN SysReq; \r
+ BOOLEAN NumLock;\r
+ BOOLEAN ScrollLock;\r
+ BOOLEAN CapsLock; \r
} GOP_PRIVATE_DATA;\r
\r
#define GOP_PRIVATE_DATA_FROM_THIS(a) \\r
#define GOP_PRIVATE_DATA_FROM_TEXT_IN_THIS(a) \\r
CR(a, GOP_PRIVATE_DATA, SimpleTextIn, GOP_PRIVATE_DATA_SIGNATURE)\r
\r
+#define GOP_PRIVATE_DATA_FROM_TEXT_IN_EX_THIS(a) \\r
+ CR(a, GOP_PRIVATE_DATA, SimpleTextInEx, GOP_PRIVATE_DATA_SIGNATURE)\r
+\r
//\r
// Global Protocol Variables\r
//\r
-extern EFI_DRIVER_BINDING_PROTOCOL gWinNtGopDriverBinding;\r
-extern EFI_COMPONENT_NAME_PROTOCOL gWinNtGopComponentName;\r
+extern EFI_DRIVER_BINDING_PROTOCOL gWinNtGopDriverBinding;\r
+extern EFI_COMPONENT_NAME_PROTOCOL gWinNtGopComponentName;\r
+extern EFI_COMPONENT_NAME2_PROTOCOL gWinNtGopComponentName2;\r
+\r
\r
//\r
// Gop Hardware abstraction internal worker functions\r
EFI_STATUS\r
WinNtGopSupported (\r
IN EFI_WIN_NT_IO_PROTOCOL *WinNtIo\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
EFI_STATUS\r
WinNtGopConstructor (\r
IN GOP_PRIVATE_DATA *Private\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
EFI_STATUS\r
WinNtGopDestructor (\r
IN GOP_PRIVATE_DATA *Private\r
- )\r
-;\r
+ );\r
\r
//\r
-// EFI 1.1 driver model prototypes for Win NT GOP\r
+// UEFI 2.0 driver model prototypes for Win NT GOP\r
//\r
\r
\r
WinNtGopInitialize (\r
IN EFI_HANDLE ImageHandle,\r
IN EFI_SYSTEM_TABLE *SystemTable\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
IN EFI_HANDLE Handle,\r
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
IN EFI_HANDLE Handle,\r
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
IN EFI_HANDLE Handle,\r
IN UINTN NumberOfChildren,\r
IN EFI_HANDLE *ChildHandleBuffer\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
GopPrivateAddQ (\r
IN GOP_PRIVATE_DATA *Private,\r
IN EFI_INPUT_KEY Key\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
EFI_STATUS\r
WinNtGopInitializeSimpleTextInForWindow (\r
IN GOP_PRIVATE_DATA *Private\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
EFI_STATUS\r
WinNtGopDestroySimpleTextInForWindow (\r
IN GOP_PRIVATE_DATA *Private\r
- )\r
-;\r
-\r
-\r
-/**\r
- TODO: Add function description\r
-\r
- @param String TODO: add argument description\r
+ );\r
\r
- @return TODO: add return values\r
\r
-**/\r
-UINTN\r
-Atoi (\r
- IN CHAR16 *String\r
- )\r
-;\r
\r
#endif\r