UefiPayloadPkg: Make Boot Manager Key configurable

Provide a build option to use [Esc] instead of [F2] for devices
such as Chromebooks that don't have F-keys.

Cc: Guo Dong <guo.dong@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Maurice Ma <maurice.ma@intel.com>
Cc: Benjamin You <benjamin.you@intel.com>
Signed-off-by: Sean Rhodes <sean@starlabs.systems>
Reviewed-by: Ray Ni <ray.ni@Intel.com>
Reviewed-by: Guo Dong <guo.dong@intel.com>
This commit is contained in:
Sean Rhodes
2022-03-05 03:14:34 -07:00
committed by mergify[bot]
parent 79f2734e5a
commit af74efe494
4 changed files with 37 additions and 13 deletions

View File

@ -164,7 +164,7 @@ PlatformBootManagerBeforeConsole (
)
{
EFI_INPUT_KEY Enter;
EFI_INPUT_KEY F2;
EFI_INPUT_KEY CustomKey;
EFI_INPUT_KEY Down;
EFI_BOOT_MANAGER_LOAD_OPTION BootOption;
EFI_STATUS Status;
@ -186,13 +186,22 @@ PlatformBootManagerBeforeConsole (
Enter.UnicodeChar = CHAR_CARRIAGE_RETURN;
EfiBootManagerRegisterContinueKeyOption (0, &Enter, NULL);
//
// Map F2 to Boot Manager Menu
//
F2.ScanCode = SCAN_F2;
F2.UnicodeChar = CHAR_NULL;
if (FixedPcdGetBool (PcdBootManagerEscape)) {
//
// Map Esc to Boot Manager Menu
//
CustomKey.ScanCode = SCAN_ESC;
CustomKey.UnicodeChar = CHAR_NULL;
} else {
//
// Map Esc to Boot Manager Menu
//
CustomKey.ScanCode = SCAN_F2;
CustomKey.UnicodeChar = CHAR_NULL;
}
EfiBootManagerGetBootManagerMenu (&BootOption);
EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &F2, NULL);
EfiBootManagerAddKeyOptionVariable (NULL, (UINT16)BootOption.OptionNumber, 0, &CustomKey, NULL);
//
// Also add Down key to Boot Manager Menu since some serial terminals don't support F2 key.
@ -251,12 +260,21 @@ PlatformBootManagerAfterConsole (
//
PlatformRegisterFvBootOption (PcdGetPtr (PcdShellFile), L"UEFI Shell", LOAD_OPTION_ACTIVE);
Print (
L"\n"
L"F2 or Down to enter Boot Manager Menu.\n"
L"ENTER to boot directly.\n"
L"\n"
);
if (FixedPcdGetBool (PcdBootManagerEscape)) {
Print (
L"\n"
L"Esc or Down to enter Boot Manager Menu.\n"
L"ENTER to boot directly.\n"
L"\n"
);
} else {
Print (
L"\n"
L"F2 or Down to enter Boot Manager Menu.\n"
L"ENTER to boot directly.\n"
L"\n"
);
}
}
/**