Line data Source code
1 : #pragma once
2 :
3 : #include <cstdint>
4 : #include <string_view>
5 :
6 : namespace jage::engine::input::keyboard {
7 : enum class key : std::uint8_t {
8 : unidentified,
9 : spacebar,
10 : a,
11 : b,
12 : c,
13 : d,
14 : e,
15 : f,
16 : g,
17 : h,
18 : i,
19 : j,
20 : k,
21 : l,
22 : m,
23 : n,
24 : o,
25 : p,
26 : q,
27 : r,
28 : s,
29 : t,
30 : u,
31 : v,
32 : w,
33 : x,
34 : y,
35 : z,
36 : F1,
37 : F2,
38 : F3,
39 : F4,
40 : F5,
41 : F6,
42 : F7,
43 : F8,
44 : F9,
45 : F10,
46 : F11,
47 : F12,
48 : F13,
49 : F14,
50 : F15,
51 : F16,
52 : F17,
53 : F18,
54 : F19,
55 : F20,
56 : F21,
57 : F22,
58 : F23,
59 : F24,
60 : execute,
61 : _0,
62 : _1,
63 : _2,
64 : _3,
65 : _4,
66 : _5,
67 : _6,
68 : _7,
69 : _8,
70 : _9,
71 : apostrophe,
72 : comma,
73 : minus,
74 : period,
75 : slash,
76 : semicolon,
77 : equal,
78 : left_bracket,
79 : backslash,
80 : right_bracket,
81 : grave_accent,
82 : arrow_up,
83 : arrow_down,
84 : arrow_left,
85 : arrow_right,
86 : insert,
87 : delete_key,
88 : home,
89 : end,
90 : page_up,
91 : page_down,
92 : enter,
93 : tab,
94 : backspace,
95 : caps_lock,
96 : left_shift,
97 : right_shift,
98 : left_control,
99 : right_control,
100 : left_alt,
101 : right_alt,
102 : left_super,
103 : right_super,
104 : menu,
105 : print_screen,
106 : scroll_lock,
107 : num_lock,
108 : pause,
109 : kp_0,
110 : kp_1,
111 : kp_2,
112 : kp_3,
113 : kp_4,
114 : kp_5,
115 : kp_6,
116 : kp_7,
117 : kp_8,
118 : kp_9,
119 : kp_decimal,
120 : kp_divide,
121 : kp_multiply,
122 : kp_subtract,
123 : kp_add,
124 : kp_enter,
125 : kp_equal,
126 : world_1,
127 : world_2,
128 : escape,
129 : BEGIN = unidentified,
130 : END = escape,
131 : };
132 :
133 : [[nodiscard]] constexpr auto
134 130 : serialize(const key input_key) -> std::string_view {
135 130 : switch (input_key) {
136 1 : case key::unidentified:
137 1 : return "unidentified";
138 2 : case key::spacebar:
139 2 : return "spacebar";
140 3 : case key::a:
141 3 : return "a";
142 1 : case key::b:
143 1 : return "b";
144 1 : case key::c:
145 1 : return "c";
146 1 : case key::d:
147 1 : return "d";
148 1 : case key::e:
149 1 : return "e";
150 1 : case key::f:
151 1 : return "f";
152 1 : case key::g:
153 1 : return "g";
154 1 : case key::h:
155 1 : return "h";
156 1 : case key::i:
157 1 : return "i";
158 1 : case key::j:
159 1 : return "j";
160 1 : case key::k:
161 1 : return "k";
162 1 : case key::l:
163 1 : return "l";
164 1 : case key::m:
165 1 : return "m";
166 1 : case key::n:
167 1 : return "n";
168 1 : case key::o:
169 1 : return "o";
170 1 : case key::p:
171 1 : return "p";
172 1 : case key::q:
173 1 : return "q";
174 1 : case key::r:
175 1 : return "r";
176 1 : case key::s:
177 1 : return "s";
178 1 : case key::t:
179 1 : return "t";
180 1 : case key::u:
181 1 : return "u";
182 1 : case key::v:
183 1 : return "v";
184 1 : case key::w:
185 1 : return "w";
186 1 : case key::x:
187 1 : return "x";
188 1 : case key::y:
189 1 : return "y";
190 1 : case key::z:
191 1 : return "z";
192 2 : case key::F1:
193 2 : return "F1";
194 1 : case key::F2:
195 1 : return "F2";
196 1 : case key::F3:
197 1 : return "F3";
198 1 : case key::F4:
199 1 : return "F4";
200 1 : case key::F5:
201 1 : return "F5";
202 1 : case key::F6:
203 1 : return "F6";
204 1 : case key::F7:
205 1 : return "F7";
206 1 : case key::F8:
207 1 : return "F8";
208 1 : case key::F9:
209 1 : return "F9";
210 1 : case key::F10:
211 1 : return "F10";
212 1 : case key::F11:
213 1 : return "F11";
214 1 : case key::F12:
215 1 : return "F12";
216 1 : case key::F13:
217 1 : return "F13";
218 1 : case key::F14:
219 1 : return "F14";
220 1 : case key::F15:
221 1 : return "F15";
222 1 : case key::F16:
223 1 : return "F16";
224 1 : case key::F17:
225 1 : return "F17";
226 1 : case key::F18:
227 1 : return "F18";
228 1 : case key::F19:
229 1 : return "F19";
230 1 : case key::F20:
231 1 : return "F20";
232 1 : case key::F21:
233 1 : return "F21";
234 1 : case key::F22:
235 1 : return "F22";
236 1 : case key::F23:
237 1 : return "F23";
238 1 : case key::F24:
239 1 : return "F24";
240 1 : case key::execute:
241 1 : return "execute";
242 1 : case key::_0:
243 1 : return "0";
244 1 : case key::_1:
245 1 : return "1";
246 1 : case key::_2:
247 1 : return "2";
248 1 : case key::_3:
249 1 : return "3";
250 1 : case key::_4:
251 1 : return "4";
252 1 : case key::_5:
253 1 : return "5";
254 1 : case key::_6:
255 1 : return "6";
256 1 : case key::_7:
257 1 : return "7";
258 1 : case key::_8:
259 1 : return "8";
260 1 : case key::_9:
261 1 : return "9";
262 1 : case key::apostrophe:
263 1 : return "apostrophe";
264 1 : case key::comma:
265 1 : return "comma";
266 1 : case key::minus:
267 1 : return "minus";
268 1 : case key::period:
269 1 : return "period";
270 1 : case key::slash:
271 1 : return "slash";
272 1 : case key::semicolon:
273 1 : return "semicolon";
274 1 : case key::equal:
275 1 : return "equal";
276 1 : case key::left_bracket:
277 1 : return "left_bracket";
278 1 : case key::backslash:
279 1 : return "backslash";
280 1 : case key::right_bracket:
281 1 : return "right_bracket";
282 1 : case key::grave_accent:
283 1 : return "grave_accent";
284 1 : case key::arrow_up:
285 1 : return "arrow_up";
286 1 : case key::arrow_down:
287 1 : return "arrow_down";
288 1 : case key::arrow_left:
289 1 : return "arrow_left";
290 1 : case key::arrow_right:
291 1 : return "arrow_right";
292 1 : case key::insert:
293 1 : return "insert";
294 1 : case key::delete_key:
295 1 : return "delete_key";
296 1 : case key::home:
297 1 : return "home";
298 1 : case key::end:
299 1 : return "end";
300 1 : case key::page_up:
301 1 : return "page_up";
302 1 : case key::page_down:
303 1 : return "page_down";
304 1 : case key::enter:
305 1 : return "enter";
306 1 : case key::tab:
307 1 : return "tab";
308 1 : case key::backspace:
309 1 : return "backspace";
310 1 : case key::caps_lock:
311 1 : return "caps_lock";
312 1 : case key::left_shift:
313 1 : return "left_shift";
314 1 : case key::right_shift:
315 1 : return "right_shift";
316 1 : case key::left_control:
317 1 : return "left_control";
318 1 : case key::right_control:
319 1 : return "right_control";
320 1 : case key::left_alt:
321 1 : return "left_alt";
322 1 : case key::right_alt:
323 1 : return "right_alt";
324 1 : case key::left_super:
325 1 : return "left_super";
326 1 : case key::right_super:
327 1 : return "right_super";
328 1 : case key::menu:
329 1 : return "menu";
330 1 : case key::print_screen:
331 1 : return "print_screen";
332 1 : case key::scroll_lock:
333 1 : return "scroll_lock";
334 1 : case key::num_lock:
335 1 : return "num_lock";
336 1 : case key::pause:
337 1 : return "pause";
338 1 : case key::kp_0:
339 1 : return "kp_0";
340 1 : case key::kp_1:
341 1 : return "kp_1";
342 1 : case key::kp_2:
343 1 : return "kp_2";
344 1 : case key::kp_3:
345 1 : return "kp_3";
346 1 : case key::kp_4:
347 1 : return "kp_4";
348 1 : case key::kp_5:
349 1 : return "kp_5";
350 1 : case key::kp_6:
351 1 : return "kp_6";
352 1 : case key::kp_7:
353 1 : return "kp_7";
354 1 : case key::kp_8:
355 1 : return "kp_8";
356 1 : case key::kp_9:
357 1 : return "kp_9";
358 1 : case key::kp_decimal:
359 1 : return "kp_decimal";
360 1 : case key::kp_divide:
361 1 : return "kp_divide";
362 1 : case key::kp_multiply:
363 1 : return "kp_multiply";
364 1 : case key::kp_subtract:
365 1 : return "kp_subtract";
366 1 : case key::kp_add:
367 1 : return "kp_add";
368 1 : case key::kp_enter:
369 1 : return "kp_enter";
370 1 : case key::kp_equal:
371 1 : return "kp_equal";
372 1 : case key::world_1:
373 1 : return "world_1";
374 1 : case key::world_2:
375 1 : return "world_2";
376 4 : case key::escape:
377 4 : return "escape";
378 2 : default:
379 2 : return "unknown enumerator";
380 : }
381 : }
382 :
383 : } // namespace jage::engine::input::keyboard
|