aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/crepe/api/EventManager.cpp13
-rw-r--r--src/crepe/api/EventManager.h2
-rw-r--r--src/crepe/api/EventManager.hpp15
-rw-r--r--src/crepe/api/IKeyListener.cpp72
-rw-r--r--src/crepe/api/IKeyListener.h4
-rw-r--r--src/crepe/api/IMouseListener.cpp40
-rw-r--r--src/crepe/api/IMouseListener.h4
-rw-r--r--src/crepe/api/KeyCodes.h386
8 files changed, 295 insertions, 241 deletions
diff --git a/src/crepe/api/EventManager.cpp b/src/crepe/api/EventManager.cpp
index a04f08b..7f47938 100644
--- a/src/crepe/api/EventManager.cpp
+++ b/src/crepe/api/EventManager.cpp
@@ -8,10 +8,12 @@ EventManager & EventManager::get_instance() {
}
void EventManager::dispatch_events() {
- using HandlersMap = std::unordered_map<int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>;
+ using HandlersMap = std::unordered_map<
+ int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>;
using HandlersVec = std::vector<std::unique_ptr<IEventHandlerWrapper>>;
- for (auto event_it = this->events_queue.begin(); event_it != this->events_queue.end();) {
+ for (auto event_it = this->events_queue.begin();
+ event_it != this->events_queue.end();) {
std::unique_ptr<Event> & event = std::get<0>(*event_it);
int channel = std::get<1>(*event_it);
std::type_index event_type = std::get<2>(*event_it);
@@ -25,7 +27,8 @@ void EventManager::dispatch_events() {
auto handlers = handlers_map.find(channel);
if (handlers != handlers_map.end()) {
HandlersVec & callbacks = handlers->second;
- for (auto handler_it = callbacks.begin(); handler_it != callbacks.end(); ++handler_it) {
+ for (auto handler_it = callbacks.begin();
+ handler_it != callbacks.end(); ++handler_it) {
if ((*handler_it)->exec(*event)) {
event_it = events_queue.erase(event_it);
event_handled = true;
@@ -39,7 +42,8 @@ void EventManager::dispatch_events() {
auto handlers_it = this->subscribers.find(event_type);
if (handlers_it != this->subscribers.end()) {
HandlersVec & handlers = handlers_it->second;
- for (auto handler_it = handlers.begin(); handler_it != handlers.end(); ++handler_it) {
+ for (auto handler_it = handlers.begin();
+ handler_it != handlers.end(); ++handler_it) {
// remove event from queue since and continue when callback returns true
if ((*handler_it)->exec(*event)) {
event_it = this->events_queue.erase(event_it);
@@ -55,4 +59,3 @@ void EventManager::dispatch_events() {
}
}
}
-
diff --git a/src/crepe/api/EventManager.h b/src/crepe/api/EventManager.h
index 1ff4031..783db62 100644
--- a/src/crepe/api/EventManager.h
+++ b/src/crepe/api/EventManager.h
@@ -11,7 +11,7 @@
#include "EventHandler.h"
namespace crepe {
-
+
/**
* \class EventManager
* \brief The EventManager class is responsible for managing the subscription, triggering,
diff --git a/src/crepe/api/EventManager.hpp b/src/crepe/api/EventManager.hpp
index 1e505f4..d901492 100644
--- a/src/crepe/api/EventManager.hpp
+++ b/src/crepe/api/EventManager.hpp
@@ -4,7 +4,8 @@ namespace crepe {
template <typename EventType>
void EventManager::subscribe(EventHandler<EventType> && callback, int channel) {
- using HandlersMap = std::unordered_map<int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>;
+ using HandlersMap = std::unordered_map<
+ int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>;
using HandlersVec = std::vector<std::unique_ptr<IEventHandlerWrapper>>;
std::type_index event_type = typeid(EventType);
@@ -29,7 +30,8 @@ template <typename EventType>
void EventManager::queue_event(EventType && event, int channel) {
std::type_index event_type = std::type_index(typeid(EventType));
- auto event_ptr = std::make_unique<EventType>(std::forward<EventType>(event));
+ auto event_ptr
+ = std::make_unique<EventType>(std::forward<EventType>(event));
std::tuple<std::unique_ptr<Event>, int, std::type_index> tuple(
std::move(event_ptr), channel, event_type);
@@ -38,7 +40,8 @@ void EventManager::queue_event(EventType && event, int channel) {
template <typename EventType>
void EventManager::trigger_event(const EventType & event, int channel) {
- using HandlersMap = std::unordered_map<int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>;
+ using HandlersMap = std::unordered_map<
+ int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>;
using HandlersVec = std::vector<std::unique_ptr<IEventHandlerWrapper>>;
std::type_index event_type = std::type_index(typeid(EventType));
@@ -68,8 +71,10 @@ void EventManager::trigger_event(const EventType & event, int channel) {
}
template <typename EventType>
-void EventManager::unsubscribe(const EventHandler<EventType> & callback, int channel) {
- using HandlersMap = std::unordered_map<int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>;
+void EventManager::unsubscribe(const EventHandler<EventType> & callback,
+ int channel) {
+ using HandlersMap = std::unordered_map<
+ int, std::vector<std::unique_ptr<IEventHandlerWrapper>>>;
using HandlersVec = std::vector<std::unique_ptr<IEventHandlerWrapper>>;
std::type_index event_type(typeid(EventType));
diff --git a/src/crepe/api/IKeyListener.cpp b/src/crepe/api/IKeyListener.cpp
index 81d30b8..cd255df 100644
--- a/src/crepe/api/IKeyListener.cpp
+++ b/src/crepe/api/IKeyListener.cpp
@@ -3,64 +3,68 @@
using namespace crepe;
// Constructor with default channel
-IKeyListener::IKeyListener() : channel(0), active(true), event_manager(EventManager::get_instance()) {
- this->subscribe_events();
+IKeyListener::IKeyListener()
+ : channel(0),
+ active(true),
+ event_manager(EventManager::get_instance()) {
+ this->subscribe_events();
}
// Constructor with specified channel
-IKeyListener::IKeyListener(int channel) : channel(channel), active(true), event_manager(EventManager::get_instance()) {
- this->subscribe_events();
+IKeyListener::IKeyListener(int channel)
+ : channel(channel),
+ active(true),
+ event_manager(EventManager::get_instance()) {
+ this->subscribe_events();
}
// Destructor, unsubscribe events
-IKeyListener::~IKeyListener() {
- this->unsubscribe_events();
-}
+IKeyListener::~IKeyListener() { this->unsubscribe_events(); }
// Subscribe to key events
void IKeyListener::subscribe_events() {
- key_pressed_handler = [this](const KeyPressEvent& event) {
- return this->on_key_pressed(event);
- };
- key_released_handler = [this](const KeyReleaseEvent& event) {
- return this->on_key_released(event);
- };
+ key_pressed_handler = [this](const KeyPressEvent & event) {
+ return this->on_key_pressed(event);
+ };
+ key_released_handler = [this](const KeyReleaseEvent & event) {
+ return this->on_key_released(event);
+ };
- event_manager.subscribe<KeyPressEvent>(
- std::move(this->key_pressed_handler), this->channel);
- event_manager.subscribe<KeyReleaseEvent>(
- std::move(this->key_released_handler), this->channel);
+ event_manager.subscribe<KeyPressEvent>(std::move(this->key_pressed_handler),
+ this->channel);
+ event_manager.subscribe<KeyReleaseEvent>(
+ std::move(this->key_released_handler), this->channel);
}
// Unsubscribe from key events
void IKeyListener::unsubscribe_events() {
- event_manager.unsubscribe<KeyPressEvent>(
- this->key_pressed_handler, this->channel);
- event_manager.unsubscribe<KeyReleaseEvent>(
- this->key_released_handler, this->channel);
+ event_manager.unsubscribe<KeyPressEvent>(this->key_pressed_handler,
+ this->channel);
+ event_manager.unsubscribe<KeyReleaseEvent>(this->key_released_handler,
+ this->channel);
}
// Activate key listening
void IKeyListener::activate_keys() {
- if (this->active) {
- return;
- }
- this->active = true;
- this->subscribe_events();
+ if (this->active) {
+ return;
+ }
+ this->active = true;
+ this->subscribe_events();
}
// Deactivate key listening
void IKeyListener::deactivate_keys() {
- if (!this->active) {
- return;
- }
- this->active = false;
- this->unsubscribe_events();
+ if (!this->active) {
+ return;
+ }
+ this->active = false;
+ this->unsubscribe_events();
}
// Set a new channel for key events
void IKeyListener::set_channel(int channel) {
- this->unsubscribe_events();
- this->channel = channel;
- this->subscribe_events();
+ this->unsubscribe_events();
+ this->channel = channel;
+ this->subscribe_events();
}
diff --git a/src/crepe/api/IKeyListener.h b/src/crepe/api/IKeyListener.h
index 77fbf1e..e170120 100644
--- a/src/crepe/api/IKeyListener.h
+++ b/src/crepe/api/IKeyListener.h
@@ -5,7 +5,7 @@
#include "EventManager.h"
namespace crepe {
-
+
/**
* \class IKeyListener
* \brief Interface for keyboard event handling in the application.
@@ -78,7 +78,7 @@ private:
EventHandler<KeyPressEvent> key_pressed_handler;
//!< Key release event handler.
EventHandler<KeyReleaseEvent> key_released_handler;
- EventManager& event_manager;
+ EventManager & event_manager;
};
} // namespace crepe
diff --git a/src/crepe/api/IMouseListener.cpp b/src/crepe/api/IMouseListener.cpp
index f49004a..bfa49f8 100644
--- a/src/crepe/api/IMouseListener.cpp
+++ b/src/crepe/api/IMouseListener.cpp
@@ -2,19 +2,17 @@
using namespace crepe;
-IMouseListener::IMouseListener(int channel)
- : event_manager(EventManager::get_instance()), channel(channel) {
- this->subscribe_events();
+IMouseListener::IMouseListener(int channel)
+ : event_manager(EventManager::get_instance()),
+ channel(channel) {
+ this->subscribe_events();
}
-IMouseListener::IMouseListener()
- : event_manager(EventManager::get_instance()) {
- this->subscribe_events();
+IMouseListener::IMouseListener() : event_manager(EventManager::get_instance()) {
+ this->subscribe_events();
}
-IMouseListener::~IMouseListener() {
- this->unsubscribe_events();
-}
+IMouseListener::~IMouseListener() { this->unsubscribe_events(); }
void IMouseListener::subscribe_events() {
// Define handler lambdas and subscribe them
@@ -32,18 +30,26 @@ void IMouseListener::subscribe_events() {
};
// Subscribe event handlers (no need for std::move)
- event_manager.subscribe<MouseClickEvent>(std::move(mouse_click_handler), this->channel);
- event_manager.subscribe<MousePressEvent>(std::move(mouse_press_handler), this->channel);
- event_manager.subscribe<MouseReleaseEvent>(std::move(mouse_release_handler), this->channel);
- event_manager.subscribe<MouseMoveEvent>(std::move(mouse_move_handler), this->channel);
+ event_manager.subscribe<MouseClickEvent>(std::move(mouse_click_handler),
+ this->channel);
+ event_manager.subscribe<MousePressEvent>(std::move(mouse_press_handler),
+ this->channel);
+ event_manager.subscribe<MouseReleaseEvent>(std::move(mouse_release_handler),
+ this->channel);
+ event_manager.subscribe<MouseMoveEvent>(std::move(mouse_move_handler),
+ this->channel);
}
void IMouseListener::unsubscribe_events() {
// Unsubscribe event handlers
- event_manager.unsubscribe<MouseClickEvent>(mouse_click_handler, this->channel);
- event_manager.unsubscribe<MousePressEvent>(mouse_press_handler, this->channel);
- event_manager.unsubscribe<MouseReleaseEvent>(mouse_release_handler, this->channel);
- event_manager.unsubscribe<MouseMoveEvent>(mouse_move_handler, this->channel);
+ event_manager.unsubscribe<MouseClickEvent>(mouse_click_handler,
+ this->channel);
+ event_manager.unsubscribe<MousePressEvent>(mouse_press_handler,
+ this->channel);
+ event_manager.unsubscribe<MouseReleaseEvent>(mouse_release_handler,
+ this->channel);
+ event_manager.unsubscribe<MouseMoveEvent>(mouse_move_handler,
+ this->channel);
}
void IMouseListener::activate_mouse() {
diff --git a/src/crepe/api/IMouseListener.h b/src/crepe/api/IMouseListener.h
index 3b9e317..37d2f00 100644
--- a/src/crepe/api/IMouseListener.h
+++ b/src/crepe/api/IMouseListener.h
@@ -5,7 +5,7 @@
#include "EventManager.h"
namespace crepe {
-
+
/**
* \class IMouseListener
* \brief Interface for mouse event handling in the application.
@@ -116,7 +116,7 @@ private:
EventHandler<MouseReleaseEvent> mouse_release_handler;
//! Mouse move event handler.
EventHandler<MouseMoveEvent> mouse_move_handler;
- EventManager& event_manager;
+ EventManager & event_manager;
};
} //namespace crepe
diff --git a/src/crepe/api/KeyCodes.h b/src/crepe/api/KeyCodes.h
index a326527..feed0b2 100644
--- a/src/crepe/api/KeyCodes.h
+++ b/src/crepe/api/KeyCodes.h
@@ -1,186 +1,222 @@
#pragma once
-//! \file InputEnums.h
-//! \brief Defines enums for mouse buttons and keyboard keycodes used in the application.
-
//! \enum MouseButton
//! \brief Enumeration for mouse button inputs, including standard and extended buttons.
enum class MouseButton {
- //! No mouse button input.
- NONE = 0,
- //! Left mouse button.
- LEFT_MOUSE = 1,
- //! Right mouse button.
- RIGHT_MOUSE = 2,
- //! Middle mouse button (scroll wheel press).
- MIDDLE_MOUSE = 3,
- //! First extended mouse button.
- X1_MOUSE = 4,
- //! Second extended mouse button.
- X2_MOUSE = 5,
- //! Scroll wheel upward movement.
- SCROLL_UP = 6,
- //! Scroll wheel downward movement.
- SCROLL_DOWN = 7
+ //! No mouse button input.
+ NONE = 0,
+ //! Left mouse button.
+ LEFT_MOUSE = 1,
+ //! Right mouse button.
+ RIGHT_MOUSE = 2,
+ //! Middle mouse button (scroll wheel press).
+ MIDDLE_MOUSE = 3,
+ //! First extended mouse button.
+ X1_MOUSE = 4,
+ //! Second extended mouse button.
+ X2_MOUSE = 5,
+ //! Scroll wheel upward movement.
+ SCROLL_UP = 6,
+ //! Scroll wheel downward movement.
+ SCROLL_DOWN = 7
};
//! \enum Keycode
//! \brief Enumeration for keyboard key inputs, including printable characters, function keys, and keypad keys.
enum class Keycode : int {
- //! No key input.
- NONE = 0,
- //! Spacebar.
- SPACE = 32,
- //! Apostrophe (').
- APOSTROPHE = 39,
- //! Comma (,).
- COMMA = 44,
- //! Minus (-).
- MINUS = 45,
- //! Period (.).
- PERIOD = 46,
- //! Slash (/).
- SLASH = 47,
- //! Digit 0.
- D0 = 48,
- //! Digit 1.
- D1 = 49,
- //! Digit 2.
- D2 = 50,
- //! Digit 3.
- D3 = 51,
- //! Digit 4.
- D4 = 52,
- //! Digit 5.
- D5 = 53,
- //! Digit 6.
- D6 = 54,
- //! Digit 7.
- D7 = 55,
- //! Digit 8.
- D8 = 56,
- //! Digit 9.
- D9 = 57,
- //! Semicolon (;).
- SEMICOLON = 59,
- //! Equal sign (=).
- EQUAL = 61,
- //! Key 'A'.
- A = 65,
- //! Key 'B'.
- B = 66,
- //! Key 'C'.
- C = 67,
- //! Key 'D'.
- D = 68,
- //! Key 'E'.
- E = 69,
- //! Key 'F'.
- F = 70,
- //! Key 'G'.
- G = 71,
- //! Key 'H'.
- H = 72,
- //! Key 'I'.
- I = 73,
- //! Key 'J'.
- J = 74,
- //! Key 'K'.
- K = 75,
- //! Key 'L'.
- L = 76,
- //! Key 'M'.
- M = 77,
- //! Key 'N'.
- N = 78,
- //! Key 'O'.
- O = 79,
- //! Key 'P'.
- P = 80,
- //! Key 'Q'.
- Q = 81,
- //! Key 'R'.
- R = 82,
- //! Key 'S'.
- S = 83,
- //! Key 'T'.
- T = 84,
- //! Key 'U'.
- U = 85,
- //! Key 'V'.
- V = 86,
- //! Key 'W'.
- W = 87,
- //! Key 'X'.
- X = 88,
- //! Key 'Y'.
- Y = 89,
- //! Key 'Z'.
- Z = 90,
- //! Left bracket ([).
- LEFT_BRACKET = 91,
- //! Backslash (\).
- BACKSLASH = 92,
- //! Right bracket (]).
- RIGHT_BRACKET = 93,
- //! Grave accent (`).
- GRAVE_ACCENT = 96,
- //! Non-US key #1.
- WORLD1 = 161,
- //! Non-US key #2.
- WORLD2 = 162,
- //! Escape key.
- ESCAPE = 256,
- //! Enter key.
- ENTER = 257,
- //! Tab key.
- TAB = 258,
- //! Backspace key.
- BACKSPACE = 259,
- //! Insert key.
- INSERT = 260,
- //! Delete key.
- DELETE = 261,
- //! Right arrow key.
- RIGHT = 262,
- //! Left arrow key.
- LEFT = 263,
- //! Down arrow key.
- DOWN = 264,
- //! Up arrow key.
- UP = 265,
- //! Page Up key.
- PAGE_UP = 266,
- //! Page Down key.
- PAGE_DOWN = 267,
- //! Home key.
- HOME = 268,
- //! End key.
- END = 269,
- //! Caps Lock key.
- CAPS_LOCK = 280,
- //! Scroll Lock key.
- SCROLL_LOCK = 281,
- //! Num Lock key.
- NUM_LOCK = 282,
- //! Print Screen key.
- PRINT_SCREEN = 283,
- //! Pause key.
- PAUSE = 284,
- //! Function keys (F1-F25).
- F1 = 290, F2 = 291, F3 = 292, F4 = 293, F5 = 294,
- F6 = 295, F7 = 296, F8 = 297, F9 = 298, F10 = 299,
- F11 = 300, F12 = 301, F13 = 302, F14 = 303, F15 = 304,
- F16 = 305, F17 = 306, F18 = 307, F19 = 308, F20 = 309,
- F21 = 310, F22 = 311, F23 = 312, F24 = 313, F25 = 314,
- //! Keypad digits and operators.
- KP0 = 320, KP1 = 321, KP2 = 322, KP3 = 323, KP4 = 324,
- KP5 = 325, KP6 = 326, KP7 = 327, KP8 = 328, KP9 = 329,
- KP_DECIMAL = 330, KP_DIVIDE = 331, KP_MULTIPLY = 332,
- KP_SUBTRACT = 333, KP_ADD = 334, KP_ENTER = 335, KP_EQUAL = 336,
- //! Modifier keys.
- LEFT_SHIFT = 340, LEFT_CONTROL = 341, LEFT_ALT = 342, LEFT_SUPER = 343,
- RIGHT_SHIFT = 344, RIGHT_CONTROL = 345, RIGHT_ALT = 346, RIGHT_SUPER = 347,
- //! Menu key.
- MENU = 348
+ //! No key input.
+ NONE = 0,
+ //! Spacebar.
+ SPACE = 32,
+ //! Apostrophe (').
+ APOSTROPHE = 39,
+ //! Comma (,).
+ COMMA = 44,
+ //! Minus (-).
+ MINUS = 45,
+ //! Period (.).
+ PERIOD = 46,
+ //! Slash (/).
+ SLASH = 47,
+ //! Digit 0.
+ D0 = 48,
+ //! Digit 1.
+ D1 = 49,
+ //! Digit 2.
+ D2 = 50,
+ //! Digit 3.
+ D3 = 51,
+ //! Digit 4.
+ D4 = 52,
+ //! Digit 5.
+ D5 = 53,
+ //! Digit 6.
+ D6 = 54,
+ //! Digit 7.
+ D7 = 55,
+ //! Digit 8.
+ D8 = 56,
+ //! Digit 9.
+ D9 = 57,
+ //! Semicolon (;).
+ SEMICOLON = 59,
+ //! Equal sign (=).
+ EQUAL = 61,
+ //! Key 'A'.
+ A = 65,
+ //! Key 'B'.
+ B = 66,
+ //! Key 'C'.
+ C = 67,
+ //! Key 'D'.
+ D = 68,
+ //! Key 'E'.
+ E = 69,
+ //! Key 'F'.
+ F = 70,
+ //! Key 'G'.
+ G = 71,
+ //! Key 'H'.
+ H = 72,
+ //! Key 'I'.
+ I = 73,
+ //! Key 'J'.
+ J = 74,
+ //! Key 'K'.
+ K = 75,
+ //! Key 'L'.
+ L = 76,
+ //! Key 'M'.
+ M = 77,
+ //! Key 'N'.
+ N = 78,
+ //! Key 'O'.
+ O = 79,
+ //! Key 'P'.
+ P = 80,
+ //! Key 'Q'.
+ Q = 81,
+ //! Key 'R'.
+ R = 82,
+ //! Key 'S'.
+ S = 83,
+ //! Key 'T'.
+ T = 84,
+ //! Key 'U'.
+ U = 85,
+ //! Key 'V'.
+ V = 86,
+ //! Key 'W'.
+ W = 87,
+ //! Key 'X'.
+ X = 88,
+ //! Key 'Y'.
+ Y = 89,
+ //! Key 'Z'.
+ Z = 90,
+ //! Left bracket ([).
+ LEFT_BRACKET = 91,
+ //! Backslash (\).
+ BACKSLASH = 92,
+ //! Right bracket (]).
+ RIGHT_BRACKET = 93,
+ //! Grave accent (`).
+ GRAVE_ACCENT = 96,
+ //! Non-US key #1.
+ WORLD1 = 161,
+ //! Non-US key #2.
+ WORLD2 = 162,
+ //! Escape key.
+ ESCAPE = 256,
+ //! Enter key.
+ ENTER = 257,
+ //! Tab key.
+ TAB = 258,
+ //! Backspace key.
+ BACKSPACE = 259,
+ //! Insert key.
+ INSERT = 260,
+ //! Delete key.
+ DELETE = 261,
+ //! Right arrow key.
+ RIGHT = 262,
+ //! Left arrow key.
+ LEFT = 263,
+ //! Down arrow key.
+ DOWN = 264,
+ //! Up arrow key.
+ UP = 265,
+ //! Page Up key.
+ PAGE_UP = 266,
+ //! Page Down key.
+ PAGE_DOWN = 267,
+ //! Home key.
+ HOME = 268,
+ //! End key.
+ END = 269,
+ //! Caps Lock key.
+ CAPS_LOCK = 280,
+ //! Scroll Lock key.
+ SCROLL_LOCK = 281,
+ //! Num Lock key.
+ NUM_LOCK = 282,
+ //! Print Screen key.
+ PRINT_SCREEN = 283,
+ //! Pause key.
+ PAUSE = 284,
+ //! Function keys (F1-F25).
+ F1 = 290,
+ F2 = 291,
+ F3 = 292,
+ F4 = 293,
+ F5 = 294,
+ F6 = 295,
+ F7 = 296,
+ F8 = 297,
+ F9 = 298,
+ F10 = 299,
+ F11 = 300,
+ F12 = 301,
+ F13 = 302,
+ F14 = 303,
+ F15 = 304,
+ F16 = 305,
+ F17 = 306,
+ F18 = 307,
+ F19 = 308,
+ F20 = 309,
+ F21 = 310,
+ F22 = 311,
+ F23 = 312,
+ F24 = 313,
+ F25 = 314,
+ //! Keypad digits and operators.
+ KP0 = 320,
+ KP1 = 321,
+ KP2 = 322,
+ KP3 = 323,
+ KP4 = 324,
+ KP5 = 325,
+ KP6 = 326,
+ KP7 = 327,
+ KP8 = 328,
+ KP9 = 329,
+ KP_DECIMAL = 330,
+ KP_DIVIDE = 331,
+ KP_MULTIPLY = 332,
+ KP_SUBTRACT = 333,
+ KP_ADD = 334,
+ KP_ENTER = 335,
+ KP_EQUAL = 336,
+ //! Modifier keys.
+ LEFT_SHIFT = 340,
+ LEFT_CONTROL = 341,
+ LEFT_ALT = 342,
+ LEFT_SUPER = 343,
+ RIGHT_SHIFT = 344,
+ RIGHT_CONTROL = 345,
+ RIGHT_ALT = 346,
+ RIGHT_SUPER = 347,
+ //! Menu key.
+ MENU = 348
};