#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
}\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
@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
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
@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
@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
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