All Classes Files Functions Variables Typedefs Pages
GLFWTools.hpp
1 #pragma once
2 
3 #include "../input/KeyCode.hpp"
4 #include <GL/glew.h>
5 #include <GLFW/glfw3.h>
6 
7 namespace lumina {
8 
9 inline KeyCode translateGLFWKey(int key) {
10  switch(key) {
11  case GLFW_KEY_BACKSPACE: return KeyCode::Backspace;
12  case GLFW_KEY_TAB: return KeyCode::Tab;
13  case GLFW_KEY_KP_ENTER:
14  case GLFW_KEY_ENTER: return KeyCode::Return;
15  case GLFW_KEY_LEFT_SHIFT:
16  case GLFW_KEY_RIGHT_SHIFT: return KeyCode::Shift;
17  case GLFW_KEY_LEFT_CONTROL:
18  case GLFW_KEY_RIGHT_CONTROL: return KeyCode::Control;
19  case GLFW_KEY_LEFT_ALT:
20  case GLFW_KEY_RIGHT_ALT: return KeyCode::Alt;
21  case GLFW_KEY_PAUSE: return KeyCode::Pause;
22  case GLFW_KEY_CAPS_LOCK: return KeyCode::Capital;
23  case GLFW_KEY_ESCAPE: return KeyCode::Escape;
24  case GLFW_KEY_SPACE: return KeyCode::Space;
25  case GLFW_KEY_PAGE_UP: return KeyCode::Pageup;
26  case GLFW_KEY_PAGE_DOWN: return KeyCode::Pagedown;
27  case GLFW_KEY_END: return KeyCode::End;
28  case GLFW_KEY_HOME: return KeyCode::Home;
29  case GLFW_KEY_LEFT: return KeyCode::Left;
30  case GLFW_KEY_UP: return KeyCode::Up;
31  case GLFW_KEY_RIGHT: return KeyCode::Right;
32  case GLFW_KEY_DOWN: return KeyCode::Down;
33  case GLFW_KEY_PRINT_SCREEN: return KeyCode::Snapshot;
34  case GLFW_KEY_INSERT: return KeyCode::Insert;
35  case GLFW_KEY_DELETE: return KeyCode::Delete;
36  case GLFW_KEY_0: return KeyCode::K0;
37  case GLFW_KEY_1: return KeyCode::K1;
38  case GLFW_KEY_2: return KeyCode::K2;
39  case GLFW_KEY_3: return KeyCode::K3;
40  case GLFW_KEY_4: return KeyCode::K4;
41  case GLFW_KEY_5: return KeyCode::K5;
42  case GLFW_KEY_6: return KeyCode::K6;
43  case GLFW_KEY_7: return KeyCode::K7;
44  case GLFW_KEY_8: return KeyCode::K8;
45  case GLFW_KEY_9: return KeyCode::K9;
46  case GLFW_KEY_A: return KeyCode::A;
47  case GLFW_KEY_B: return KeyCode::B;
48  case GLFW_KEY_C: return KeyCode::C;
49  case GLFW_KEY_D: return KeyCode::D;
50  case GLFW_KEY_E: return KeyCode::E;
51  case GLFW_KEY_F: return KeyCode::F;
52  case GLFW_KEY_G: return KeyCode::G;
53  case GLFW_KEY_H: return KeyCode::H;
54  case GLFW_KEY_I: return KeyCode::I;
55  case GLFW_KEY_J: return KeyCode::J;
56  case GLFW_KEY_K: return KeyCode::K;
57  case GLFW_KEY_L: return KeyCode::L;
58  case GLFW_KEY_M: return KeyCode::M;
59  case GLFW_KEY_N: return KeyCode::N;
60  case GLFW_KEY_O: return KeyCode::O;
61  case GLFW_KEY_P: return KeyCode::P;
62  case GLFW_KEY_Q: return KeyCode::Q;
63  case GLFW_KEY_R: return KeyCode::R;
64  case GLFW_KEY_S: return KeyCode::S;
65  case GLFW_KEY_T: return KeyCode::T;
66  case GLFW_KEY_U: return KeyCode::U;
67  case GLFW_KEY_V: return KeyCode::V;
68  case GLFW_KEY_W: return KeyCode::W;
69  case GLFW_KEY_X: return KeyCode::X;
70  case GLFW_KEY_Y: return KeyCode::Y;
71  case GLFW_KEY_Z: return KeyCode::Z;
72  case GLFW_KEY_LEFT_SUPER: return KeyCode::LWin;
73  case GLFW_KEY_RIGHT_SUPER: return KeyCode::RWin;
74  case GLFW_KEY_MENU: return KeyCode::Apps;
75  case GLFW_KEY_KP_0: return KeyCode::Numpad0;
76  case GLFW_KEY_KP_1: return KeyCode::Numpad1;
77  case GLFW_KEY_KP_2: return KeyCode::Numpad2;
78  case GLFW_KEY_KP_3: return KeyCode::Numpad3;
79  case GLFW_KEY_KP_4: return KeyCode::Numpad4;
80  case GLFW_KEY_KP_5: return KeyCode::Numpad5;
81  case GLFW_KEY_KP_6: return KeyCode::Numpad6;
82  case GLFW_KEY_KP_7: return KeyCode::Numpad7;
83  case GLFW_KEY_KP_8: return KeyCode::Numpad8;
84  case GLFW_KEY_KP_9: return KeyCode::Numpad9;
85  case GLFW_KEY_KP_MULTIPLY: return KeyCode::Multiply;
86  case GLFW_KEY_KP_ADD: return KeyCode::Add;
87  case GLFW_KEY_KP_SUBTRACT: return KeyCode::Subtract;
88  case GLFW_KEY_KP_DECIMAL: return KeyCode::Decimal;
89  case GLFW_KEY_KP_DIVIDE: return KeyCode::Divide;
90  case GLFW_KEY_F1: return KeyCode::F1;
91  case GLFW_KEY_F2: return KeyCode::F2;
92  case GLFW_KEY_F3: return KeyCode::F3;
93  case GLFW_KEY_F4: return KeyCode::F4;
94  case GLFW_KEY_F5: return KeyCode::F5;
95  case GLFW_KEY_F6: return KeyCode::F6;
96  case GLFW_KEY_F7: return KeyCode::F7;
97  case GLFW_KEY_F8: return KeyCode::F8;
98  case GLFW_KEY_F9: return KeyCode::F9;
99  case GLFW_KEY_F10: return KeyCode::F10;
100  case GLFW_KEY_F11: return KeyCode::F11;
101  case GLFW_KEY_F12: return KeyCode::F12;
102  case GLFW_KEY_F13: return KeyCode::F13;
103  case GLFW_KEY_F14: return KeyCode::F14;
104  case GLFW_KEY_F15: return KeyCode::F15;
105  case GLFW_KEY_F16: return KeyCode::F16;
106  case GLFW_KEY_F17: return KeyCode::F17;
107  case GLFW_KEY_F18: return KeyCode::F18;
108  case GLFW_KEY_F19: return KeyCode::F19;
109  case GLFW_KEY_F20: return KeyCode::F20;
110  case GLFW_KEY_F21: return KeyCode::F21;
111  case GLFW_KEY_F22: return KeyCode::F22;
112  case GLFW_KEY_F23: return KeyCode::F23;
113  case GLFW_KEY_F24: return KeyCode::F24;
114  case GLFW_KEY_NUM_LOCK: return KeyCode::Numlock;
115  case GLFW_KEY_SCROLL_LOCK: return KeyCode::Scroll;
116  case GLFW_KEY_SEMICOLON: return KeyCode::OEM_1;
117  case GLFW_KEY_SLASH: return KeyCode::OEM_2;
118  case GLFW_KEY_GRAVE_ACCENT: return KeyCode::OEM_3;
119  case GLFW_KEY_LEFT_BRACKET: return KeyCode::OEM_4;
120  case GLFW_KEY_BACKSLASH: return KeyCode::OEM_5;
121  case GLFW_KEY_RIGHT_BRACKET: return KeyCode::OEM_6;
122  case GLFW_KEY_APOSTROPHE: return KeyCode::OEM_7;
123  case GLFW_KEY_WORLD_1: return KeyCode::OEM_8;
124  case GLFW_KEY_WORLD_2: return KeyCode::OEM_102;
125  case GLFW_KEY_EQUAL: return KeyCode::OEM_Plus;
126  case GLFW_KEY_COMMA: return KeyCode::OEM_Comma;
127  case GLFW_KEY_MINUS: return KeyCode::OEM_Minus;
128  case GLFW_KEY_PERIOD: return KeyCode::OEM_Period;
129  default: return KeyCode::None;
130  }
131 }
132 
133 } // namespace lumina