diff --git a/src/util.c b/src/util.c index 471ada8..82b5dd7 100644 --- a/src/util.c +++ b/src/util.c @@ -82,6 +82,13 @@ void WaitKey(void) { WaitForSingleEvent(ST->ConIn->WaitForKey, 0); } +EFI_INPUT_KEY ReadKey(void) { + WaitKey(); + EFI_INPUT_KEY key = {0}; + ST->ConIn->ReadKeyStroke(ST->ConIn, &key); + return key; +} + void* LoadFileWithPadding(EFI_FILE_HANDLE dir, const CHAR16* path, UINTN* size_ptr, UINTN padding) { EFI_STATUS e; EFI_FILE_HANDLE handle; diff --git a/src/util.h b/src/util.h index ee7d00a..6a39d19 100644 --- a/src/util.h +++ b/src/util.h @@ -83,10 +83,17 @@ extern void RandomSeed(UINT64 a, UINT64 b); extern void RandomSeedAuto(void); /** - * Wait for a key press. + * Wait for a key press. It will still remain in the buffer. */ extern void WaitKey(void); +/** + * Wait for a key press and read it. + * + * @return The pressed key. + */ +extern EFI_INPUT_KEY ReadKey(void); + /** * Load a file, allocate some extra bytes as well. */