From 6861765935d5b69803321ba6e43240845c7ab0e5 Mon Sep 17 00:00:00 2001 From: Haojian Zhuang Date: Thu, 23 Aug 2018 14:14:33 +0800 Subject: [PATCH] EmbeddedPkg/AndroidFastbootApp: only use ENTER or SPACE to exit Since hotkey 'f' is used to start AndroidFastbootApp. If user press 'f' key too long, it may be recognized pressing 'f' key multiple times. Then AndroidFastbootApp exists since it delcares any key press could make it exit. So only use ENTER or SPACE key to exit AndroidFastbootApp. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Haojian Zhuang Reviewed-by: Ard Biesheuvel --- .../AndroidFastboot/AndroidFastbootApp.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/EmbeddedPkg/Application/AndroidFastboot/AndroidFastbootApp.c b/EmbeddedPkg/Application/AndroidFastboot/AndroidFastbootApp.c index c5e8a7e34a..c1ed94f92b 100644 --- a/EmbeddedPkg/Application/AndroidFastboot/AndroidFastbootApp.c +++ b/EmbeddedPkg/Application/AndroidFastboot/AndroidFastbootApp.c @@ -426,6 +426,7 @@ FastbootAppEntryPoint ( EFI_EVENT WaitEventArray[2]; UINTN EventIndex; EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn; + EFI_INPUT_KEY Key; mDataBuffer = NULL; @@ -508,12 +509,21 @@ FastbootAppEntryPoint ( // Talk to the user mTextOut->OutputString (mTextOut, - L"Android Fastboot mode - version " ANDROID_FASTBOOT_VERSION ". Press any key to quit.\r\n"); + L"Android Fastboot mode - version " ANDROID_FASTBOOT_VERSION ". Press RETURN or SPACE key to quit.\r\n"); // Quit when the user presses any key, or mFinishedEvent is signalled WaitEventArray[0] = mFinishedEvent; WaitEventArray[1] = TextIn->WaitForKey; - gBS->WaitForEvent (2, WaitEventArray, &EventIndex); + while (1) { + gBS->WaitForEvent (2, WaitEventArray, &EventIndex); + Status = TextIn->ReadKeyStroke (gST->ConIn, &Key); + if (Key.ScanCode == SCAN_NULL) { + if ((Key.UnicodeChar == CHAR_CARRIAGE_RETURN) || + (Key.UnicodeChar == L' ')) { + break; + } + } + } mTransport->Stop (); if (EFI_ERROR (Status)) { -- 2.39.2