Berserk
GlfwInputDefs.hpp
Go to the documentation of this file.
1 /**********************************************************************************/
2 /* This file is part of Berserk Engine project */
3 /* https://github.com/EgorOrachyov/Berserk */
4 /**********************************************************************************/
5 /* MIT License */
6 /* */
7 /* Copyright (c) 2018 - 2021 Egor Orachyov */
8 /* */
9 /* Permission is hereby granted, free of charge, to any person obtaining a copy */
10 /* of this software and associated documentation files (the "Software"), to deal */
11 /* in the Software without restriction, including without limitation the rights */
12 /* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell */
13 /* copies of the Software, and to permit persons to whom the Software is */
14 /* furnished to do so, subject to the following conditions: */
15 /* */
16 /* The above copyright notice and this permission notice shall be included in all */
17 /* copies or substantial portions of the Software. */
18 /* */
19 /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR */
20 /* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, */
21 /* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE */
22 /* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER */
23 /* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, */
24 /* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE */
25 /* SOFTWARE. */
26 /**********************************************************************************/
27 
28 #ifndef BERSERK_GLFWINPUTDEFS_HPP
29 #define BERSERK_GLFWINPUTDEFS_HPP
30 
31 #include <core/Config.hpp>
32 #include <core/Typedefs.hpp>
33 #include <platform/InputDefs.hpp>
34 
35 #include <GLFW/glfw3.h>
36 
38 
48 class GlfwInputDefs final {
49 public:
51  InputModifiers mask;
52  auto umods = static_cast<uint32>(mods);
53 
54  mask.Set(InputModifier::Alt, umods & (uint32) GLFW_MOD_ALT);
55  mask.Set(InputModifier::CapsLock, umods & (uint32) GLFW_MOD_CAPS_LOCK);
56  mask.Set(InputModifier::Control, umods & (uint32) GLFW_MOD_CONTROL);
57  mask.Set(InputModifier::NumLock, umods & (uint32) GLFW_MOD_NUM_LOCK);
58  mask.Set(InputModifier::Shift, umods & (uint32) GLFW_MOD_SHIFT);
59 
60  return mask;
61  }
62 
64  switch (button) {
65  case GLFW_MOUSE_BUTTON_LEFT:
67  case GLFW_MOUSE_BUTTON_RIGHT:
69  default:
71  }
72  }
73 
74  static InputAction GetAction(int32 action) {
75  switch (action) {
76  case GLFW_PRESS:
77  return InputAction::Press;
78  case GLFW_RELEASE:
79  return InputAction::Release;
80  default:
81  return InputAction::Unknown;
82  }
83  }
84 
86  switch (key) {
87  case GLFW_KEY_SPACE:
89  case GLFW_KEY_APOSTROPHE:
91  case GLFW_KEY_COMMA:
93  case GLFW_KEY_MINUS:
95  case GLFW_KEY_PERIOD:
97  case GLFW_KEY_SLASH:
99  case GLFW_KEY_BACKSLASH:
101  case GLFW_KEY_SEMICOLON:
103  case GLFW_KEY_EQUAL:
105  case GLFW_KEY_LEFT_BRACKET:
107  case GLFW_KEY_RIGHT_BRACKET:
109 
110  case GLFW_KEY_0:
111  return InputKeyboardKey::Num0;
112  case GLFW_KEY_1:
113  return InputKeyboardKey::Num1;
114  case GLFW_KEY_2:
115  return InputKeyboardKey::Num2;
116  case GLFW_KEY_3:
117  return InputKeyboardKey::Num3;
118  case GLFW_KEY_4:
119  return InputKeyboardKey::Num4;
120  case GLFW_KEY_5:
121  return InputKeyboardKey::Num5;
122  case GLFW_KEY_6:
123  return InputKeyboardKey::Num6;
124  case GLFW_KEY_7:
125  return InputKeyboardKey::Num7;
126  case GLFW_KEY_8:
127  return InputKeyboardKey::Num8;
128  case GLFW_KEY_9:
129  return InputKeyboardKey::Num9;
130 
131  case GLFW_KEY_A:
132  return InputKeyboardKey::A;
133  case GLFW_KEY_B:
134  return InputKeyboardKey::B;
135  case GLFW_KEY_C:
136  return InputKeyboardKey::C;
137  case GLFW_KEY_D:
138  return InputKeyboardKey::D;
139  case GLFW_KEY_E:
140  return InputKeyboardKey::E;
141  case GLFW_KEY_F:
142  return InputKeyboardKey::F;
143  case GLFW_KEY_G:
144  return InputKeyboardKey::G;
145  case GLFW_KEY_H:
146  return InputKeyboardKey::H;
147  case GLFW_KEY_I:
148  return InputKeyboardKey::I;
149  case GLFW_KEY_J:
150  return InputKeyboardKey::J;
151  case GLFW_KEY_K:
152  return InputKeyboardKey::K;
153  case GLFW_KEY_L:
154  return InputKeyboardKey::L;
155  case GLFW_KEY_M:
156  return InputKeyboardKey::M;
157  case GLFW_KEY_N:
158  return InputKeyboardKey::N;
159  case GLFW_KEY_O:
160  return InputKeyboardKey::O;
161  case GLFW_KEY_P:
162  return InputKeyboardKey::P;
163  case GLFW_KEY_Q:
164  return InputKeyboardKey::Q;
165  case GLFW_KEY_R:
166  return InputKeyboardKey::R;
167  case GLFW_KEY_S:
168  return InputKeyboardKey::S;
169  case GLFW_KEY_T:
170  return InputKeyboardKey::T;
171  case GLFW_KEY_U:
172  return InputKeyboardKey::U;
173  case GLFW_KEY_V:
174  return InputKeyboardKey::V;
175  case GLFW_KEY_W:
176  return InputKeyboardKey::W;
177  case GLFW_KEY_X:
178  return InputKeyboardKey::X;
179  case GLFW_KEY_Y:
180  return InputKeyboardKey::Y;
181  case GLFW_KEY_Z:
182  return InputKeyboardKey::Z;
183 
184  case GLFW_KEY_F1:
185  return InputKeyboardKey::F1;
186  case GLFW_KEY_F2:
187  return InputKeyboardKey::F2;
188  case GLFW_KEY_F3:
189  return InputKeyboardKey::F3;
190  case GLFW_KEY_F4:
191  return InputKeyboardKey::F4;
192  case GLFW_KEY_F5:
193  return InputKeyboardKey::F5;
194  case GLFW_KEY_F6:
195  return InputKeyboardKey::F6;
196  case GLFW_KEY_F7:
197  return InputKeyboardKey::F7;
198  case GLFW_KEY_F8:
199  return InputKeyboardKey::F8;
200  case GLFW_KEY_F9:
201  return InputKeyboardKey::F9;
202  case GLFW_KEY_F10:
203  return InputKeyboardKey::F10;
204  case GLFW_KEY_F11:
205  return InputKeyboardKey::F11;
206  case GLFW_KEY_F12:
207  return InputKeyboardKey::F12;
208 
209  case GLFW_KEY_ESCAPE:
211  case GLFW_KEY_ENTER:
213  case GLFW_KEY_TAB:
214  return InputKeyboardKey::Tab;
215  case GLFW_KEY_BACKSPACE:
217  case GLFW_KEY_INSERT:
219  case GLFW_KEY_DELETE:
221  case GLFW_KEY_RIGHT:
223  case GLFW_KEY_LEFT:
224  return InputKeyboardKey::Left;
225  case GLFW_KEY_DOWN:
226  return InputKeyboardKey::Down;
227  case GLFW_KEY_UP:
228  return InputKeyboardKey::Up;
229  case GLFW_KEY_PAGE_UP:
231  case GLFW_KEY_PAGE_DOWN:
233 
234  case GLFW_KEY_CAPS_LOCK:
236  case GLFW_KEY_SCROLL_LOCK:
238  case GLFW_KEY_NUM_LOCK:
240  case GLFW_KEY_PRINT_SCREEN:
242  case GLFW_KEY_PAUSE:
244 
245  case GLFW_KEY_LEFT_SHIFT:
247  case GLFW_KEY_LEFT_CONTROL:
249  case GLFW_KEY_LEFT_ALT:
251  case GLFW_KEY_LEFT_SUPER:
253  case GLFW_KEY_RIGHT_SHIFT:
255  case GLFW_KEY_RIGHT_CONTROL:
257  case GLFW_KEY_RIGHT_ALT:
259  case GLFW_KEY_RIGHT_SUPER:
261 
262  case GLFW_KEY_HOME:
263  return InputKeyboardKey::Home;
264  case GLFW_KEY_END:
265  return InputKeyboardKey::End;
266  case GLFW_KEY_MENU:
267  return InputKeyboardKey::Menu;
268 
269  default:
271  }
272  }
273 };
274 
280 
281 #endif//BERSERK_GLFWINPUTDEFS_HPP
#define BRK_NS_END
Definition: Config.hpp:48
std::int32_t int32
Definition: Typedefs.hpp:43
std::uint32_t uint32
Definition: Typedefs.hpp:44
Glfw input defines.
Definition: GlfwInputDefs.hpp:48
static InputModifiers GetModsMask(int32 mods)
Definition: GlfwInputDefs.hpp:50
static InputMouseButton GetMouseButton(int32 button)
Definition: GlfwInputDefs.hpp:63
static InputKeyboardKey GetKeyboardKey(int32 key)
Definition: GlfwInputDefs.hpp:85
static InputAction GetAction(int32 action)
Definition: GlfwInputDefs.hpp:74
Default actions, which occur for basic input device interaction.
Keyboard device keys.
Input modifies mask (as a set of bits)
Mouse device buttons.
Definition: GLDevice.cpp:46