]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Nt32Pkg/WinNtGopDxe/WinNtGop.h
UefiCpuPkg: Remove double \r
[mirror_edk2.git] / Nt32Pkg / WinNtGopDxe / WinNtGop.h
index cd52bc175ad2bb5172f464a753d0080ee42c364c..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
@@ -46,36 +40,36 @@ Abstract:
 //\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
+// 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
+// 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 EFI_SIGNATURE_32 ('W', 'g', 'S', 'n')\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
@@ -131,17 +125,18 @@ 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
+  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                           RightShift;\r
   BOOLEAN                           LeftAlt;\r
   BOOLEAN                           RightAlt;\r
   BOOLEAN                           LeftCtrl;\r
@@ -149,10 +144,12 @@ typedef struct {
   BOOLEAN                           LeftLogo;\r
   BOOLEAN                           RightLogo;\r
   BOOLEAN                           Menu;\r
-  BOOLEAN                           SysReq;  \r
+  BOOLEAN                           SysReq;\r
   BOOLEAN                           NumLock;\r
   BOOLEAN                           ScrollLock;\r
-  BOOLEAN                           CapsLock;  \r
+  BOOLEAN                           CapsLock;\r
+  BOOLEAN                           IsPartialKeySupport;\r
+  EFI_EVENT                         TimerEvent;\r
 } GOP_PRIVATE_DATA;\r
 \r
 #define GOP_PRIVATE_DATA_FROM_THIS(a)  \\r
@@ -171,7 +168,6 @@ extern EFI_DRIVER_BINDING_PROTOCOL   gWinNtGopDriverBinding;
 extern EFI_COMPONENT_NAME_PROTOCOL   gWinNtGopComponentName;\r
 extern EFI_COMPONENT_NAME2_PROTOCOL  gWinNtGopComponentName2;\r
 \r
-extern EFI_GUID                      gSimpleTextInExNotifyGuid;\r
 \r
 //\r
 // Gop Hardware abstraction internal worker functions\r
@@ -188,8 +184,7 @@ extern EFI_GUID                      gSimpleTextInExNotifyGuid;
 EFI_STATUS\r
 WinNtGopSupported (\r
   IN  EFI_WIN_NT_IO_PROTOCOL  *WinNtIo\r
-  )\r
-;\r
+  );\r
 \r
 \r
 /**\r
@@ -203,8 +198,7 @@ WinNtGopSupported (
 EFI_STATUS\r
 WinNtGopConstructor (\r
   IN  GOP_PRIVATE_DATA    *Private\r
-  )\r
-;\r
+  );\r
 \r
 \r
 /**\r
@@ -218,8 +212,7 @@ WinNtGopConstructor (
 EFI_STATUS\r
 WinNtGopDestructor (\r
   IN  GOP_PRIVATE_DATA    *Private\r
-  )\r
-;\r
+  );\r
 \r
 //\r
 // UEFI 2.0 driver model prototypes for Win NT GOP\r
@@ -240,8 +233,7 @@ EFIAPI
 WinNtGopInitialize (\r
   IN EFI_HANDLE            ImageHandle,\r
   IN EFI_SYSTEM_TABLE      *SystemTable\r
-  )\r
-;\r
+  );\r
 \r
 \r
 /**\r
@@ -260,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
@@ -280,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
@@ -302,8 +292,7 @@ WinNtGopDriverBindingStop (
   IN  EFI_HANDLE                   Handle,\r
   IN  UINTN                        NumberOfChildren,\r
   IN  EFI_HANDLE                   *ChildHandleBuffer\r
-  )\r
-;\r
+  );\r
 \r
 \r
 /**\r
@@ -316,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
@@ -334,8 +322,7 @@ GopPrivateAddQ (
 EFI_STATUS\r
 WinNtGopInitializeSimpleTextInForWindow (\r
   IN  GOP_PRIVATE_DATA    *Private\r
-  )\r
-;\r
+  );\r
 \r
 \r
 /**\r
@@ -349,8 +336,7 @@ WinNtGopInitializeSimpleTextInForWindow (
 EFI_STATUS\r
 WinNtGopDestroySimpleTextInForWindow (\r
   IN  GOP_PRIVATE_DATA    *Private\r
-  )\r
-;\r
+  );\r
 \r
 \r
 \r