We would prefer to keep PCD, as Esc can conflict with Grub on normal (not Chromebook) devices Thank you On Mon, 21 Feb 2022 at 05:26, Ni, Ray wrote: > Can you just map both ESC and F2 to the UI? So that PCD is not needed. > > Thanks, > Ray > > -----Original Message----- > From: Sean Rhodes > Sent: Monday, February 21, 2022 5:39 AM > To: devel@edk2.groups.io > Cc: Dong, Guo ; Rhodes, Sean ; > Ni, Ray ; Ma, Maurice ; You, > Benjamin > Subject: [PATCH] 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 > Cc: Ray Ni > Cc: Maurice Ma > Cc: Benjamin You > Signed-off-by: Sean Rhodes > --- > .../Library/BrotliCustomDecompressLib/brotli | 2 +- > .../PlatformBootManager.c | 44 +++++++++++++------ > .../PlatformBootManagerLib.inf | 1 + > UefiPayloadPkg/UefiPayloadPkg.dec | 3 ++ > UefiPayloadPkg/UefiPayloadPkg.dsc | 3 ++ > 5 files changed, 39 insertions(+), 14 deletions(-) > > diff --git a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli > b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli > index f4153a09f8..666c3280cc 160000 > --- a/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli > +++ b/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli > @@ -1 +1 @@ > -Subproject commit f4153a09f87cbb9c826d8fc12c74642bb2d879ea > +Subproject commit 666c3280cc11dc433c303d79a83d4ffbdd12cc8d > diff --git > a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c > b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c > index a8ead775ea..0eb577313a 100644 > --- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c > +++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManager.c > @@ -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" > > + ); > > + } > > } > > > > /** > > diff --git > a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf > b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf > index 9c4a9da943..80390e0d98 100644 > --- > a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf > +++ > b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf > @@ -73,3 +73,4 @@ > gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity > > gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits > > gEfiMdeModulePkgTokenSpaceGuid.PcdBootManagerMenuFile > > + gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape > > diff --git a/UefiPayloadPkg/UefiPayloadPkg.dec > b/UefiPayloadPkg/UefiPayloadPkg.dec > index 551f0a4915..f2fcdf6a74 100644 > --- a/UefiPayloadPkg/UefiPayloadPkg.dec > +++ b/UefiPayloadPkg/UefiPayloadPkg.dec > @@ -83,6 +83,9 @@ > gUefiPayloadPkgTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000|UINT32|0x > > > gUefiPayloadPkgTokenSpaceGuid.PcdPcdDriverFile|{ 0x57, 0x72, 0xcf, 0x80, > 0xab, 0x87, 0xf9, 0x47, 0xa3, 0xfe, 0xD5, 0x0B, 0x76, 0xd8, 0x95, 0x41 > }|VOID*|0x00000018 > > > > +# Boot Manager Key > > > +gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|FALSE|BOOLEAN|0x00000020 > > + > > ## FFS filename to find the default variable initial data file. > > # @Prompt FFS Name of variable initial data file > > gUefiPayloadPkgTokenSpaceGuid.PcdNvsDataFile |{ 0x1a, 0xf1, 0xb1, 0xae, > 0x42, 0xcc, 0xcf, 0x4e, 0xac, 0x60, 0xdb, 0xab, 0xf6, 0xca, 0x69, 0xe6 > }|VOID*|0x00000025 > > diff --git a/UefiPayloadPkg/UefiPayloadPkg.dsc > b/UefiPayloadPkg/UefiPayloadPkg.dsc > index 1ce96a51c1..ee9680a2b7 100644 > --- a/UefiPayloadPkg/UefiPayloadPkg.dsc > +++ b/UefiPayloadPkg/UefiPayloadPkg.dsc > @@ -33,6 +33,7 @@ > DEFINE UNIVERSAL_PAYLOAD = FALSE > > DEFINE SECURITY_STUB_ENABLE = TRUE > > DEFINE SMM_SUPPORT = FALSE > > + DEFINE BOOT_MANAGER_ESCAPE = FALSE > > # > > # SBL: UEFI payload for Slim Bootloader > > # COREBOOT: UEFI payload for coreboot > > @@ -399,6 +400,8 @@ > gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask | 0x1 > > !endif > > > > + > gUefiPayloadPkgTokenSpaceGuid.PcdBootManagerEscape|$(BOOT_MANAGER_ESCAPE) > > + > > [PcdsPatchableInModule.X64] > > gPcAtChipsetPkgTokenSpaceGuid.PcdRtcIndexRegister|$(RTC_INDEX_REGISTER) > > > gPcAtChipsetPkgTokenSpaceGuid.PcdRtcTargetRegister|$(RTC_TARGET_REGISTER) > > -- > 2.32.0 > >