SleakEngine 1.0.0
C++23 multi-backend game engine
Loading...
Searching...
No Matches
KeyCodes.hpp
Go to the documentation of this file.
1 #ifndef _KEYCODES_H_
2 #define _KEYCODES_H_
3
4#include <string>
5
6 namespace Sleak {
7 namespace Input {
8
9 /// Mouse button identifiers, numbered to match SDL's button indices.
10 /// @ingroup input
11 enum class MOUSE_CODE {
20
21 ButtonLeft = Button1, // SDL_BUTTON_LEFT = 1
22 ButtonMiddle = Button2, // SDL_BUTTON_MIDDLE = 2
23 ButtonRight = Button3, // SDL_BUTTON_RIGHT = 3
24 };
25
26 /// Physical key identifiers, numbered to match SDL scancode values.
27 /// @ingroup input
28 enum class KEY_CODE
29 {
31
32 KEY__A = 4,
33 KEY__B = 5,
34 KEY__C = 6,
35 KEY__D = 7,
36 KEY__E = 8,
37 KEY__F = 9,
38 KEY__G = 10,
39 KEY__H = 11,
40 KEY__I = 12,
41 KEY__J = 13,
42 KEY__K = 14,
43 KEY__L = 15,
44 KEY__M = 16,
45 KEY__N = 17,
46 KEY__O = 18,
47 KEY__P = 19,
48 KEY__Q = 20,
49 KEY__R = 21,
50 KEY__S = 22,
51 KEY__T = 23,
52 KEY__U = 24,
53 KEY__V = 25,
54 KEY__W = 26,
55 KEY__X = 27,
56 KEY__Y = 28,
57 KEY__Z = 29,
58
59 KEY__1 = 30,
60 KEY__2 = 31,
61 KEY__3 = 32,
62 KEY__4 = 33,
63 KEY__5 = 34,
64 KEY__6 = 35,
65 KEY__7 = 36,
66 KEY__8 = 37,
67 KEY__9 = 38,
68 KEY__0 = 39,
69
75
81
83
90
92
93 KEY__F1 = 58,
94 KEY__F2 = 59,
95 KEY__F3 = 60,
96 KEY__F4 = 61,
97 KEY__F5 = 62,
98 KEY__F6 = 63,
99 KEY__F7 = 64,
105
119
121
138
142 KEY__F13 = 104,
143 KEY__F14 = 105,
144 KEY__F15 = 106,
145 KEY__F16 = 107,
146 KEY__F17 = 108,
147 KEY__F18 = 109,
148 KEY__F19 = 110,
149 KEY__F20 = 111,
150 KEY__F21 = 112,
151 KEY__F22 = 113,
152 KEY__F23 = 114,
153 KEY__F24 = 115,
155 KEY__HELP = 117,
156 KEY__MENU = 118,
158 KEY__STOP = 120,
160 KEY__UNDO = 122,
161 KEY__CUT = 123,
162 KEY__COPY = 124,
164 KEY__FIND = 126,
170
189
197 KEY__OUT = 160,
202
249
257 KEY__RGUI = 231,
258
259 KEY__MODE = 257,
260
262 KEY__WAKE = 259,
263
266
278
286
294
295
296
299 KEY__CALL = 289,
301
302
304
306
307 };
308
309 /// Human-readable label for key, used in event ToString() output.
310 inline std::string Key_toString(KEY_CODE key) {
311 switch (key) {
312 case KEY_CODE::KEY__UNKNOWN: return "Unknown";
313 case KEY_CODE::KEY__A: return "a";
314 case KEY_CODE::KEY__B: return "b";
315 case KEY_CODE::KEY__C: return "c";
316 case KEY_CODE::KEY__D: return "d";
317 case KEY_CODE::KEY__E: return "e";
318 case KEY_CODE::KEY__F: return "f";
319 case KEY_CODE::KEY__G: return "g";
320 case KEY_CODE::KEY__H: return "h";
321 case KEY_CODE::KEY__I: return "i";
322 case KEY_CODE::KEY__J: return "j";
323 case KEY_CODE::KEY__K: return "k";
324 case KEY_CODE::KEY__L: return "l";
325 case KEY_CODE::KEY__M: return "m";
326 case KEY_CODE::KEY__N: return "n";
327 case KEY_CODE::KEY__O: return "o";
328 case KEY_CODE::KEY__P: return "p";
329 case KEY_CODE::KEY__Q: return "q";
330 case KEY_CODE::KEY__R: return "r";
331 case KEY_CODE::KEY__S: return "s";
332 case KEY_CODE::KEY__T: return "t";
333 case KEY_CODE::KEY__U: return "u";
334 case KEY_CODE::KEY__V: return "v";
335 case KEY_CODE::KEY__W: return "w";
336 case KEY_CODE::KEY__X: return "x";
337 case KEY_CODE::KEY__Y: return "y";
338 case KEY_CODE::KEY__Z: return "z";
339 case KEY_CODE::KEY__1: return "1";
340 case KEY_CODE::KEY__2: return "2";
341 case KEY_CODE::KEY__3: return "3";
342 case KEY_CODE::KEY__4: return "4";
343 case KEY_CODE::KEY__5: return "5";
344 case KEY_CODE::KEY__6: return "6";
345 case KEY_CODE::KEY__7: return "7";
346 case KEY_CODE::KEY__8: return "8";
347 case KEY_CODE::KEY__9: return "9";
348 case KEY_CODE::KEY__0: return "0";
349 case KEY_CODE::KEY__RETURN: return "Return";
350 case KEY_CODE::KEY__ESCAPE: return "Escape";
351 case KEY_CODE::KEY__BACKSPACE: return "Backspace";
352 case KEY_CODE::KEY__TAB: return "Tab";
353 case KEY_CODE::KEY__SPACE: return "Space";
354 case KEY_CODE::KEY__MINUS: return "-";
355 case KEY_CODE::KEY__EQUALS: return "=";
356 case KEY_CODE::KEY__LEFTBRACKET: return "[";
357 case KEY_CODE::KEY__RIGHTBRACKET: return "]";
358 case KEY_CODE::KEY__BACKSLASH: return "\\";
359 case KEY_CODE::KEY__NONUSHASH: return "Non-US Hash";
360 case KEY_CODE::KEY__SEMICOLON: return ";";
361 case KEY_CODE::KEY__APOSTROPHE: return "'";
362 case KEY_CODE::KEY__GRAVE: return "`";
363 case KEY_CODE::KEY__COMMA: return ",";
364 case KEY_CODE::KEY__PERIOD: return ".";
365 case KEY_CODE::KEY__SLASH: return "/";
366 case KEY_CODE::KEY__CAPSLOCK: return "Caps Lock";
367 case KEY_CODE::KEY__F1: return "F1";
368 case KEY_CODE::KEY__F2: return "F2";
369 case KEY_CODE::KEY__F3: return "F3";
370 case KEY_CODE::KEY__F4: return "F4";
371 case KEY_CODE::KEY__F5: return "F5";
372 case KEY_CODE::KEY__F6: return "F6";
373 case KEY_CODE::KEY__F7: return "F7";
374 case KEY_CODE::KEY__F8: return "F8";
375 case KEY_CODE::KEY__F9: return "F9";
376 case KEY_CODE::KEY__F10: return "F10";
377 case KEY_CODE::KEY__F11: return "F11";
378 case KEY_CODE::KEY__F12: return "F12";
379 case KEY_CODE::KEY__PRINTSCREEN: return "Print Screen";
380 case KEY_CODE::KEY__SCROLLLOCK: return "Scroll Lock";
381 case KEY_CODE::KEY__PAUSE: return "Pause";
382 case KEY_CODE::KEY__INSERT: return "Insert";
383 case KEY_CODE::KEY__HOME: return "Home";
384 case KEY_CODE::KEY__PAGEUP: return "Page Up";
385 case KEY_CODE::KEY__DELETE: return "Delete";
386 case KEY_CODE::KEY__END: return "End";
387 case KEY_CODE::KEY__PAGEDOWN: return "Page Down";
388 case KEY_CODE::KEY__RIGHT: return "Right";
389 case KEY_CODE::KEY__LEFT: return "Left";
390 case KEY_CODE::KEY__DOWN: return "Down";
391 case KEY_CODE::KEY__UP: return "Up";
392 case KEY_CODE::KEY__NUMLOCKCLEAR: return "Num Lock";
393 case KEY_CODE::KEY__KP_DIVIDE: return "Keypad /";
394 case KEY_CODE::KEY__KP_MULTIPLY: return "Keypad *";
395 case KEY_CODE::KEY__KP_MINUS: return "Keypad -";
396 case KEY_CODE::KEY__KP_PLUS: return "Keypad +";
397 case KEY_CODE::KEY__KP_ENTER: return "Keypad Enter";
398 case KEY_CODE::KEY__KP_1: return "Keypad 1";
399 case KEY_CODE::KEY__KP_2: return "Keypad 2";
400 case KEY_CODE::KEY__KP_3: return "Keypad 3";
401 case KEY_CODE::KEY__KP_4: return "Keypad 4";
402 case KEY_CODE::KEY__KP_5: return "Keypad 5";
403 case KEY_CODE::KEY__KP_6: return "Keypad 6";
404 case KEY_CODE::KEY__KP_7: return "Keypad 7";
405 case KEY_CODE::KEY__KP_8: return "Keypad 8";
406 case KEY_CODE::KEY__KP_9: return "Keypad 9";
407 case KEY_CODE::KEY__KP_0: return "Keypad 0";
408 case KEY_CODE::KEY__KP_PERIOD: return "Keypad .";
409 case KEY_CODE::KEY__NONUSBACKSLASH: return "Non-US \\";
410 case KEY_CODE::KEY__APPLICATION: return "Application";
411 case KEY_CODE::KEY__KP_EQUALS: return "Keypad =";
412 case KEY_CODE::KEY__F13: return "F13";
413 case KEY_CODE::KEY__F14: return "F14";
414 case KEY_CODE::KEY__F15: return "F15";
415 case KEY_CODE::KEY__F16: return "F16";
416 case KEY_CODE::KEY__F17: return "F17";
417 case KEY_CODE::KEY__F18: return "F18";
418 case KEY_CODE::KEY__F19: return "F19";
419 case KEY_CODE::KEY__F20: return "F20";
420 case KEY_CODE::KEY__F21: return "F21";
421 case KEY_CODE::KEY__F22: return "F22";
422 case KEY_CODE::KEY__F23: return "F23";
423 case KEY_CODE::KEY__F24: return "F24";
424 case KEY_CODE::KEY__EXECUTE: return "Execute";
425 case KEY_CODE::KEY__HELP: return "Help";
426 case KEY_CODE::KEY__MENU: return "Menu";
427 case KEY_CODE::KEY__SELECT: return "Select";
428 case KEY_CODE::KEY__STOP: return "Stop";
429 case KEY_CODE::KEY__AGAIN: return "Again";
430 case KEY_CODE::KEY__UNDO: return "Undo";
431 case KEY_CODE::KEY__CUT: return "Cut";
432 case KEY_CODE::KEY__COPY: return "Copy";
433 case KEY_CODE::KEY__PASTE: return "Paste";
434 case KEY_CODE::KEY__FIND: return "Find";
435 case KEY_CODE::KEY__MUTE: return "Mute";
436 case KEY_CODE::KEY__VOLUMEUP: return "Volume Up";
437 case KEY_CODE::KEY__VOLUMEDOWN: return "Volume Down";
438 case KEY_CODE::KEY__KP_COMMA: return "Keypad ,";
439 case KEY_CODE::KEY__KP_EQUALSAS400: return "Keypad = (AS400)";
440 case KEY_CODE::KEY__INTERNATIONAL1: return "International 1";
441 case KEY_CODE::KEY__INTERNATIONAL2: return "International 2";
442 case KEY_CODE::KEY__INTERNATIONAL3: return "International 3";
443 case KEY_CODE::KEY__INTERNATIONAL4: return "International 4";
444 case KEY_CODE::KEY__INTERNATIONAL5: return "International 5";
445 case KEY_CODE::KEY__INTERNATIONAL6: return "International 6";
446 case KEY_CODE::KEY__INTERNATIONAL7: return "International 7";
447 case KEY_CODE::KEY__INTERNATIONAL8: return "International 8";
448 case KEY_CODE::KEY__INTERNATIONAL9: return "International 9";
449 case KEY_CODE::KEY__LANG1: return "Lang 1";
450 case KEY_CODE::KEY__LANG2: return "Lang 2";
451 case KEY_CODE::KEY__LANG3: return "Lang 3";
452 case KEY_CODE::KEY__LANG4: return "Lang 4";
453 case KEY_CODE::KEY__LANG5: return "Lang 5";
454 case KEY_CODE::KEY__LANG6: return "Lang 6";
455 case KEY_CODE::KEY__LANG7: return "Lang 7";
456 case KEY_CODE::KEY__LANG8: return "Lang 8";
457 case KEY_CODE::KEY__LANG9: return "Lang 9";
458 case KEY_CODE::KEY__ALTERASE: return "Alt Erase";
459 case KEY_CODE::KEY__SYSREQ: return "SysReq";
460 case KEY_CODE::KEY__CANCEL: return "Cancel";
461 case KEY_CODE::KEY__CLEAR: return "Clear";
462 case KEY_CODE::KEY__PRIOR: return "Prior";
463 case KEY_CODE::KEY__RETURN2: return "Return";
464 case KEY_CODE::KEY__SEPARATOR: return "Separator";
465 case KEY_CODE::KEY__OUT: return "Out";
466 case KEY_CODE::KEY__OPER: return "Oper";
467 case KEY_CODE::KEY__CLEARAGAIN: return "Clear Again";
468 case KEY_CODE::KEY__CRSEL: return "CrSel";
469 case KEY_CODE::KEY__EXSEL: return "ExSel";
470 case KEY_CODE::KEY__KP_00: return "Keypad 00";
471 case KEY_CODE::KEY__KP_000: return "Keypad 000";
472 case KEY_CODE::KEY__THOUSANDSSEPARATOR: return "Thousands Separator";
473 case KEY_CODE::KEY__DECIMALSEPARATOR: return "Decimal Separator";
474 case KEY_CODE::KEY__CURRENCYUNIT: return "Currency Unit";
475 case KEY_CODE::KEY__CURRENCYSUBUNIT: return "Currency Subunit";
476 case KEY_CODE::KEY__KP_LEFTPAREN: return "Keypad (";
477 case KEY_CODE::KEY__KP_RIGHTPAREN: return "Keypad )";
478 case KEY_CODE::KEY__KP_LEFTBRACE: return "Keypad {";
479 case KEY_CODE::KEY__KP_RIGHTBRACE: return "Keypad }";
480 case KEY_CODE::KEY__KP_TAB: return "Keypad Tab";
481 case KEY_CODE::KEY__KP_BACKSPACE: return "Keypad Backspace";
482 case KEY_CODE::KEY__KP_A: return "Keypad A";
483 case KEY_CODE::KEY__KP_B: return "Keypad B";
484 case KEY_CODE::KEY__KP_C: return "Keypad C";
485 case KEY_CODE::KEY__KP_D: return "Keypad D";
486 case KEY_CODE::KEY__KP_E: return "Keypad E";
487 case KEY_CODE::KEY__KP_F: return "Keypad F";
488 case KEY_CODE::KEY__KP_XOR: return "Keypad XOR";
489 case KEY_CODE::KEY__KP_POWER: return "Keypad Power";
490 case KEY_CODE::KEY__KP_PERCENT: return "Keypad %";
491 case KEY_CODE::KEY__KP_LESS: return "Keypad <";
492 case KEY_CODE::KEY__KP_GREATER: return "Keypad >";
493 case KEY_CODE::KEY__KP_AMPERSAND: return "Keypad &";
494 case KEY_CODE::KEY__KP_DBLAMPERSAND: return "Keypad &&";
495 case KEY_CODE::KEY__KP_VERTICALBAR: return "Keypad |";
496 case KEY_CODE::KEY__KP_DBLVERTICALBAR: return "Keypad ||";
497 case KEY_CODE::KEY__KP_COLON: return "Keypad :";
498 case KEY_CODE::KEY__KP_HASH: return "Keypad #";
499 case KEY_CODE::KEY__KP_SPACE: return "Keypad Space";
500 case KEY_CODE::KEY__KP_AT: return "Keypad @";
501 case KEY_CODE::KEY__KP_EXCLAM: return "Keypad !";
502 case KEY_CODE::KEY__KP_MEMSTORE: return "Keypad Mem Store";
503 case KEY_CODE::KEY__KP_MEMRECALL: return "Keypad Mem Recall";
504 case KEY_CODE::KEY__KP_MEMCLEAR: return "Keypad Mem Clear";
505 case KEY_CODE::KEY__KP_MEMADD: return "Keypad Mem Add";
506 case KEY_CODE::KEY__KP_MEMSUBTRACT: return "Keypad Mem Subtract";
507 case KEY_CODE::KEY__KP_MEMMULTIPLY: return "Keypad Mem Multiply";
508 case KEY_CODE::KEY__KP_MEMDIVIDE: return "Keypad Mem Divide";
509 case KEY_CODE::KEY__KP_PLUSMINUS: return "Keypad +/-";
510 case KEY_CODE::KEY__KP_CLEAR: return "Keypad Clear";
511 case KEY_CODE::KEY__KP_CLEARENTRY: return "Keypad Clear Entry";
512 case KEY_CODE::KEY__KP_BINARY: return "Keypad Binary";
513 case KEY_CODE::KEY__KP_OCTAL: return "Keypad Octal";
514 case KEY_CODE::KEY__KP_DECIMAL: return "Keypad Decimal";
515 case KEY_CODE::KEY__KP_HEXADECIMAL: return "Keypad Hexadecimal";
516 case KEY_CODE::KEY__LCTRL: return "Left Control";
517 case KEY_CODE::KEY__LSHIFT: return "Left Shift";
518 case KEY_CODE::KEY__LALT: return "Left Alt";
519 case KEY_CODE::KEY__LGUI: return "Left GUI";
520 case KEY_CODE::KEY__RCTRL: return "Right Control";
521 case KEY_CODE::KEY__RSHIFT: return "Right Shift";
522 case KEY_CODE::KEY__RALT: return "Right Alt";
523 case KEY_CODE::KEY__RGUI: return "Right GUI";
524 case KEY_CODE::KEY__MODE: return "Mode";
525 case KEY_CODE::KEY__SLEEP: return "Sleep";
526 case KEY_CODE::KEY__WAKE: return "Wake";
527 case KEY_CODE::KEY__CHANNEL_INCREMENT: return "Channel Increment";
528 case KEY_CODE::KEY__CHANNEL_DECREMENT: return "Channel Decrement";
529 case KEY_CODE::KEY__MEDIA_PLAY: return "Media Play";
530 case KEY_CODE::KEY__MEDIA_PAUSE: return "Media Pause";
531 case KEY_CODE::KEY__MEDIA_RECORD: return "Media Record";
532 case KEY_CODE::KEY__MEDIA_FAST_FORWARD: return "Media Fast Forward";
533 case KEY_CODE::KEY__MEDIA_REWIND: return "Media Rewind";
534 case KEY_CODE::KEY__MEDIA_NEXT_TRACK: return "Media Next Track";
535 case KEY_CODE::KEY__MEDIA_PREVIOUS_TRACK: return "Media Previous Track";
536 case KEY_CODE::KEY__MEDIA_STOP: return "Media Stop";
537 case KEY_CODE::KEY__MEDIA_EJECT: return "Media Eject";
538 case KEY_CODE::KEY__MEDIA_PLAY_PAUSE: return "Media Play/Pause";
539 case KEY_CODE::KEY__MEDIA_SELECT: return "Media Select";
540 case KEY_CODE::KEY__AC_NEW: return "AC New";
541 case KEY_CODE::KEY__AC_OPEN: return "AC Open";
542 case KEY_CODE::KEY__AC_CLOSE: return "AC Close";
543 case KEY_CODE::KEY__AC_EXIT: return "AC Exit";
544 case KEY_CODE::KEY__AC_SAVE: return "AC Save";
545 case KEY_CODE::KEY__AC_PRINT: return "AC Print";
546 case KEY_CODE::KEY__AC_PROPERTIES: return "AC Properties";
547 case KEY_CODE::KEY__AC_SEARCH: return "AC Search";
548 case KEY_CODE::KEY__AC_HOME: return "AC Home";
549 case KEY_CODE::KEY__AC_BACK: return "AC Back";
550 case KEY_CODE::KEY__AC_FORWARD: return "AC Forward";
551 case KEY_CODE::KEY__AC_STOP: return "AC Stop";
552 case KEY_CODE::KEY__AC_REFRESH: return "AC Refresh";
553 case KEY_CODE::KEY__AC_BOOKMARKS: return "AC Bookmarks";
554 case KEY_CODE::KEY__SOFTLEFT: return "Soft Left";
555 case KEY_CODE::KEY__SOFTRIGHT: return "Soft Right";
556 case KEY_CODE::KEY__CALL: return "Call";
557 case KEY_CODE::KEY__ENDCALL: return "End Call";
558 case KEY_CODE::KEY__COUNT: return "512";
559 default: return "Unknown";
560 }
561 }
562
563 /// Human-readable label for button, used in event ToString() output.
564 inline std::string Button_toString(MOUSE_CODE button) {
565 switch(button) {
567 return "Button 0";
568 case MOUSE_CODE::ButtonLeft: // SDL_BUTTON_LEFT = 1
569 return "Left Button";
570 case MOUSE_CODE::ButtonMiddle: // SDL_BUTTON_MIDDLE = 2
571 return "Middle Button";
572 case MOUSE_CODE::ButtonRight: // SDL_BUTTON_RIGHT = 3
573 return "Right Button";
575 return "Button 4";
577 return "Button 5";
579 return "Button 6";
581 return "Button 7";
582 default:
583 return "Unknown button!";
584 }
585 }
586
587}
588}
589
590
593
594
595 #endif
Sleak::Input::MOUSE_CODE MouseCode
Definition KeyCodes.hpp:592
Sleak::Input::KEY_CODE KeyCode
Definition KeyCodes.hpp:591
Key and mouse-button code enumerations plus their name lookups.
std::string Key_toString(KEY_CODE key)
Human-readable label for key, used in event ToString() output.
Definition KeyCodes.hpp:310
std::string Button_toString(MOUSE_CODE button)
Human-readable label for button, used in event ToString() output.
Definition KeyCodes.hpp:564
Root namespace for everything the engine exposes.
Definition Camera.hpp:10