]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDebug1CommandsLib/EditMenuBar.c
ShellPkg/pci: Fix extended register dumping for MFVC capability
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / EditMenuBar.c
index 390c707bc6ecdd14c3ae81c50bca586c0571aab9..2e00b90c6b4d4c9236638f0b26d712f19ea9ab60 100644 (file)
 #include "UefiShellDebug1CommandsLib.h"\r
 #include "EditStatusBar.h"\r
 \r
-EDITOR_MENU_ITEM  *MenuItems;\r
+EDITOR_MENU_ITEM   *MenuItems;\r
+MENU_ITEM_FUNCTION *ControlBasedMenuFunctions;\r
 UINTN                 NumItems;\r
 \r
 /**\r
   Cleanup function for a menu bar.  frees all allocated memory.\r
 **/\r
 VOID\r
-EFIAPI\r
 MenuBarCleanup (\r
   VOID\r
   )\r
@@ -32,7 +32,7 @@ MenuBarCleanup (
 }\r
 \r
 /**\r
-  Initializa the menu bar with the specified items.\r
+  Initialize the menu bar with the specified items.\r
 \r
   @param[in] Items              The items to display and their functions.\r
 \r
@@ -40,7 +40,6 @@ MenuBarCleanup (
   @retval EFI_OUT_OF_RESOURCES  A memory allocation failed.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 MenuBarInit (\r
   IN CONST EDITOR_MENU_ITEM  *Items\r
   )\r
@@ -57,6 +56,21 @@ MenuBarInit (
   return EFI_SUCCESS;\r
 }\r
 \r
+/**\r
+  Initialize the control hot-key with the specified items.\r
+\r
+  @param[in] Items              The hot-key functions.\r
+\r
+  @retval EFI_SUCCESS           The initialization was correct.\r
+**/\r
+EFI_STATUS\r
+ControlHotKeyInit (\r
+  IN MENU_ITEM_FUNCTION  *Items\r
+  )\r
+{\r
+  ControlBasedMenuFunctions = Items;\r
+  return EFI_SUCCESS; \r
+}\r
 /**\r
   Refresh function for the menu bar.\r
 \r
@@ -66,7 +80,6 @@ MenuBarInit (
   @retval EFI_SUCCESS           The refresh was successful.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 MenuBarRefresh (\r
   IN CONST UINTN LastRow,\r
   IN CONST UINTN LastCol\r
@@ -130,7 +143,6 @@ MenuBarRefresh (
   @return The return value from the called dispatch function.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 MenuBarDispatchFunctionKey (\r
   IN CONST EFI_INPUT_KEY   *Key\r
   )\r
@@ -150,3 +162,29 @@ MenuBarDispatchFunctionKey (
   return (MenuItems[Index].Function ());\r
 }\r
 \r
+/**\r
+  Function to dispatch the correct function based on a control-based key (ctrl+o...)\r
+\r
+  @param[in] Key                The pressed key.\r
+\r
+  @retval EFI_NOT_FOUND         The key was not a valid control-based key \r
+                                (an error was sent to the status bar).\r
+  @return EFI_SUCCESS.\r
+**/\r
+EFI_STATUS\r
+MenuBarDispatchControlHotKey (\r
+  IN CONST EFI_INPUT_KEY   *Key\r
+  )\r
+{\r
+  \r
+  if ((SCAN_CONTROL_Z < Key->UnicodeChar)\r
+    ||(NULL == ControlBasedMenuFunctions[Key->UnicodeChar]))\r
+  {\r
+      return EFI_NOT_FOUND;\r
+  }\r
+\r
+  ControlBasedMenuFunctions[Key->UnicodeChar]();\r
+  return EFI_SUCCESS;\r
+}\r
+\r
+\r