1 /*
2  * This file is part of EasyRPG Player.
3  *
4  * EasyRPG Player is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * EasyRPG Player is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with EasyRPG Player. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #ifndef EP_KEYS_H
19 #define EP_KEYS_H
20 
21 // Headers
22 #include "system.h"
23 #include <lcf/enum_tags.h>
24 
25 namespace Input {
26 	/**
27 	 * Keys namespace
28 	 */
29 	namespace Keys {
30 		enum InputKey : uint8_t {
31 			NONE,
32 			BACKSPACE,
33 			TAB,
34 			CLEAR,
35 			RETURN,
36 			PAUSE,
37 			ESCAPE,
38 			SPACE,
39 			PGUP,
40 			PGDN,
41 			ENDS,
42 			HOME,
43 			LEFT,
44 			UP,
45 			RIGHT,
46 			DOWN,
47 			SNAPSHOT,
48 			INSERT,
49 			DEL,
50 			SHIFT,
51 			LSHIFT,
52 			RSHIFT,
53 			CTRL,
54 			LCTRL,
55 			RCTRL,
56 			ALT,
57 			LALT,
58 			RALT,
59 			N0,
60 			N1,
61 			N2,
62 			N3,
63 			N4,
64 			N5,
65 			N6,
66 			N7,
67 			N8,
68 			N9,
69 			A,
70 			B,
71 			C,
72 			D,
73 			E,
74 			F,
75 			G,
76 			H,
77 			I,
78 			J,
79 			K,
80 			L,
81 			M,
82 			N,
83 			O,
84 			P,
85 			Q,
86 			R,
87 			S,
88 			T,
89 			U,
90 			V,
91 			W,
92 			X,
93 			Y,
94 			Z,
95 			LOS,
96 			ROS,
97 			MENU,
98 			KP0,
99 			KP1,
100 			KP2,
101 			KP3,
102 			KP4,
103 			KP5,
104 			KP6,
105 			KP7,
106 			KP8,
107 			KP9,
108 			KP_MULTIPLY,
109 			KP_ADD,
110 			KP_SUBTRACT,
111 			KP_PERIOD,
112 			KP_DIVIDE,
113 			COMMA,
114 			PERIOD,
115 			SLASH, // After "."
116 			F1,
117 			F2,
118 			F3,
119 			F4,
120 			F5,
121 			F6,
122 			F7,
123 			F8,
124 			F9,
125 			F10,
126 			F11,
127 			F12,
128 			CAPS_LOCK,
129 			NUM_LOCK,
130 			SCROLL_LOCK,
131 			AC_BACK,
132 			SELECT,
133 			LEFT_BRACKET, // After P: [, ], '\'
134 			RIGHT_BRACKET,
135 			BACKSLASH, // On some keyboards after '
136 			SEMICOLON, // After L: ;, '
137 			APOSTROPH,
138 
139 #if defined(USE_MOUSE) && defined(SUPPORT_MOUSE)
140 			MOUSE_LEFT,
141 			MOUSE_RIGHT,
142 			MOUSE_MIDDLE,
143 			MOUSE_XBUTTON1,
144 			MOUSE_XBUTTON2,
145 			MOUSE_SCROLLUP,
146 			MOUSE_SCROLLDOWN,
147 #endif
148 
149 #if defined(USE_JOYSTICK) && defined(SUPPORT_JOYSTICK)
150 			JOY_0,
151 			JOY_1,
152 			JOY_2,
153 			JOY_3,
154 			JOY_4,
155 			JOY_5,
156 			JOY_6,
157 			JOY_7,
158 			JOY_8,
159 			JOY_9,
160 			JOY_10,
161 			JOY_11,
162 			JOY_12,
163 			JOY_13,
164 			JOY_14,
165 			JOY_15,
166 			JOY_16,
167 			JOY_17,
168 			JOY_18,
169 			JOY_19,
170 			JOY_20,
171 			JOY_21,
172 			JOY_22,
173 			JOY_23,
174 			JOY_24,
175 			JOY_25,
176 			JOY_26,
177 			JOY_27,
178 			JOY_28,
179 			JOY_29,
180 			JOY_30,
181 			JOY_31,
182 #endif
183 
184 #if defined(USE_JOYSTICK_HAT)  && defined(SUPPORT_JOYSTICK_HAT)
185 			JOY_HAT_LOWER_LEFT,
186 			JOY_HAT_DOWN,
187 			JOY_HAT_LOWER_RIGHT,
188 			JOY_HAT_LEFT,
189 			JOY_HAT_RIGHT,
190 			JOY_HAT_UPPER_LEFT,
191 			JOY_HAT_UP,
192 			JOY_HAT_UPPER_RIGHT,
193 #endif
194 
195 #if defined(USE_JOYSTICK_AXIS)  && defined(SUPPORT_JOYSTICK_AXIS)
196 			JOY_AXIS_X_LEFT,
197 			JOY_AXIS_X_RIGHT,
198 			JOY_AXIS_Y_DOWN,
199 			JOY_AXIS_Y_UP,
200 #endif
201 
202 #if defined(USE_TOUCH) && defined(SUPPORT_TOUCH)
203 			ONE_FINGER,
204 			TWO_FINGERS,
205 #endif
206 
207 			KEYS_COUNT
208 		};
209 
210 		constexpr auto kNames = lcf::makeEnumTags<InputKey>(
211 			"NONE",
212 			"BACKSPACE",
213 			"TAB",
214 			"CLEAR",
215 			"RETURN",
216 			"PAUSE",
217 			"ESCAPE",
218 			"SPACE",
219 			"PGUP",
220 			"PGDN",
221 			"ENDS",
222 			"HOME",
223 			"LEFT",
224 			"UP",
225 			"RIGHT",
226 			"DOWN",
227 			"SNAPSHOT",
228 			"INSERT",
229 			"DEL",
230 			"SHIFT",
231 			"LSHIFT",
232 			"RSHIFT",
233 			"CTRL",
234 			"LCTRL",
235 			"RCTRL",
236 			"ALT",
237 			"LALT",
238 			"RALT",
239 			"N0",
240 			"N1",
241 			"N2",
242 			"N3",
243 			"N4",
244 			"N5",
245 			"N6",
246 			"N7",
247 			"N8",
248 			"N9",
249 			"A",
250 			"B",
251 			"C",
252 			"D",
253 			"E",
254 			"F",
255 			"G",
256 			"H",
257 			"I",
258 			"J",
259 			"K",
260 			"L",
261 			"M",
262 			"N",
263 			"O",
264 			"P",
265 			"Q",
266 			"R",
267 			"S",
268 			"T",
269 			"U",
270 			"V",
271 			"W",
272 			"X",
273 			"Y",
274 			"Z",
275 			"LOS",
276 			"ROS",
277 			"MENU",
278 			"KP0",
279 			"KP1",
280 			"KP2",
281 			"KP3",
282 			"KP4",
283 			"KP5",
284 			"KP6",
285 			"KP7",
286 			"KP8",
287 			"KP9",
288 			"MULTIPLY",
289 			"ADD",
290 			"SUBTRACT",
291 			"PERIOD",
292 			"DIVIDE",
293 			"F1",
294 			"F2",
295 			"F3",
296 			"F4",
297 			"F5",
298 			"F6",
299 			"F7",
300 			"F8",
301 			"F9",
302 			"F10",
303 			"F11",
304 			"F12",
305 			"CAPS_LOCK",
306 			"NUM_LOCK",
307 			"SCROLL_LOCK",
308 			"AC_BACK",
309 			"SELECT",
310 
311 #if defined(USE_MOUSE) && defined(SUPPORT_MOUSE)
312 			"MOUSE_LEFT",
313 			"MOUSE_RIGHT",
314 			"MOUSE_MIDDLE",
315 			"MOUSE_XBUTTON1",
316 			"MOUSE_XBUTTON2",
317 			"MOUSE_SCROLLUP",
318 			"MOUSE_SCROLLDOWN",
319 #endif
320 
321 #if defined(USE_JOYSTICK) && defined(SUPPORT_JOYSTICK)
322 			"JOY_0",
323 			"JOY_1",
324 			"JOY_2",
325 			"JOY_3",
326 			"JOY_4",
327 			"JOY_5",
328 			"JOY_6",
329 			"JOY_7",
330 			"JOY_8",
331 			"JOY_9",
332 			"JOY_10",
333 			"JOY_11",
334 			"JOY_12",
335 			"JOY_13",
336 			"JOY_14",
337 			"JOY_15",
338 			"JOY_16",
339 			"JOY_17",
340 			"JOY_18",
341 			"JOY_19",
342 			"JOY_20",
343 			"JOY_21",
344 			"JOY_22",
345 			"JOY_23",
346 			"JOY_24",
347 			"JOY_25",
348 			"JOY_26",
349 			"JOY_27",
350 			"JOY_28",
351 			"JOY_29",
352 			"JOY_30",
353 			"JOY_31",
354 #endif
355 
356 #if defined(USE_JOYSTICK_HAT)  && defined(SUPPORT_JOYSTICK_HAT)
357 			"JOY_HAT_LOWER_LEFT",
358 			"JOY_HAT_DOWN",
359 			"JOY_HAT_LOWER_RIGHT",
360 			"JOY_HAT_LEFT",
361 			"JOY_HAT_RIGHT",
362 			"JOY_HAT_UPPER_LEFT",
363 			"JOY_HAT_UP",
364 			"JOY_HAT_UPPER_RIGHT",
365 #endif
366 
367 #if defined(USE_JOYSTICK_AXIS)  && defined(SUPPORT_JOYSTICK_AXIS)
368 			"JOY_AXIS_X_LEFT",
369 			"JOY_AXIS_X_RIGHT",
370 			"JOY_AXIS_Y_DOWN",
371 			"JOY_AXIS_Y_UP",
372 #endif
373 
374 #if defined(USE_TOUCH) && defined(SUPPORT_TOUCH)
375 			"ONE_FINGER",
376 			"TWO_FINGERS",
377 #endif
378 			"KEYS_COUNT"
379 			);
380 	}
381 }
382 
383 #endif
384