light/modules/input/include/input/events/keyboard.hpp

90 lines
1.4 KiB
C++
Raw Normal View History

2022-03-08 21:19:19 +03:30
#pragma once
#include <input/events/event.hpp>
2022-03-08 21:19:19 +03:30
#include <sstream>
namespace Light {
class KeyPressedEvent: public Event
{
public:
KeyPressedEvent(int key): m_key(key)
2022-03-08 21:19:19 +03:30
{
}
2025-07-06 16:52:50 +03:30
[[nodiscard]] auto get_key() const -> int
2025-07-05 13:28:41 +03:30
{
return m_key;
2025-07-05 13:28:41 +03:30
}
2022-03-08 21:19:19 +03:30
2025-07-06 16:52:50 +03:30
[[nodiscard]] auto get_info_lt_log() const -> std::string override
2022-03-08 21:19:19 +03:30
{
std::stringstream ss;
ss << "KeyPressed: " << m_key;
2022-03-08 21:19:19 +03:30
return ss.str();
}
2025-07-05 16:07:51 +03:30
event_type(KeyPressed);
event_category(InputEventCategory | KeyboardEventCategory);
2022-03-08 21:19:19 +03:30
private:
const int m_key;
2025-07-05 16:07:51 +03:30
};
2022-03-08 21:19:19 +03:30
2025-07-05 16:07:51 +03:30
class KeyRepeatEvent: public Event
{
2022-03-08 21:19:19 +03:30
public:
KeyRepeatEvent(int key): m_key(key)
2022-03-08 21:19:19 +03:30
{
}
2025-07-06 16:52:50 +03:30
[[nodiscard]] auto get_key() const -> int
2025-07-05 13:28:41 +03:30
{
return m_key;
2025-07-05 13:28:41 +03:30
}
2022-03-08 21:19:19 +03:30
2025-07-06 16:52:50 +03:30
[[nodiscard]] auto get_info_lt_log() const -> std::string override
2022-03-08 21:19:19 +03:30
{
std::stringstream ss;
ss << "KeyRepeated: " << m_key;
2022-03-08 21:19:19 +03:30
return ss.str();
}
2025-07-06 14:02:50 +03:30
2025-07-05 16:07:51 +03:30
event_type(KeyRepeated);
2025-07-06 14:02:50 +03:30
2025-07-05 16:07:51 +03:30
event_category(InputEventCategory | KeyboardEventCategory);
2022-03-08 21:19:19 +03:30
private:
const int m_key;
2025-07-05 16:07:51 +03:30
};
2022-03-08 21:19:19 +03:30
2025-07-05 16:07:51 +03:30
class KeyReleasedEvent: public Event
{
2022-03-08 21:19:19 +03:30
public:
KeyReleasedEvent(int key): m_key(key)
2022-03-08 21:19:19 +03:30
{
}
2025-07-06 16:52:50 +03:30
[[nodiscard]] auto get_key() const -> int
2025-07-05 13:28:41 +03:30
{
return m_key;
2025-07-05 13:28:41 +03:30
}
2022-03-08 21:19:19 +03:30
2025-07-06 16:52:50 +03:30
[[nodiscard]] auto get_info_lt_log() const -> std::string override
2022-03-08 21:19:19 +03:30
{
std::stringstream ss;
ss << "KeyReleased: " << m_key;
2022-03-08 21:19:19 +03:30
return ss.str();
}
2025-07-05 16:07:51 +03:30
event_type(KeyReleased);
2025-07-06 14:02:50 +03:30
2025-07-05 16:07:51 +03:30
event_category(InputEventCategory | KeyboardEventCategory);
private:
const int m_key;
2022-03-08 21:19:19 +03:30
};
2025-07-05 13:28:41 +03:30
} // namespace Light