SleakEngine
0.1.0
C++23 multi-backend game engine
Toggle main menu visibility
Loading...
Searching...
No Matches
KeyboardEvent.hpp
Go to the documentation of this file.
1
#ifndef _KEYBOARDEVENT_H_
2
#define _KEYBOARDEVENT_H_
3
4
#include <
Events/Event.hpp
>
5
#include <
Input/KeyCodes.hpp
>
6
#include <sstream>
7
8
#define if_key_press(key) if (!e.IsRepeat() && e.GetKeyCode() == Sleak::Input::KEY_CODE::key)
9
#define if_key_down(key) if (e.GetKeyCode() == Sleak::Input::KEY_CODE::key)
10
11
namespace
Sleak
{
12
namespace
Events {
13
namespace
Input
{
14
/// Common base for keyboard events; carries the key code involved.
15
/// @ingroup events
16
class
ENGINE_API
KeyEvent
:
public
Event
17
{
18
public
:
19
KeyCode
GetKeyCode
()
const
{
return
m_KeyCode
; }
20
std::string
GetKeyStr
()
const
{
return
Sleak::Input::Key_toString
(
m_KeyCode
); }
21
22
EVENT_CLASS_CATEGORY
(
EventCategory::Keyboard
)
23
protected
:
24
KeyEvent
(
const
KeyCode
keycode)
25
:
m_KeyCode
(keycode) {}
26
27
KeyCode
m_KeyCode
;
28
};
29
30
/// Fired on key-down; IsRepeat() distinguishes the initial press from OS auto-repeat.
31
/// @ingroup events
32
class
ENGINE_API
KeyPressedEvent
:
public
KeyEvent
33
{
34
public
:
35
KeyPressedEvent
(
const
KeyCode
keycode,
bool
isRepeat =
false
)
36
:
KeyEvent
(keycode), m_IsRepeat(isRepeat) {}
37
38
bool
IsRepeat
()
const
{
return
m_IsRepeat; }
39
40
std::string
ToString
()
const override
41
{
42
std::stringstream ss;
43
const
char
* repeat = m_IsRepeat ?
"Repeating"
:
""
;
44
ss <<
"KeyPressedEvent: "
<<
GetKeyStr
() <<
" "
<< repeat;
45
return
ss.str();
46
}
47
48
EVENT_CLASS_TYPE
(KeyPressed)
49
private
:
50
bool
m_IsRepeat;
51
};
52
53
/// Fired on key-up.
54
/// @ingroup events
55
class
ENGINE_API
KeyReleasedEvent
:
public
KeyEvent
56
{
57
public
:
58
KeyReleasedEvent
(
const
KeyCode
keycode)
59
:
KeyEvent
(keycode) {}
60
61
std::string
ToString
()
const override
62
{
63
std::stringstream ss;
64
ss <<
"KeyReleasedEvent: "
<<
GetKeyStr
();
65
return
ss.str();
66
}
67
68
EVENT_CLASS_TYPE
(KeyReleased)
69
};
70
71
/// Fired for text input, after IME/layout composition rather than raw key-down.
72
/// @ingroup events
73
class
ENGINE_API
KeyTypedEvent
:
public
KeyEvent
74
{
75
public
:
76
KeyTypedEvent
(
const
KeyCode
keycode)
77
:
KeyEvent
(keycode) {}
78
79
std::string
ToString
()
const override
80
{
81
std::stringstream ss;
82
ss <<
"KeyTypedEvent: "
<<
GetKeyStr
();
83
return
ss.str();
84
}
85
86
EVENT_CLASS_TYPE
(KeyTyped)
87
};
88
}
89
}
90
}
91
92
#endif
Event.hpp
EVENT_CLASS_TYPE
#define EVENT_CLASS_TYPE(type)
Definition
Event.hpp:42
EVENT_CLASS_CATEGORY
#define EVENT_CLASS_CATEGORY(category)
Definition
Event.hpp:56
KeyCodes.hpp
KeyCode
Sleak::Input::KEY_CODE KeyCode
Definition
KeyCodes.hpp:591
Sleak::Event::Event
Event()
Definition
Event.hpp:65
Sleak::Events::Input::KeyEvent::GetKeyCode
KeyCode GetKeyCode() const
Definition
KeyboardEvent.hpp:19
Sleak::Events::Input::KeyEvent::m_KeyCode
KeyCode m_KeyCode
Definition
KeyboardEvent.hpp:27
Sleak::Events::Input::KeyEvent::GetKeyStr
std::string GetKeyStr() const
Definition
KeyboardEvent.hpp:20
Sleak::Events::Input::KeyEvent::KeyEvent
KeyEvent(const KeyCode keycode)
Definition
KeyboardEvent.hpp:24
Sleak::Events::Input::KeyPressedEvent::IsRepeat
bool IsRepeat() const
Definition
KeyboardEvent.hpp:38
Sleak::Events::Input::KeyPressedEvent::KeyPressedEvent
KeyPressedEvent(const KeyCode keycode, bool isRepeat=false)
Definition
KeyboardEvent.hpp:35
Sleak::Events::Input::KeyPressedEvent::ToString
std::string ToString() const override
Definition
KeyboardEvent.hpp:40
Sleak::Events::Input::KeyReleasedEvent::ToString
std::string ToString() const override
Definition
KeyboardEvent.hpp:61
Sleak::Events::Input::KeyReleasedEvent::KeyReleasedEvent
KeyReleasedEvent(const KeyCode keycode)
Definition
KeyboardEvent.hpp:58
Sleak::Events::Input::KeyTypedEvent::KeyTypedEvent
KeyTypedEvent(const KeyCode keycode)
Definition
KeyboardEvent.hpp:76
Sleak::Events::Input::KeyTypedEvent::ToString
std::string ToString() const override
Definition
KeyboardEvent.hpp:79
Sleak::EventCategory::Keyboard
@ Keyboard
Definition
Event.hpp:37
Sleak::Events::Input
Keyboard and mouse event types.
Definition
KeyboardEvent.hpp:13
Sleak::Input::Key_toString
std::string Key_toString(KEY_CODE key)
Human-readable label for key, used in event ToString() output.
Definition
KeyCodes.hpp:310
Sleak
Root namespace for everything the engine exposes.
Definition
Camera.hpp:10
include
public
Events
KeyboardEvent.hpp
Generated on
for SleakEngine by
1.18.0