Clear input key buffer before read and propagate EFI_STATUS from ReadKeyStroke
All checks were successful
All checks were successful
This commit is contained in:
@@ -221,10 +221,15 @@ Console::QueryMode(OUT PUINT_PTR ResX,
|
|||||||
* @since XT 1.0
|
* @since XT 1.0
|
||||||
*/
|
*/
|
||||||
XTCDECL
|
XTCDECL
|
||||||
VOID
|
EFI_STATUS
|
||||||
Console::ReadKeyStroke(OUT PEFI_INPUT_KEY Key)
|
Console::ReadKeyStroke(OUT PEFI_INPUT_KEY Key)
|
||||||
{
|
{
|
||||||
XtLoader::GetEfiSystemTable()->ConIn->ReadKeyStroke(XtLoader::GetEfiSystemTable()->ConIn, Key);
|
/* Clear the key structure to prevent ghost keystrokes */
|
||||||
|
Key->ScanCode = 0;
|
||||||
|
Key->UnicodeChar = 0;
|
||||||
|
|
||||||
|
/* Read the keystroke from the EFI input console */
|
||||||
|
return XtLoader::GetEfiSystemTable()->ConIn->ReadKeyStroke(XtLoader::GetEfiSystemTable()->ConIn, Key);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ class Console
|
|||||||
STATIC XTCDECL XTSTATUS PutChar(IN WCHAR Character);
|
STATIC XTCDECL XTSTATUS PutChar(IN WCHAR Character);
|
||||||
STATIC XTCDECL VOID QueryMode(OUT PUINT_PTR ResX,
|
STATIC XTCDECL VOID QueryMode(OUT PUINT_PTR ResX,
|
||||||
OUT PUINT_PTR ResY);
|
OUT PUINT_PTR ResY);
|
||||||
STATIC XTCDECL VOID ReadKeyStroke(OUT PEFI_INPUT_KEY Key);
|
STATIC XTCDECL EFI_STATUS ReadKeyStroke(OUT PEFI_INPUT_KEY Key);
|
||||||
STATIC XTCDECL VOID ResetInputBuffer();
|
STATIC XTCDECL VOID ResetInputBuffer();
|
||||||
STATIC XTCDECL VOID SetAttributes(IN ULONGLONG Attributes);
|
STATIC XTCDECL VOID SetAttributes(IN ULONGLONG Attributes);
|
||||||
STATIC XTCDECL VOID SetCursorPosition(IN ULONGLONG PosX,
|
STATIC XTCDECL VOID SetCursorPosition(IN ULONGLONG PosX,
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ typedef VOID (XTCDECL *PBL_CONSOLE_DISABLE_CURSOR)();
|
|||||||
typedef VOID (XTCDECL *PBL_CONSOLE_ENABLE_CURSOR)();
|
typedef VOID (XTCDECL *PBL_CONSOLE_ENABLE_CURSOR)();
|
||||||
typedef VOID (XTCDECL *PBL_CONSOLE_PRINT)(IN PCWSTR Format, IN ...);
|
typedef VOID (XTCDECL *PBL_CONSOLE_PRINT)(IN PCWSTR Format, IN ...);
|
||||||
typedef VOID (XTCDECL *PBL_CONSOLE_QUERY_MODE)(OUT PUINT_PTR ResX, OUT PUINT_PTR ResY);
|
typedef VOID (XTCDECL *PBL_CONSOLE_QUERY_MODE)(OUT PUINT_PTR ResX, OUT PUINT_PTR ResY);
|
||||||
typedef VOID (XTCDECL *PBL_CONSOLE_READ_KEY_STROKE)(OUT PEFI_INPUT_KEY Key);
|
typedef EFI_STATUS (XTCDECL *PBL_CONSOLE_READ_KEY_STROKE)(OUT PEFI_INPUT_KEY Key);
|
||||||
typedef VOID (XTCDECL *PBL_CONSOLE_RESET_INPUT_BUFFER)();
|
typedef VOID (XTCDECL *PBL_CONSOLE_RESET_INPUT_BUFFER)();
|
||||||
typedef VOID (XTCDECL *PBL_CONSOLE_SET_ATTRIBUTES)(IN ULONGLONG Attributes);
|
typedef VOID (XTCDECL *PBL_CONSOLE_SET_ATTRIBUTES)(IN ULONGLONG Attributes);
|
||||||
typedef VOID (XTCDECL *PBL_CONSOLE_SET_CURSOR_POSITION)(IN ULONGLONG PosX, IN ULONGLONG PosY);
|
typedef VOID (XTCDECL *PBL_CONSOLE_SET_CURSOR_POSITION)(IN ULONGLONG PosX, IN ULONGLONG PosY);
|
||||||
|
|||||||
Reference in New Issue
Block a user