From 5a25ab5f5fc079351952862574a27dfd5e2b485a Mon Sep 17 00:00:00 2001 From: Erris Date: Sat, 31 Jan 2026 10:25:41 +0100 Subject: [PATCH] custom keycodes --- .../include/open_engine/events/key_event.hpp | 13 +- .../open_engine/events/mouse_event.hpp | 11 +- .../open_engine/input/input_system.hpp | 13 +- .../include/open_engine/input/keycodes.hpp | 393 ++++++++++++------ .../include/open_engine/input/linux_input.hpp | 5 +- .../open_engine/input/mouse_buttons_codes.hpp | 17 - .../include/open_engine/input/mouse_codes.hpp | 46 ++ .../src/open_engine/input/linux_input.cpp | 10 +- 8 files changed, 348 insertions(+), 160 deletions(-) delete mode 100644 open_engine/include/open_engine/input/mouse_buttons_codes.hpp create mode 100644 open_engine/include/open_engine/input/mouse_codes.hpp diff --git a/open_engine/include/open_engine/events/key_event.hpp b/open_engine/include/open_engine/events/key_event.hpp index 5949b05..4c2dfbc 100644 --- a/open_engine/include/open_engine/events/key_event.hpp +++ b/open_engine/include/open_engine/events/key_event.hpp @@ -2,25 +2,26 @@ #define KEY_EVENT_HPP #include "open_engine/events/event.hpp" +#include "open_engine/input/keycodes.hpp" namespace OpenEngine { class KeyEvent : public Event { public: - inline int GetKeyCode() const { return keycode; } + inline KeyCode GetKeyCode() const { return keycode; } inline int GetScanCode() const { return scancode; } inline int GetMods() const { return mods; } EVENT_CLASS_CATEGORY(EventCategoryInput | EventCategoryKeyboard) protected: - KeyEvent(int keycode, int scancode, int mods) + KeyEvent(KeyCode keycode, int scancode, int mods) : keycode(keycode), scancode(scancode), mods(mods) { }; - int keycode; + KeyCode keycode; int scancode; int mods; }; @@ -29,7 +30,7 @@ namespace OpenEngine { : public KeyEvent { public: - KeyPressedEvent(int keycode, int scancode, int repeat_count, int mods) + KeyPressedEvent(KeyCode keycode, int scancode, int repeat_count, int mods) : KeyEvent(keycode, scancode, mods), repeat_count(repeat_count) { }; @@ -48,7 +49,7 @@ namespace OpenEngine { : public KeyEvent { public: - KeyReleasedEvent(int keycode, int scancode, int mods) + KeyReleasedEvent(KeyCode keycode, int scancode, int mods) : KeyEvent(keycode, scancode, mods) { }; @@ -62,7 +63,7 @@ namespace OpenEngine { : public KeyEvent { public: - KeyTypedEvent(int keycode) + KeyTypedEvent(KeyCode keycode) : KeyEvent(keycode, 0, 0) { }; diff --git a/open_engine/include/open_engine/events/mouse_event.hpp b/open_engine/include/open_engine/events/mouse_event.hpp index d580a33..bd7178f 100755 --- a/open_engine/include/open_engine/events/mouse_event.hpp +++ b/open_engine/include/open_engine/events/mouse_event.hpp @@ -2,6 +2,7 @@ #define MOUSE_EVENT_HPP #include "open_engine/events/event.hpp" +#include "open_engine/input/mouse_codes.hpp" namespace OpenEngine { class MouseMovedEvent @@ -50,24 +51,24 @@ namespace OpenEngine { : public Event { public: - inline int GetMouseButton() const { return button; }; + inline MouseCode GetMouseButton() const { return button; }; EVENT_CLASS_CATEGORY(EventCategoryMouse | EventCategoryInput) protected: - MouseButtonEvent(int button) + MouseButtonEvent(MouseCode button) : button(button) { }; - int button; + MouseCode button; }; class MouseButtonPressedEvent : public MouseButtonEvent { public: - MouseButtonPressedEvent(int button) + MouseButtonPressedEvent(MouseCode button) : MouseButtonEvent(button) { }; @@ -81,7 +82,7 @@ namespace OpenEngine { : public MouseButtonEvent { public: - MouseButtonReleasedEvent(int button) + MouseButtonReleasedEvent(MouseCode button) : MouseButtonEvent(button) {}; std::string ToString() const override; diff --git a/open_engine/include/open_engine/input/input_system.hpp b/open_engine/include/open_engine/input/input_system.hpp index d66af63..a909167 100644 --- a/open_engine/include/open_engine/input/input_system.hpp +++ b/open_engine/include/open_engine/input/input_system.hpp @@ -1,8 +1,11 @@ #ifndef INPUT_HPP #define INPUT_HPP -#include "open_engine/core.hpp" +#include "open_engine/input/mouse_codes.hpp" +#include "open_engine/ref_scope.hpp" +#include "open_engine/input/keycodes.hpp" +#include #include #define MAX_AXIS 10 @@ -15,9 +18,9 @@ namespace OpenEngine { Input(const Input&) = delete; Input& operator=(const Input&) = delete; - inline static bool IsKeyPressed(int keycode) { return instance->IsKeyPressedImpl(keycode); }; + inline static bool IsKeyPressed(KeyCode keycode) { return instance->IsKeyPressedImpl(keycode); }; - inline static bool IsMouseButtonPressed(int button) { return instance->IsMouseButtonPressedImpl(button); }; + inline static bool IsMouseButtonPressed(MouseCode button) { return instance->IsMouseButtonPressedImpl(button); }; inline static std::pair GetMousePosition() { return instance->GetMousePositionImpl(); }; inline static bool GetMouseX() { return instance->GetMouseXImpl(); }; @@ -35,9 +38,9 @@ namespace OpenEngine { protected: Input() = default; - virtual bool IsKeyPressedImpl(int keycode) = 0; + virtual bool IsKeyPressedImpl(KeyCode keycode) = 0; - virtual bool IsMouseButtonPressedImpl(int button) = 0; + virtual bool IsMouseButtonPressedImpl(MouseCode button) = 0; virtual std::pair GetMousePositionImpl() = 0; virtual float GetMouseXImpl() = 0; diff --git a/open_engine/include/open_engine/input/keycodes.hpp b/open_engine/include/open_engine/input/keycodes.hpp index 1113403..0d4ec79 100644 --- a/open_engine/include/open_engine/input/keycodes.hpp +++ b/open_engine/include/open_engine/input/keycodes.hpp @@ -1,127 +1,278 @@ #ifndef KEYCODES_HPP #define KEYCODES_HPP -#define OE_KEY_SPACE 32 -#define OE_KEY_APOSTROPHE 39 /* ' */ -#define OE_KEY_COMMA 44 /* , */ -#define OE_KEY_MINUS 45 /* - */ -#define OE_KEY_PERIOD 46 /* . */ -#define OE_KEY_SLASH 47 /* / */ -#define OE_KEY_0 48 -#define OE_KEY_1 49 -#define OE_KEY_2 50 -#define OE_KEY_3 51 -#define OE_KEY_4 52 -#define OE_KEY_5 53 -#define OE_KEY_6 54 -#define OE_KEY_7 55 -#define OE_KEY_8 56 -#define OE_KEY_9 57 -#define OE_KEY_SEMICOLON 59 /* ; */ -#define OE_KEY_EQUAL 61 /* = */ -#define OE_KEY_A 65 -#define OE_KEY_B 66 -#define OE_KEY_C 67 -#define OE_KEY_D 68 -#define OE_KEY_E 69 -#define OE_KEY_F 70 -#define OE_KEY_G 71 -#define OE_KEY_H 72 -#define OE_KEY_I 73 -#define OE_KEY_J 74 -#define OE_KEY_K 75 -#define OE_KEY_L 76 -#define OE_KEY_M 77 -#define OE_KEY_N 78 -#define OE_KEY_O 79 -#define OE_KEY_P 80 -#define OE_KEY_Q 81 -#define OE_KEY_R 82 -#define OE_KEY_S 83 -#define OE_KEY_T 84 -#define OE_KEY_U 85 -#define OE_KEY_V 86 -#define OE_KEY_W 87 -#define OE_KEY_X 88 -#define OE_KEY_Y 89 -#define OE_KEY_Z 90 -#define OE_KEY_LEFT_BRACKET 91 /* [ */ -#define OE_KEY_BACKSLASH 92 /* \ */ -#define OE_KEY_RIGHT_BRACKET 93 /* ] */ -#define OE_KEY_GRAVE_ACCENT 96 /* ` */ -#define OE_KEY_WORLD_1 161 /* non-US #1 */ -#define OE_KEY_WORLD_2 162 /* non-US #2 */ +#include +#include -/* FunctOEn keys */ -#define OE_KEY_ESCAPE 256 -#define OE_KEY_ENTER 257 -#define OE_KEY_TAB 258 -#define OE_KEY_BACKSPACE 259 -#define OE_KEY_INSERT 260 -#define OE_KEY_DELETE 261 -#define OE_KEY_RIGHT 262 -#define OE_KEY_LEFT 263 -#define OE_KEY_DOWN 264 -#define OE_KEY_UP 265 -#define OE_KEY_PAGE_UP 266 -#define OE_KEY_PAGE_DOWN 267 -#define OE_KEY_HOME 268 -#define OE_KEY_END 269 -#define OE_KEY_CAPS_LOCK 280 -#define OE_KEY_SCROLL_LOCK 281 -#define OE_KEY_NUM_LOCK 282 -#define OE_KEY_PRINT_SCREEN 283 -#define OE_KEY_PAUSE 284 -#define OE_KEY_F1 290 -#define OE_KEY_F2 291 -#define OE_KEY_F3 292 -#define OE_KEY_F4 293 -#define OE_KEY_F5 294 -#define OE_KEY_F6 295 -#define OE_KEY_F7 296 -#define OE_KEY_F8 297 -#define OE_KEY_F9 298 -#define OE_KEY_F10 299 -#define OE_KEY_F11 300 -#define OE_KEY_F12 301 -#define OE_KEY_F13 302 -#define OE_KEY_F14 303 -#define OE_KEY_F15 304 -#define OE_KEY_F16 305 -#define OE_KEY_F17 306 -#define OE_KEY_F18 307 -#define OE_KEY_F19 308 -#define OE_KEY_F20 309 -#define OE_KEY_F21 310 -#define OE_KEY_F22 311 -#define OE_KEY_F23 312 -#define OE_KEY_F24 313 -#define OE_KEY_F25 314 -#define OE_KEY_KP_0 320 -#define OE_KEY_KP_1 321 -#define OE_KEY_KP_2 322 -#define OE_KEY_KP_3 323 -#define OE_KEY_KP_4 324 -#define OE_KEY_KP_5 325 -#define OE_KEY_KP_6 326 -#define OE_KEY_KP_7 327 -#define OE_KEY_KP_8 328 -#define OE_KEY_KP_9 329 -#define OE_KEY_KP_DECIMAL 330 -#define OE_KEY_KP_DIVIDE 331 -#define OE_KEY_KP_MULTIPLY 332 -#define OE_KEY_KP_SUBTRACT 333 -#define OE_KEY_KP_ADD 334 -#define OE_KEY_KP_ENTER 335 -#define OE_KEY_KP_EQUAL 336 -#define OE_KEY_LEFT_SHIFT 340 -#define OE_KEY_LEFT_CONTROL 341 -#define OE_KEY_LEFT_ALT 342 -#define OE_KEY_LEFT_SUPER 343 -#define OE_KEY_RIGHT_SHIFT 344 -#define OE_KEY_RIGHT_CONTROL 345 -#define OE_KEY_RIGHT_ALT 346 -#define OE_KEY_RIGHT_SUPER 347 -#define OE_KEY_MENU 348 +namespace OpenEngine +{ + typedef enum class KeyCode : uint16_t + { + // From glfw3.h + Space = 32, + Apostrophe = 39, /* ' */ + Comma = 44, /* , */ + Minus = 45, /* - */ + Period = 46, /* . */ + Slash = 47, /* / */ + + D0 = 48, /* 0 */ + D1 = 49, /* 1 */ + D2 = 50, /* 2 */ + D3 = 51, /* 3 */ + D4 = 52, /* 4 */ + D5 = 53, /* 5 */ + D6 = 54, /* 6 */ + D7 = 55, /* 7 */ + D8 = 56, /* 8 */ + D9 = 57, /* 9 */ + + Semicolon = 59, /* ; */ + Equal = 61, /* = */ + + A = 65, + B = 66, + C = 67, + D = 68, + E = 69, + F = 70, + G = 71, + H = 72, + I = 73, + J = 74, + K = 75, + L = 76, + M = 77, + N = 78, + O = 79, + P = 80, + Q = 81, + R = 82, + S = 83, + T = 84, + U = 85, + V = 86, + W = 87, + X = 88, + Y = 89, + Z = 90, + + LeftBracket = 91, /* [ */ + Backslash = 92, /* \ */ + RightBracket = 93, /* ] */ + GraveAccent = 96, /* ` */ + + World1 = 161, /* non-US #1 */ + World2 = 162, /* non-US #2 */ + + /* Function keys */ + Escape = 256, + Enter = 257, + Tab = 258, + Backspace = 259, + Insert = 260, + Delete = 261, + Right = 262, + Left = 263, + Down = 264, + Up = 265, + PageUp = 266, + PageDown = 267, + Home = 268, + End = 269, + CapsLock = 280, + ScrollLock = 281, + NumLock = 282, + PrintScreen = 283, + Pause = 284, + 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 */ + KP0 = 320, + KP1 = 321, + KP2 = 322, + KP3 = 323, + KP4 = 324, + KP5 = 325, + KP6 = 326, + KP7 = 327, + KP8 = 328, + KP9 = 329, + KPDecimal = 330, + KPDivide = 331, + KPMultiply = 332, + KPSubtract = 333, + KPAdd = 334, + KPEnter = 335, + KPEqual = 336, + + LeftShift = 340, + LeftControl = 341, + LeftAlt = 342, + LeftSuper = 343, + RightShift = 344, + RightControl = 345, + RightAlt = 346, + RightSuper = 347, + Menu = 348 + } Key; + + inline std::ostream& operator<<(std::ostream& os, KeyCode keyCode) + { + os << static_cast(keyCode); + return os; + } +} + +// From glfw3.h +#define OE_KEY_SPACE ::OpenEngine::Key::Space +#define OE_KEY_APOSTROPHE ::OpenEngine::Key::Apostrophe /* ' */ +#define OE_KEY_COMMA ::OpenEngine::Key::Comma /* , */ +#define OE_KEY_MINUS ::OpenEngine::Key::Minus /* - */ +#define OE_KEY_PERIOD ::OpenEngine::Key::Period /* . */ +#define OE_KEY_SLASH ::OpenEngine::Key::Slash /* / */ +#define OE_KEY_0 ::OpenEngine::Key::D0 +#define OE_KEY_1 ::OpenEngine::Key::D1 +#define OE_KEY_2 ::OpenEngine::Key::D2 +#define OE_KEY_3 ::OpenEngine::Key::D3 +#define OE_KEY_4 ::OpenEngine::Key::D4 +#define OE_KEY_5 ::OpenEngine::Key::D5 +#define OE_KEY_6 ::OpenEngine::Key::D6 +#define OE_KEY_7 ::OpenEngine::Key::D7 +#define OE_KEY_8 ::OpenEngine::Key::D8 +#define OE_KEY_9 ::OpenEngine::Key::D9 +#define OE_KEY_SEMICOLON ::OpenEngine::Key::Semicolon /* ; */ +#define OE_KEY_EQUAL ::OpenEngine::Key::Equal /* = */ +#define OE_KEY_A ::OpenEngine::Key::A +#define OE_KEY_B ::OpenEngine::Key::B +#define OE_KEY_C ::OpenEngine::Key::C +#define OE_KEY_D ::OpenEngine::Key::D +#define OE_KEY_E ::OpenEngine::Key::E +#define OE_KEY_F ::OpenEngine::Key::F +#define OE_KEY_G ::OpenEngine::Key::G +#define OE_KEY_H ::OpenEngine::Key::H +#define OE_KEY_I ::OpenEngine::Key::I +#define OE_KEY_J ::OpenEngine::Key::J +#define OE_KEY_K ::OpenEngine::Key::K +#define OE_KEY_L ::OpenEngine::Key::L +#define OE_KEY_M ::OpenEngine::Key::M +#define OE_KEY_N ::OpenEngine::Key::N +#define OE_KEY_O ::OpenEngine::Key::O +#define OE_KEY_P ::OpenEngine::Key::P +#define OE_KEY_Q ::OpenEngine::Key::Q +#define OE_KEY_R ::OpenEngine::Key::R +#define OE_KEY_S ::OpenEngine::Key::S +#define OE_KEY_T ::OpenEngine::Key::T +#define OE_KEY_U ::OpenEngine::Key::U +#define OE_KEY_V ::OpenEngine::Key::V +#define OE_KEY_W ::OpenEngine::Key::W +#define OE_KEY_X ::OpenEngine::Key::X +#define OE_KEY_Y ::OpenEngine::Key::Y +#define OE_KEY_Z ::OpenEngine::Key::Z +#define OE_KEY_LEFT_BRACKET ::OpenEngine::Key::LeftBracket /* [ */ +#define OE_KEY_BACKSLASH ::OpenEngine::Key::Backslash /* \ */ +#define OE_KEY_RIGHT_BRACKET ::OpenEngine::Key::RightBracket /* ] */ +#define OE_KEY_GRAVE_ACCENT ::OpenEngine::Key::GraveAccent /* ` */ +#define OE_KEY_WORLD_1 ::OpenEngine::Key::World1 /* non-US #1 */ +#define OE_KEY_WORLD_2 ::OpenEngine::Key::World2 /* non-US #2 */ + +/* Function keys */ +#define OE_KEY_ESCAPE ::OpenEngine::Key::Escape +#define OE_KEY_ENTER ::OpenEngine::Key::Enter +#define OE_KEY_TAB ::OpenEngine::Key::Tab +#define OE_KEY_BACKSPACE ::OpenEngine::Key::Backspace +#define OE_KEY_INSERT ::OpenEngine::Key::Insert +#define OE_KEY_DELETE ::OpenEngine::Key::Delete +#define OE_KEY_RIGHT ::OpenEngine::Key::Right +#define OE_KEY_LEFT ::OpenEngine::Key::Left +#define OE_KEY_DOWN ::OpenEngine::Key::Down +#define OE_KEY_UP ::OpenEngine::Key::Up +#define OE_KEY_PAGE_UP ::OpenEngine::Key::PageUp +#define OE_KEY_PAGE_DOWN ::OpenEngine::Key::PageDown +#define OE_KEY_HOME ::OpenEngine::Key::Home +#define OE_KEY_END ::OpenEngine::Key::End +#define OE_KEY_CAPS_LOCK ::OpenEngine::Key::CapsLock +#define OE_KEY_SCROLL_LOCK ::OpenEngine::Key::ScrollLock +#define OE_KEY_NUM_LOCK ::OpenEngine::Key::NumLock +#define OE_KEY_PRINT_SCREEN ::OpenEngine::Key::PrintScreen +#define OE_KEY_PAUSE ::OpenEngine::Key::Pause +#define OE_KEY_F1 ::OpenEngine::Key::F1 +#define OE_KEY_F2 ::OpenEngine::Key::F2 +#define OE_KEY_F3 ::OpenEngine::Key::F3 +#define OE_KEY_F4 ::OpenEngine::Key::F4 +#define OE_KEY_F5 ::OpenEngine::Key::F5 +#define OE_KEY_F6 ::OpenEngine::Key::F6 +#define OE_KEY_F7 ::OpenEngine::Key::F7 +#define OE_KEY_F8 ::OpenEngine::Key::F8 +#define OE_KEY_F9 ::OpenEngine::Key::F9 +#define OE_KEY_F10 ::OpenEngine::Key::F10 +#define OE_KEY_F11 ::OpenEngine::Key::F11 +#define OE_KEY_F12 ::OpenEngine::Key::F12 +#define OE_KEY_F13 ::OpenEngine::Key::F13 +#define OE_KEY_F14 ::OpenEngine::Key::F14 +#define OE_KEY_F15 ::OpenEngine::Key::F15 +#define OE_KEY_F16 ::OpenEngine::Key::F16 +#define OE_KEY_F17 ::OpenEngine::Key::F17 +#define OE_KEY_F18 ::OpenEngine::Key::F18 +#define OE_KEY_F19 ::OpenEngine::Key::F19 +#define OE_KEY_F20 ::OpenEngine::Key::F20 +#define OE_KEY_F21 ::OpenEngine::Key::F21 +#define OE_KEY_F22 ::OpenEngine::Key::F22 +#define OE_KEY_F23 ::OpenEngine::Key::F23 +#define OE_KEY_F24 ::OpenEngine::Key::F24 +#define OE_KEY_F25 ::OpenEngine::Key::F25 + +/* Keypad */ +#define OE_KEY_KP_0 ::OpenEngine::Key::KP0 +#define OE_KEY_KP_1 ::OpenEngine::Key::KP1 +#define OE_KEY_KP_2 ::OpenEngine::Key::KP2 +#define OE_KEY_KP_3 ::OpenEngine::Key::KP3 +#define OE_KEY_KP_4 ::OpenEngine::Key::KP4 +#define OE_KEY_KP_5 ::OpenEngine::Key::KP5 +#define OE_KEY_KP_6 ::OpenEngine::Key::KP6 +#define OE_KEY_KP_7 ::OpenEngine::Key::KP7 +#define OE_KEY_KP_8 ::OpenEngine::Key::KP8 +#define OE_KEY_KP_9 ::OpenEngine::Key::KP9 +#define OE_KEY_KP_DECIMAL ::OpenEngine::Key::KPDecimal +#define OE_KEY_KP_DIVIDE ::OpenEngine::Key::KPDivide +#define OE_KEY_KP_MULTIPLY ::OpenEngine::Key::KPMultiply +#define OE_KEY_KP_SUBTRACT ::OpenEngine::Key::KPSubtract +#define OE_KEY_KP_ADD ::OpenEngine::Key::KPAdd +#define OE_KEY_KP_ENTER ::OpenEngine::Key::KPEnter +#define OE_KEY_KP_EQUAL ::OpenEngine::Key::KPEqual + +#define OE_KEY_LEFT_SHIFT ::OpenEngine::Key::LeftShift +#define OE_KEY_LEFT_CONTROL ::OpenEngine::Key::LeftControl +#define OE_KEY_LEFT_ALT ::OpenEngine::Key::LeftAlt +#define OE_KEY_LEFT_SUPER ::OpenEngine::Key::LeftSuper +#define OE_KEY_RIGHT_SHIFT ::OpenEngine::Key::RightShift +#define OE_KEY_RIGHT_CONTROL ::OpenEngine::Key::RightControl +#define OE_KEY_RIGHT_ALT ::OpenEngine::Key::RightAlt +#define OE_KEY_RIGHT_SUPER ::OpenEngine::Key::RightSuper +#define OE_KEY_MENU ::OpenEngine::Key::Menu #endif // KEYCODES_HPP diff --git a/open_engine/include/open_engine/input/linux_input.hpp b/open_engine/include/open_engine/input/linux_input.hpp index 28cad4e..0841d08 100644 --- a/open_engine/include/open_engine/input/linux_input.hpp +++ b/open_engine/include/open_engine/input/linux_input.hpp @@ -2,14 +2,15 @@ #define LINUX_INPUT_HPP #include "open_engine/input/input_system.hpp" +#include "open_engine/input/keycodes.hpp" namespace OpenEngine { class LinuxInput : public Input { protected: - virtual bool IsKeyPressedImpl(int keycode) override; + virtual bool IsKeyPressedImpl(KeyCode keycode) override; - virtual bool IsMouseButtonPressedImpl(int button) override; + virtual bool IsMouseButtonPressedImpl(MouseCode button) override; virtual std::pair GetMousePositionImpl() override; virtual float GetMouseXImpl() override; diff --git a/open_engine/include/open_engine/input/mouse_buttons_codes.hpp b/open_engine/include/open_engine/input/mouse_buttons_codes.hpp deleted file mode 100644 index 19d3f29..0000000 --- a/open_engine/include/open_engine/input/mouse_buttons_codes.hpp +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef MOUSE_BUTTONS_CODES_HPP -#define MOUSE_BUTTONS_CODES_HPP - -#define HZ_MOUSE_BUTTON_1 0 -#define HZ_MOUSE_BUTTON_2 1 -#define HZ_MOUSE_BUTTON_3 2 -#define HZ_MOUSE_BUTTON_4 3 -#define HZ_MOUSE_BUTTON_5 4 -#define HZ_MOUSE_BUTTON_6 5 -#define HZ_MOUSE_BUTTON_7 6 -#define HZ_MOUSE_BUTTON_8 7 -#define HZ_MOUSE_BUTTON_LAST HZ_MOUSE_BUTTON_8 -#define HZ_MOUSE_BUTTON_LEFT HZ_MOUSE_BUTTON_1 -#define HZ_MOUSE_BUTTON_RIGHT HZ_MOUSE_BUTTON_2 -#define HZ_MOUSE_BUTTON_MIDDLE HZ_MOUSE_BUTTON_3 - -#endif // MOUSE_BUTTONS_CODES_HPP diff --git a/open_engine/include/open_engine/input/mouse_codes.hpp b/open_engine/include/open_engine/input/mouse_codes.hpp new file mode 100644 index 0000000..e8e8168 --- /dev/null +++ b/open_engine/include/open_engine/input/mouse_codes.hpp @@ -0,0 +1,46 @@ +#ifndef MOUSE_BUTTONS_CODES_HPP +#define MOUSE_BUTTONS_CODES_HPP + +#include +#include + +namespace OpenEngine +{ + typedef enum class MouseCode : uint16_t + { + // From glfw3.h + Button0 = 0, + Button1 = 1, + Button2 = 2, + Button3 = 3, + Button4 = 4, + Button5 = 5, + Button6 = 6, + Button7 = 7, + + ButtonLast = Button7, + ButtonLeft = Button0, + ButtonRight = Button1, + ButtonMiddle = Button2 + } Mouse; + + inline std::ostream& operator<<(std::ostream& os, MouseCode mouseCode) + { + os << static_cast(mouseCode); + return os; + } +} + +#define OE_MOUSE_BUTTON_0 ::OpenEngine::Mouse::Button0 +#define OE_MOUSE_BUTTON_1 ::OpenEngine::Mouse::Button1 +#define OE_MOUSE_BUTTON_2 ::OpenEngine::Mouse::Button2 +#define OE_MOUSE_BUTTON_3 ::OpenEngine::Mouse::Button3 +#define OE_MOUSE_BUTTON_4 ::OpenEngine::Mouse::Button4 +#define OE_MOUSE_BUTTON_5 ::OpenEngine::Mouse::Button5 +#define OE_MOUSE_BUTTON_6 ::OpenEngine::Mouse::Button6 +#define OE_MOUSE_BUTTON_7 ::OpenEngine::Mouse::Button7 +#define OE_MOUSE_BUTTON_LAST ::OpenEngine::Mouse::ButtonLast +#define OE_MOUSE_BUTTON_LEFT ::OpenEngine::Mouse::ButtonLeft +#define OE_MOUSE_BUTTON_RIGHT ::OpenEngine::Mouse::ButtonRight + +#endif // MOUSE_BUTTONS_CODES_HPP diff --git a/open_engine/src/open_engine/input/linux_input.cpp b/open_engine/src/open_engine/input/linux_input.cpp index f48c186..1ca6c16 100644 --- a/open_engine/src/open_engine/input/linux_input.cpp +++ b/open_engine/src/open_engine/input/linux_input.cpp @@ -2,6 +2,8 @@ #include #include +#include +#include #include #include @@ -11,18 +13,18 @@ namespace OpenEngine { Scope Input::instance = CreateScope(); - bool LinuxInput::IsKeyPressedImpl(int keycode) + bool LinuxInput::IsKeyPressedImpl(KeyCode keycode) { auto window = static_cast(Application::Get().GetWindow().GetNativeWindow()); - auto state = glfwGetKey(window, keycode); + auto state = glfwGetKey(window, static_cast(keycode)); return state == GLFW_PRESS || state == GLFW_REPEAT; } - bool LinuxInput::IsMouseButtonPressedImpl(int keycode) + bool LinuxInput::IsMouseButtonPressedImpl(MouseCode keycode) { auto window = static_cast(Application::Get().GetWindow().GetNativeWindow()); - auto state = glfwGetMouseButton(window, keycode); + auto state = glfwGetMouseButton(window, static_cast(keycode)); return state == GLFW_PRESS; }