Skip to content

Commit 247c50a

Browse files
committed
Fix: X11 and glfw missing key in keyboard mapping
1 parent 09f2353 commit 247c50a

3 files changed

Lines changed: 343 additions & 86 deletions

File tree

modules/Interfaces/include/Interfaces/Input/Key/Keyboard.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,10 @@ namespace cae
116116
NumLock,
117117
ScrollLock,
118118

119+
PrintScreen,
120+
Pause,
121+
Menu,
122+
119123
Count
120124
};
121125
} // namespace cae

plugins/Window/GLFW/src/glfw.cpp

Lines changed: 162 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -9,60 +9,168 @@
99

1010
static cae::KeyCode translateKey(const int key)
1111
{
12-
static const std::unordered_map<int, cae::KeyCode> keyMap = {
13-
{GLFW_KEY_A, cae::KeyCode::A},
14-
{GLFW_KEY_B, cae::KeyCode::B},
15-
{GLFW_KEY_C, cae::KeyCode::C},
16-
{GLFW_KEY_D, cae::KeyCode::D},
17-
{GLFW_KEY_E, cae::KeyCode::E},
18-
{GLFW_KEY_F, cae::KeyCode::F},
19-
{GLFW_KEY_G, cae::KeyCode::G},
20-
{GLFW_KEY_H, cae::KeyCode::H},
21-
{GLFW_KEY_I, cae::KeyCode::I},
22-
{GLFW_KEY_J, cae::KeyCode::J},
23-
{GLFW_KEY_K, cae::KeyCode::K},
24-
{GLFW_KEY_L, cae::KeyCode::L},
25-
{GLFW_KEY_M, cae::KeyCode::M},
26-
{GLFW_KEY_N, cae::KeyCode::N},
27-
{GLFW_KEY_O, cae::KeyCode::O},
28-
{GLFW_KEY_P, cae::KeyCode::P},
29-
{GLFW_KEY_Q, cae::KeyCode::Q},
30-
{GLFW_KEY_R, cae::KeyCode::R},
31-
{GLFW_KEY_S, cae::KeyCode::S},
32-
{GLFW_KEY_T, cae::KeyCode::T},
33-
{GLFW_KEY_U, cae::KeyCode::U},
34-
{GLFW_KEY_V, cae::KeyCode::V},
35-
{GLFW_KEY_W, cae::KeyCode::W},
36-
{GLFW_KEY_X, cae::KeyCode::X},
37-
{GLFW_KEY_Y, cae::KeyCode::Y},
38-
{GLFW_KEY_Z, cae::KeyCode::Z},
39-
40-
{GLFW_KEY_0, cae::KeyCode::Num0},
41-
{GLFW_KEY_1, cae::KeyCode::Num1},
42-
{GLFW_KEY_2, cae::KeyCode::Num2},
43-
{GLFW_KEY_3, cae::KeyCode::Num3},
44-
{GLFW_KEY_4, cae::KeyCode::Num4},
45-
{GLFW_KEY_5, cae::KeyCode::Num5},
46-
{GLFW_KEY_6, cae::KeyCode::Num6},
47-
{GLFW_KEY_7, cae::KeyCode::Num7},
48-
{GLFW_KEY_8, cae::KeyCode::Num8},
49-
{GLFW_KEY_9, cae::KeyCode::Num9},
50-
{GLFW_KEY_ESCAPE, cae::KeyCode::Escape},
51-
{GLFW_KEY_LEFT, cae::KeyCode::Left},
52-
{GLFW_KEY_RIGHT, cae::KeyCode::Right},
53-
{GLFW_KEY_UP, cae::KeyCode::Up},
54-
{GLFW_KEY_DOWN, cae::KeyCode::Down},
55-
{GLFW_KEY_SPACE, cae::KeyCode::Space},
56-
{GLFW_KEY_ENTER, cae::KeyCode::Enter},
57-
{GLFW_KEY_BACKSPACE, cae::KeyCode::Backspace},
58-
{GLFW_KEY_TAB, cae::KeyCode::Tab},
59-
{GLFW_KEY_LEFT_SHIFT, cae::KeyCode::LShift},
60-
{GLFW_KEY_LEFT_CONTROL, cae::KeyCode::LCtrl},
61-
{GLFW_KEY_LEFT_ALT, cae::KeyCode::LAlt}
62-
// ...
63-
};
64-
const auto it = keyMap.find(key);
65-
return it != keyMap.end() ? it->second : cae::KeyCode::Count;
12+
switch (key)
13+
{
14+
case GLFW_KEY_A:
15+
return cae::KeyCode::A;
16+
case GLFW_KEY_B:
17+
return cae::KeyCode::B;
18+
case GLFW_KEY_C:
19+
return cae::KeyCode::C;
20+
case GLFW_KEY_D:
21+
return cae::KeyCode::D;
22+
case GLFW_KEY_E:
23+
return cae::KeyCode::E;
24+
case GLFW_KEY_F:
25+
return cae::KeyCode::F;
26+
case GLFW_KEY_G:
27+
return cae::KeyCode::G;
28+
case GLFW_KEY_H:
29+
return cae::KeyCode::H;
30+
case GLFW_KEY_I:
31+
return cae::KeyCode::I;
32+
case GLFW_KEY_J:
33+
return cae::KeyCode::J;
34+
case GLFW_KEY_K:
35+
return cae::KeyCode::K;
36+
case GLFW_KEY_L:
37+
return cae::KeyCode::L;
38+
case GLFW_KEY_M:
39+
return cae::KeyCode::M;
40+
case GLFW_KEY_N:
41+
return cae::KeyCode::N;
42+
case GLFW_KEY_O:
43+
return cae::KeyCode::O;
44+
case GLFW_KEY_P:
45+
return cae::KeyCode::P;
46+
case GLFW_KEY_Q:
47+
return cae::KeyCode::Q;
48+
case GLFW_KEY_R:
49+
return cae::KeyCode::R;
50+
case GLFW_KEY_S:
51+
return cae::KeyCode::S;
52+
case GLFW_KEY_T:
53+
return cae::KeyCode::T;
54+
case GLFW_KEY_U:
55+
return cae::KeyCode::U;
56+
case GLFW_KEY_V:
57+
return cae::KeyCode::V;
58+
case GLFW_KEY_W:
59+
return cae::KeyCode::W;
60+
case GLFW_KEY_X:
61+
return cae::KeyCode::X;
62+
case GLFW_KEY_Y:
63+
return cae::KeyCode::Y;
64+
case GLFW_KEY_Z:
65+
return cae::KeyCode::Z;
66+
67+
case GLFW_KEY_0:
68+
return cae::KeyCode::Num0;
69+
case GLFW_KEY_1:
70+
return cae::KeyCode::Num1;
71+
case GLFW_KEY_2:
72+
return cae::KeyCode::Num2;
73+
case GLFW_KEY_3:
74+
return cae::KeyCode::Num3;
75+
case GLFW_KEY_4:
76+
return cae::KeyCode::Num4;
77+
case GLFW_KEY_5:
78+
return cae::KeyCode::Num5;
79+
case GLFW_KEY_6:
80+
return cae::KeyCode::Num6;
81+
case GLFW_KEY_7:
82+
return cae::KeyCode::Num7;
83+
case GLFW_KEY_8:
84+
return cae::KeyCode::Num8;
85+
case GLFW_KEY_9:
86+
return cae::KeyCode::Num9;
87+
88+
case GLFW_KEY_LEFT_SHIFT:
89+
return cae::KeyCode::LShift;
90+
case GLFW_KEY_RIGHT_SHIFT:
91+
return cae::KeyCode::RShift;
92+
case GLFW_KEY_LEFT_CONTROL:
93+
return cae::KeyCode::LCtrl;
94+
case GLFW_KEY_RIGHT_CONTROL:
95+
return cae::KeyCode::RCtrl;
96+
case GLFW_KEY_LEFT_ALT:
97+
return cae::KeyCode::LAlt;
98+
case GLFW_KEY_RIGHT_ALT:
99+
return cae::KeyCode::RAlt;
100+
case GLFW_KEY_LEFT_SUPER:
101+
return cae::KeyCode::LSuper;
102+
case GLFW_KEY_RIGHT_SUPER:
103+
return cae::KeyCode::RSuper;
104+
case GLFW_KEY_CAPS_LOCK:
105+
return cae::KeyCode::CapsLock;
106+
107+
case GLFW_KEY_UP:
108+
return cae::KeyCode::Up;
109+
case GLFW_KEY_DOWN:
110+
return cae::KeyCode::Down;
111+
case GLFW_KEY_LEFT:
112+
return cae::KeyCode::Left;
113+
case GLFW_KEY_RIGHT:
114+
return cae::KeyCode::Right;
115+
case GLFW_KEY_HOME:
116+
return cae::KeyCode::Home;
117+
case GLFW_KEY_END:
118+
return cae::KeyCode::End;
119+
case GLFW_KEY_PAGE_UP:
120+
return cae::KeyCode::PageUp;
121+
case GLFW_KEY_PAGE_DOWN:
122+
return cae::KeyCode::PageDown;
123+
124+
case GLFW_KEY_ENTER:
125+
return cae::KeyCode::Enter;
126+
case GLFW_KEY_BACKSPACE:
127+
return cae::KeyCode::Backspace;
128+
case GLFW_KEY_TAB:
129+
return cae::KeyCode::Tab;
130+
case GLFW_KEY_SPACE:
131+
return cae::KeyCode::Space;
132+
case GLFW_KEY_DELETE:
133+
return cae::KeyCode::Delete;
134+
case GLFW_KEY_INSERT:
135+
return cae::KeyCode::Insert;
136+
137+
case GLFW_KEY_F1:
138+
return cae::KeyCode::F1;
139+
case GLFW_KEY_F2:
140+
return cae::KeyCode::F2;
141+
case GLFW_KEY_F3:
142+
return cae::KeyCode::F3;
143+
case GLFW_KEY_F4:
144+
return cae::KeyCode::F4;
145+
case GLFW_KEY_F5:
146+
return cae::KeyCode::F5;
147+
case GLFW_KEY_F6:
148+
return cae::KeyCode::F6;
149+
case GLFW_KEY_F7:
150+
return cae::KeyCode::F7;
151+
case GLFW_KEY_F8:
152+
return cae::KeyCode::F8;
153+
case GLFW_KEY_F9:
154+
return cae::KeyCode::F9;
155+
case GLFW_KEY_F10:
156+
return cae::KeyCode::F10;
157+
case GLFW_KEY_F11:
158+
return cae::KeyCode::F11;
159+
case GLFW_KEY_F12:
160+
return cae::KeyCode::F12;
161+
162+
case GLFW_KEY_ESCAPE:
163+
return cae::KeyCode::Escape;
164+
case GLFW_KEY_PRINT_SCREEN:
165+
return cae::KeyCode::PrintScreen;
166+
case GLFW_KEY_PAUSE:
167+
return cae::KeyCode::Pause;
168+
case GLFW_KEY_MENU:
169+
return cae::KeyCode::Menu;
170+
171+
default:
172+
return cae::KeyCode::Count;
173+
}
66174
}
67175

68176
void cae::GLFW::keyCallback(GLFWwindow *window, const int key, int, const int action, int)

0 commit comments

Comments
 (0)