/*++ @file

Copyright (c) 2011, Apple Inc. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#include <Uefi.h>
#include <Protocol/SimpleTextInEx.h>

/**
  KeyMapMake gets called on key presses.

  @param  KeyData       Key that was pressed.

  @retval EFI_SUCCESS   The constructor always returns EFI_SUCCESS.

**/
EFI_STATUS
EFIAPI
KeyMapMake (
  IN EFI_KEY_DATA  *KeyData
  )
{
  return EFI_SUCCESS;
}

/**
  KeyMapBreak gets called on key releases.

  @param  KeyData       Key that was pressed.

  @retval EFI_SUCCESS   The constructor always returns EFI_SUCCESS.

**/
EFI_STATUS
EFIAPI
KeyMapBreak (
  IN EFI_KEY_DATA  *KeyData
  )
{
  return EFI_SUCCESS;
}
