// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
#include "precomp.h"
#include "inc/IInputEvent.hpp"
KeyEvent::~KeyEvent()
{
}
INPUT_RECORD KeyEvent::ToInputRecord() const noexcept
{
INPUT_RECORD record{ 0 };
record.EventType = KEY_EVENT;
record.Event.KeyEvent.bKeyDown = !!_keyDown;
record.Event.KeyEvent.wRepeatCount = _repeatCount;
record.Event.KeyEvent.wVirtualKeyCode = _virtualKeyCode;
record.Event.KeyEvent.wVirtualScanCode = _virtualScanCode;
record.Event.KeyEvent.uChar.UnicodeChar = _charData;
record.Event.KeyEvent.dwControlKeyState = _activeModifierKeys;
return record;
}
InputEventType KeyEvent::EventType() const noexcept
{
return InputEventType::KeyEvent;
}
void KeyEvent::SetKeyDown(const bool keyDown) noexcept
{
_keyDown = keyDown;
}
void KeyEvent::SetRepeatCount(const WORD repeatCount) noexcept
{
_repeatCount = repeatCount;
}
void KeyEvent::SetVirtualKeyCode(const WORD virtualKeyCode) noexcept
{
_virtualKeyCode = virtualKeyCode;
}
void KeyEvent::SetVirtualScanCode(const WORD virtualScanCode) noexcept
{
_virtualScanCode = virtualScanCode;
}
void KeyEvent::SetCharData(const wchar_t character) noexcept
{
_charData = character;
}
void KeyEvent::SetActiveModifierKeys(const DWORD activeModifierKeys) noexcept
{
_activeModifierKeys = activeModifierKeys;
}
void KeyEvent::DeactivateModifierKey(const ModifierKeyState modifierKey) noexcept
{
DWORD const bitFlag = ToConsoleControlKeyFlag(modifierKey);
WI_ClearAllFlags(_activeModifierKeys, bitFlag);
}
void KeyEvent::ActivateModifierKey(const ModifierKeyState modifierKey) noexcept
{
DWORD const bitFlag = ToConsoleControlKeyFlag(modifierKey);
WI_SetAllFlags(_activeModifierKeys, bitFlag);
}
bool KeyEvent::DoActiveModifierKeysMatch(const std::unordered_set