]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Nt32Pkg/WinNtGopDxe/WinNtGop.h
Nt32Pkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / Nt32Pkg / WinNtGopDxe / WinNtGop.h
index cc7283ebf688c41fead3a1e7d3878a06603091ee..fbf1e0beca12f89b6ec4265c3018b75a2e5134c9 100644 (file)
@@ -1,13 +1,7 @@
 /** @file\r
 \r
-Copyright (c) 2006, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 Module Name:\r
 \r
@@ -23,41 +17,63 @@ Abstract:
 #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
-//\r
-// Driver Consumed Protocols\r
-//\r
-//@MT:#include EFI_PROTOCOL_DEFINITION (DevicePath)\r
-//@MT:#include EFI_PROTOCOL_DEFINITION (WinNtIo)\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 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
+// 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
+#define KEYBOARD_TIMER_INTERVAL         200000  // 0.02s\r
 \r
 #define MAX_Q 256\r
 \r
 typedef struct {\r
-  UINTN         Front;\r
-  UINTN         Rear;\r
-  UINTN         Count;\r
-  EFI_INPUT_KEY Q[MAX_Q];\r
+  UINTN             Front;\r
+  UINTN             Rear;\r
+  EFI_KEY_DATA      Q[MAX_Q];\r
+  CRITICAL_SECTION  Cs;\r
 } GOP_QUEUE_FIXED;\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_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
@@ -109,12 +125,31 @@ typedef struct {
   EFI_GRAPHICS_OUTPUT_BLT_PIXEL *FillLine;\r
 \r
   //\r
-  // Keyboard Queue used by Simple Text In. WinProc thread adds, and main\r
-  // thread removes.\r
+  // Keyboard Queue used by Simple Text In.\r
+  // QueueForRead:   WinProc thread adds, and main thread removes.\r
+  // QueueForNotify: WinProc thread adds, and timer thread removes.\r
   //\r
-  CRITICAL_SECTION              QCriticalSection;\r
-  GOP_QUEUE_FIXED               Queue;\r
-\r
+  GOP_QUEUE_FIXED               QueueForRead;\r
+  GOP_QUEUE_FIXED               QueueForNotify;\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
+  BOOLEAN                           IsPartialKeySupport;\r
+  EFI_EVENT                         TimerEvent;\r
 } GOP_PRIVATE_DATA;\r
 \r
 #define GOP_PRIVATE_DATA_FROM_THIS(a)  \\r
@@ -123,11 +158,16 @@ typedef struct {
 #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
@@ -144,8 +184,7 @@ extern EFI_COMPONENT_NAME_PROTOCOL  gWinNtGopComponentName;
 EFI_STATUS\r
 WinNtGopSupported (\r
   IN  EFI_WIN_NT_IO_PROTOCOL  *WinNtIo\r
-  )\r
-;\r
+  );\r
 \r
 \r
 /**\r
@@ -159,8 +198,7 @@ WinNtGopSupported (
 EFI_STATUS\r
 WinNtGopConstructor (\r
   IN  GOP_PRIVATE_DATA    *Private\r
-  )\r
-;\r
+  );\r
 \r
 \r
 /**\r
@@ -174,11 +212,10 @@ WinNtGopConstructor (
 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
@@ -196,8 +233,7 @@ EFIAPI
 WinNtGopInitialize (\r
   IN EFI_HANDLE            ImageHandle,\r
   IN EFI_SYSTEM_TABLE      *SystemTable\r
-  )\r
-;\r
+  );\r
 \r
 \r
 /**\r
@@ -216,8 +252,7 @@ WinNtGopDriverBindingSupported (
   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
@@ -236,8 +271,7 @@ WinNtGopDriverBindingStart (
   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
@@ -258,8 +292,7 @@ WinNtGopDriverBindingStop (
   IN  EFI_HANDLE                   Handle,\r
   IN  UINTN                        NumberOfChildren,\r
   IN  EFI_HANDLE                   *ChildHandleBuffer\r
-  )\r
-;\r
+  );\r
 \r
 \r
 /**\r
@@ -272,11 +305,10 @@ WinNtGopDriverBindingStop (
 \r
 **/\r
 EFI_STATUS\r
-GopPrivateAddQ (\r
+GopPrivateAddKey (\r
   IN  GOP_PRIVATE_DATA    *Private,\r
   IN  EFI_INPUT_KEY       Key\r
-  )\r
-;\r
+  );\r
 \r
 \r
 /**\r
@@ -290,8 +322,7 @@ GopPrivateAddQ (
 EFI_STATUS\r
 WinNtGopInitializeSimpleTextInForWindow (\r
   IN  GOP_PRIVATE_DATA    *Private\r
-  )\r
-;\r
+  );\r
 \r
 \r
 /**\r
@@ -305,22 +336,8 @@ WinNtGopInitializeSimpleTextInForWindow (
 EFI_STATUS\r
 WinNtGopDestroySimpleTextInForWindow (\r
   IN  GOP_PRIVATE_DATA    *Private\r
-  )\r
-;\r
-\r
+  );\r
 \r
-/**\r
-  TODO: Add function description\r
 \r
-  @param  String               TODO: add argument description\r
-\r
-  @return TODO: add return values\r
-\r
-**/\r
-UINTN\r
-Atoi (\r
-  IN  CHAR16  *String\r
-  )\r
-;\r
 \r
 #endif\r