1 /*************************************************************************/
2 /*  global_constants.cpp                                                 */
3 /*************************************************************************/
4 /*                       This file is part of:                           */
5 /*                           GODOT ENGINE                                */
6 /*                      https://godotengine.org                          */
7 /*************************************************************************/
8 /* Copyright (c) 2007-2019 Juan Linietsky, Ariel Manzur.                 */
9 /* Copyright (c) 2014-2019 Godot Engine contributors (cf. AUTHORS.md)    */
10 /*                                                                       */
11 /* Permission is hereby granted, free of charge, to any person obtaining */
12 /* a copy of this software and associated documentation files (the       */
13 /* "Software"), to deal in the Software without restriction, including   */
14 /* without limitation the rights to use, copy, modify, merge, publish,   */
15 /* distribute, sublicense, and/or sell copies of the Software, and to    */
16 /* permit persons to whom the Software is furnished to do so, subject to */
17 /* the following conditions:                                             */
18 /*                                                                       */
19 /* The above copyright notice and this permission notice shall be        */
20 /* included in all copies or substantial portions of the Software.       */
21 /*                                                                       */
22 /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */
23 /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */
24 /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
25 /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */
26 /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */
27 /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */
28 /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
29 /*************************************************************************/
30 #include "global_constants.h"
31 #include "object.h"
32 #include "os/keyboard.h"
33 #include "variant.h"
34 
35 struct _GlobalConstant {
36 
37 	const char *name;
38 	int value;
39 };
40 
41 #define BIND_GLOBAL_CONSTANT(m_constant) \
42 	{ #m_constant, m_constant }
43 
44 static _GlobalConstant _global_constants[] = {
45 
46 	//{ KEY_BACKSPACE, VK_BACK },// (0x08) // backspace
47 
48 	BIND_GLOBAL_CONSTANT(MARGIN_LEFT),
49 	BIND_GLOBAL_CONSTANT(MARGIN_TOP),
50 	BIND_GLOBAL_CONSTANT(MARGIN_RIGHT),
51 	BIND_GLOBAL_CONSTANT(MARGIN_BOTTOM),
52 	BIND_GLOBAL_CONSTANT(VERTICAL),
53 	BIND_GLOBAL_CONSTANT(HORIZONTAL),
54 	BIND_GLOBAL_CONSTANT(HALIGN_LEFT),
55 	BIND_GLOBAL_CONSTANT(HALIGN_CENTER),
56 	BIND_GLOBAL_CONSTANT(HALIGN_RIGHT),
57 	BIND_GLOBAL_CONSTANT(VALIGN_TOP),
58 	BIND_GLOBAL_CONSTANT(VALIGN_CENTER),
59 	BIND_GLOBAL_CONSTANT(VALIGN_BOTTOM),
60 
61 	// hueg list of keys
62 	BIND_GLOBAL_CONSTANT(SPKEY),
63 
64 	BIND_GLOBAL_CONSTANT(KEY_ESCAPE),
65 	BIND_GLOBAL_CONSTANT(KEY_TAB),
66 	BIND_GLOBAL_CONSTANT(KEY_BACKTAB),
67 	BIND_GLOBAL_CONSTANT(KEY_BACKSPACE),
68 	BIND_GLOBAL_CONSTANT(KEY_RETURN),
69 	BIND_GLOBAL_CONSTANT(KEY_ENTER),
70 	BIND_GLOBAL_CONSTANT(KEY_INSERT),
71 	BIND_GLOBAL_CONSTANT(KEY_DELETE),
72 	BIND_GLOBAL_CONSTANT(KEY_PAUSE),
73 	BIND_GLOBAL_CONSTANT(KEY_PRINT),
74 	BIND_GLOBAL_CONSTANT(KEY_SYSREQ),
75 	BIND_GLOBAL_CONSTANT(KEY_CLEAR),
76 	BIND_GLOBAL_CONSTANT(KEY_HOME),
77 	BIND_GLOBAL_CONSTANT(KEY_END),
78 	BIND_GLOBAL_CONSTANT(KEY_LEFT),
79 	BIND_GLOBAL_CONSTANT(KEY_UP),
80 	BIND_GLOBAL_CONSTANT(KEY_RIGHT),
81 	BIND_GLOBAL_CONSTANT(KEY_DOWN),
82 	BIND_GLOBAL_CONSTANT(KEY_PAGEUP),
83 	BIND_GLOBAL_CONSTANT(KEY_PAGEDOWN),
84 	BIND_GLOBAL_CONSTANT(KEY_SHIFT),
85 	BIND_GLOBAL_CONSTANT(KEY_CONTROL),
86 	BIND_GLOBAL_CONSTANT(KEY_META),
87 	BIND_GLOBAL_CONSTANT(KEY_ALT),
88 	BIND_GLOBAL_CONSTANT(KEY_CAPSLOCK),
89 	BIND_GLOBAL_CONSTANT(KEY_NUMLOCK),
90 	BIND_GLOBAL_CONSTANT(KEY_SCROLLLOCK),
91 	BIND_GLOBAL_CONSTANT(KEY_F1),
92 	BIND_GLOBAL_CONSTANT(KEY_F2),
93 	BIND_GLOBAL_CONSTANT(KEY_F3),
94 	BIND_GLOBAL_CONSTANT(KEY_F4),
95 	BIND_GLOBAL_CONSTANT(KEY_F5),
96 	BIND_GLOBAL_CONSTANT(KEY_F6),
97 	BIND_GLOBAL_CONSTANT(KEY_F7),
98 	BIND_GLOBAL_CONSTANT(KEY_F8),
99 	BIND_GLOBAL_CONSTANT(KEY_F9),
100 	BIND_GLOBAL_CONSTANT(KEY_F10),
101 	BIND_GLOBAL_CONSTANT(KEY_F11),
102 	BIND_GLOBAL_CONSTANT(KEY_F12),
103 	BIND_GLOBAL_CONSTANT(KEY_F13),
104 	BIND_GLOBAL_CONSTANT(KEY_F14),
105 	BIND_GLOBAL_CONSTANT(KEY_F15),
106 	BIND_GLOBAL_CONSTANT(KEY_F16),
107 	BIND_GLOBAL_CONSTANT(KEY_KP_ENTER),
108 	BIND_GLOBAL_CONSTANT(KEY_KP_MULTIPLY),
109 	BIND_GLOBAL_CONSTANT(KEY_KP_DIVIDE),
110 	BIND_GLOBAL_CONSTANT(KEY_KP_SUBTRACT),
111 	BIND_GLOBAL_CONSTANT(KEY_KP_PERIOD),
112 	BIND_GLOBAL_CONSTANT(KEY_KP_ADD),
113 	BIND_GLOBAL_CONSTANT(KEY_KP_0),
114 	BIND_GLOBAL_CONSTANT(KEY_KP_1),
115 	BIND_GLOBAL_CONSTANT(KEY_KP_2),
116 	BIND_GLOBAL_CONSTANT(KEY_KP_3),
117 	BIND_GLOBAL_CONSTANT(KEY_KP_4),
118 	BIND_GLOBAL_CONSTANT(KEY_KP_5),
119 	BIND_GLOBAL_CONSTANT(KEY_KP_6),
120 	BIND_GLOBAL_CONSTANT(KEY_KP_7),
121 	BIND_GLOBAL_CONSTANT(KEY_KP_8),
122 	BIND_GLOBAL_CONSTANT(KEY_KP_9),
123 	BIND_GLOBAL_CONSTANT(KEY_SUPER_L),
124 	BIND_GLOBAL_CONSTANT(KEY_SUPER_R),
125 	BIND_GLOBAL_CONSTANT(KEY_MENU),
126 	BIND_GLOBAL_CONSTANT(KEY_HYPER_L),
127 	BIND_GLOBAL_CONSTANT(KEY_HYPER_R),
128 	BIND_GLOBAL_CONSTANT(KEY_HELP),
129 	BIND_GLOBAL_CONSTANT(KEY_DIRECTION_L),
130 	BIND_GLOBAL_CONSTANT(KEY_DIRECTION_R),
131 	BIND_GLOBAL_CONSTANT(KEY_BACK),
132 	BIND_GLOBAL_CONSTANT(KEY_FORWARD),
133 	BIND_GLOBAL_CONSTANT(KEY_STOP),
134 	BIND_GLOBAL_CONSTANT(KEY_REFRESH),
135 	BIND_GLOBAL_CONSTANT(KEY_VOLUMEDOWN),
136 	BIND_GLOBAL_CONSTANT(KEY_VOLUMEMUTE),
137 	BIND_GLOBAL_CONSTANT(KEY_VOLUMEUP),
138 	BIND_GLOBAL_CONSTANT(KEY_BASSBOOST),
139 	BIND_GLOBAL_CONSTANT(KEY_BASSUP),
140 	BIND_GLOBAL_CONSTANT(KEY_BASSDOWN),
141 	BIND_GLOBAL_CONSTANT(KEY_TREBLEUP),
142 	BIND_GLOBAL_CONSTANT(KEY_TREBLEDOWN),
143 	BIND_GLOBAL_CONSTANT(KEY_MEDIAPLAY),
144 	BIND_GLOBAL_CONSTANT(KEY_MEDIASTOP),
145 	BIND_GLOBAL_CONSTANT(KEY_MEDIAPREVIOUS),
146 	BIND_GLOBAL_CONSTANT(KEY_MEDIANEXT),
147 	BIND_GLOBAL_CONSTANT(KEY_MEDIARECORD),
148 	BIND_GLOBAL_CONSTANT(KEY_HOMEPAGE),
149 	BIND_GLOBAL_CONSTANT(KEY_FAVORITES),
150 	BIND_GLOBAL_CONSTANT(KEY_SEARCH),
151 	BIND_GLOBAL_CONSTANT(KEY_STANDBY),
152 	BIND_GLOBAL_CONSTANT(KEY_OPENURL),
153 	BIND_GLOBAL_CONSTANT(KEY_LAUNCHMAIL),
154 	BIND_GLOBAL_CONSTANT(KEY_LAUNCHMEDIA),
155 	BIND_GLOBAL_CONSTANT(KEY_LAUNCH0),
156 	BIND_GLOBAL_CONSTANT(KEY_LAUNCH1),
157 	BIND_GLOBAL_CONSTANT(KEY_LAUNCH2),
158 	BIND_GLOBAL_CONSTANT(KEY_LAUNCH3),
159 	BIND_GLOBAL_CONSTANT(KEY_LAUNCH4),
160 	BIND_GLOBAL_CONSTANT(KEY_LAUNCH5),
161 	BIND_GLOBAL_CONSTANT(KEY_LAUNCH6),
162 	BIND_GLOBAL_CONSTANT(KEY_LAUNCH7),
163 	BIND_GLOBAL_CONSTANT(KEY_LAUNCH8),
164 	BIND_GLOBAL_CONSTANT(KEY_LAUNCH9),
165 	BIND_GLOBAL_CONSTANT(KEY_LAUNCHA),
166 	BIND_GLOBAL_CONSTANT(KEY_LAUNCHB),
167 	BIND_GLOBAL_CONSTANT(KEY_LAUNCHC),
168 	BIND_GLOBAL_CONSTANT(KEY_LAUNCHD),
169 	BIND_GLOBAL_CONSTANT(KEY_LAUNCHE),
170 	BIND_GLOBAL_CONSTANT(KEY_LAUNCHF),
171 
172 	BIND_GLOBAL_CONSTANT(KEY_UNKNOWN),
173 	BIND_GLOBAL_CONSTANT(KEY_SPACE),
174 	BIND_GLOBAL_CONSTANT(KEY_EXCLAM),
175 	BIND_GLOBAL_CONSTANT(KEY_QUOTEDBL),
176 	BIND_GLOBAL_CONSTANT(KEY_NUMBERSIGN),
177 	BIND_GLOBAL_CONSTANT(KEY_DOLLAR),
178 	BIND_GLOBAL_CONSTANT(KEY_PERCENT),
179 	BIND_GLOBAL_CONSTANT(KEY_AMPERSAND),
180 	BIND_GLOBAL_CONSTANT(KEY_APOSTROPHE),
181 	BIND_GLOBAL_CONSTANT(KEY_PARENLEFT),
182 	BIND_GLOBAL_CONSTANT(KEY_PARENRIGHT),
183 	BIND_GLOBAL_CONSTANT(KEY_ASTERISK),
184 	BIND_GLOBAL_CONSTANT(KEY_PLUS),
185 	BIND_GLOBAL_CONSTANT(KEY_COMMA),
186 	BIND_GLOBAL_CONSTANT(KEY_MINUS),
187 	BIND_GLOBAL_CONSTANT(KEY_PERIOD),
188 	BIND_GLOBAL_CONSTANT(KEY_SLASH),
189 	BIND_GLOBAL_CONSTANT(KEY_0),
190 	BIND_GLOBAL_CONSTANT(KEY_1),
191 	BIND_GLOBAL_CONSTANT(KEY_2),
192 	BIND_GLOBAL_CONSTANT(KEY_3),
193 	BIND_GLOBAL_CONSTANT(KEY_4),
194 	BIND_GLOBAL_CONSTANT(KEY_5),
195 	BIND_GLOBAL_CONSTANT(KEY_6),
196 	BIND_GLOBAL_CONSTANT(KEY_7),
197 	BIND_GLOBAL_CONSTANT(KEY_8),
198 	BIND_GLOBAL_CONSTANT(KEY_9),
199 	BIND_GLOBAL_CONSTANT(KEY_COLON),
200 	BIND_GLOBAL_CONSTANT(KEY_SEMICOLON),
201 	BIND_GLOBAL_CONSTANT(KEY_LESS),
202 	BIND_GLOBAL_CONSTANT(KEY_EQUAL),
203 	BIND_GLOBAL_CONSTANT(KEY_GREATER),
204 	BIND_GLOBAL_CONSTANT(KEY_QUESTION),
205 	BIND_GLOBAL_CONSTANT(KEY_AT),
206 	BIND_GLOBAL_CONSTANT(KEY_A),
207 	BIND_GLOBAL_CONSTANT(KEY_B),
208 	BIND_GLOBAL_CONSTANT(KEY_C),
209 	BIND_GLOBAL_CONSTANT(KEY_D),
210 	BIND_GLOBAL_CONSTANT(KEY_E),
211 	BIND_GLOBAL_CONSTANT(KEY_F),
212 	BIND_GLOBAL_CONSTANT(KEY_G),
213 	BIND_GLOBAL_CONSTANT(KEY_H),
214 	BIND_GLOBAL_CONSTANT(KEY_I),
215 	BIND_GLOBAL_CONSTANT(KEY_J),
216 	BIND_GLOBAL_CONSTANT(KEY_K),
217 	BIND_GLOBAL_CONSTANT(KEY_L),
218 	BIND_GLOBAL_CONSTANT(KEY_M),
219 	BIND_GLOBAL_CONSTANT(KEY_N),
220 	BIND_GLOBAL_CONSTANT(KEY_O),
221 	BIND_GLOBAL_CONSTANT(KEY_P),
222 	BIND_GLOBAL_CONSTANT(KEY_Q),
223 	BIND_GLOBAL_CONSTANT(KEY_R),
224 	BIND_GLOBAL_CONSTANT(KEY_S),
225 	BIND_GLOBAL_CONSTANT(KEY_T),
226 	BIND_GLOBAL_CONSTANT(KEY_U),
227 	BIND_GLOBAL_CONSTANT(KEY_V),
228 	BIND_GLOBAL_CONSTANT(KEY_W),
229 	BIND_GLOBAL_CONSTANT(KEY_X),
230 	BIND_GLOBAL_CONSTANT(KEY_Y),
231 	BIND_GLOBAL_CONSTANT(KEY_Z),
232 	BIND_GLOBAL_CONSTANT(KEY_BRACKETLEFT),
233 	BIND_GLOBAL_CONSTANT(KEY_BACKSLASH),
234 	BIND_GLOBAL_CONSTANT(KEY_BRACKETRIGHT),
235 	BIND_GLOBAL_CONSTANT(KEY_ASCIICIRCUM),
236 	BIND_GLOBAL_CONSTANT(KEY_UNDERSCORE),
237 	BIND_GLOBAL_CONSTANT(KEY_QUOTELEFT),
238 	BIND_GLOBAL_CONSTANT(KEY_BRACELEFT),
239 	BIND_GLOBAL_CONSTANT(KEY_BAR),
240 	BIND_GLOBAL_CONSTANT(KEY_BRACERIGHT),
241 	BIND_GLOBAL_CONSTANT(KEY_ASCIITILDE),
242 	BIND_GLOBAL_CONSTANT(KEY_NOBREAKSPACE),
243 	BIND_GLOBAL_CONSTANT(KEY_EXCLAMDOWN),
244 	BIND_GLOBAL_CONSTANT(KEY_CENT),
245 	BIND_GLOBAL_CONSTANT(KEY_STERLING),
246 	BIND_GLOBAL_CONSTANT(KEY_CURRENCY),
247 	BIND_GLOBAL_CONSTANT(KEY_YEN),
248 	BIND_GLOBAL_CONSTANT(KEY_BROKENBAR),
249 	BIND_GLOBAL_CONSTANT(KEY_SECTION),
250 	BIND_GLOBAL_CONSTANT(KEY_DIAERESIS),
251 	BIND_GLOBAL_CONSTANT(KEY_COPYRIGHT),
252 	BIND_GLOBAL_CONSTANT(KEY_ORDFEMININE),
253 	BIND_GLOBAL_CONSTANT(KEY_GUILLEMOTLEFT),
254 	BIND_GLOBAL_CONSTANT(KEY_NOTSIGN),
255 	BIND_GLOBAL_CONSTANT(KEY_HYPHEN),
256 	BIND_GLOBAL_CONSTANT(KEY_REGISTERED),
257 	BIND_GLOBAL_CONSTANT(KEY_MACRON),
258 	BIND_GLOBAL_CONSTANT(KEY_DEGREE),
259 	BIND_GLOBAL_CONSTANT(KEY_PLUSMINUS),
260 	BIND_GLOBAL_CONSTANT(KEY_TWOSUPERIOR),
261 	BIND_GLOBAL_CONSTANT(KEY_THREESUPERIOR),
262 	BIND_GLOBAL_CONSTANT(KEY_ACUTE),
263 	BIND_GLOBAL_CONSTANT(KEY_MU),
264 	BIND_GLOBAL_CONSTANT(KEY_PARAGRAPH),
265 	BIND_GLOBAL_CONSTANT(KEY_PERIODCENTERED),
266 	BIND_GLOBAL_CONSTANT(KEY_CEDILLA),
267 	BIND_GLOBAL_CONSTANT(KEY_ONESUPERIOR),
268 	BIND_GLOBAL_CONSTANT(KEY_MASCULINE),
269 	BIND_GLOBAL_CONSTANT(KEY_GUILLEMOTRIGHT),
270 	BIND_GLOBAL_CONSTANT(KEY_ONEQUARTER),
271 	BIND_GLOBAL_CONSTANT(KEY_ONEHALF),
272 	BIND_GLOBAL_CONSTANT(KEY_THREEQUARTERS),
273 	BIND_GLOBAL_CONSTANT(KEY_QUESTIONDOWN),
274 	BIND_GLOBAL_CONSTANT(KEY_AGRAVE),
275 	BIND_GLOBAL_CONSTANT(KEY_AACUTE),
276 	BIND_GLOBAL_CONSTANT(KEY_ACIRCUMFLEX),
277 	BIND_GLOBAL_CONSTANT(KEY_ATILDE),
278 	BIND_GLOBAL_CONSTANT(KEY_ADIAERESIS),
279 	BIND_GLOBAL_CONSTANT(KEY_ARING),
280 	BIND_GLOBAL_CONSTANT(KEY_AE),
281 	BIND_GLOBAL_CONSTANT(KEY_CCEDILLA),
282 	BIND_GLOBAL_CONSTANT(KEY_EGRAVE),
283 	BIND_GLOBAL_CONSTANT(KEY_EACUTE),
284 	BIND_GLOBAL_CONSTANT(KEY_ECIRCUMFLEX),
285 	BIND_GLOBAL_CONSTANT(KEY_EDIAERESIS),
286 	BIND_GLOBAL_CONSTANT(KEY_IGRAVE),
287 	BIND_GLOBAL_CONSTANT(KEY_IACUTE),
288 	BIND_GLOBAL_CONSTANT(KEY_ICIRCUMFLEX),
289 	BIND_GLOBAL_CONSTANT(KEY_IDIAERESIS),
290 	BIND_GLOBAL_CONSTANT(KEY_ETH),
291 	BIND_GLOBAL_CONSTANT(KEY_NTILDE),
292 	BIND_GLOBAL_CONSTANT(KEY_OGRAVE),
293 	BIND_GLOBAL_CONSTANT(KEY_OACUTE),
294 	BIND_GLOBAL_CONSTANT(KEY_OCIRCUMFLEX),
295 	BIND_GLOBAL_CONSTANT(KEY_OTILDE),
296 	BIND_GLOBAL_CONSTANT(KEY_ODIAERESIS),
297 	BIND_GLOBAL_CONSTANT(KEY_MULTIPLY),
298 	BIND_GLOBAL_CONSTANT(KEY_OOBLIQUE),
299 	BIND_GLOBAL_CONSTANT(KEY_UGRAVE),
300 	BIND_GLOBAL_CONSTANT(KEY_UACUTE),
301 	BIND_GLOBAL_CONSTANT(KEY_UCIRCUMFLEX),
302 	BIND_GLOBAL_CONSTANT(KEY_UDIAERESIS),
303 	BIND_GLOBAL_CONSTANT(KEY_YACUTE),
304 	BIND_GLOBAL_CONSTANT(KEY_THORN),
305 	BIND_GLOBAL_CONSTANT(KEY_SSHARP),
306 
307 	BIND_GLOBAL_CONSTANT(KEY_DIVISION),
308 	BIND_GLOBAL_CONSTANT(KEY_YDIAERESIS),
309 
310 	BIND_GLOBAL_CONSTANT(KEY_CODE_MASK),
311 	BIND_GLOBAL_CONSTANT(KEY_MODIFIER_MASK),
312 
313 	BIND_GLOBAL_CONSTANT(KEY_MASK_SHIFT),
314 	BIND_GLOBAL_CONSTANT(KEY_MASK_ALT),
315 	BIND_GLOBAL_CONSTANT(KEY_MASK_META),
316 	BIND_GLOBAL_CONSTANT(KEY_MASK_CTRL),
317 	BIND_GLOBAL_CONSTANT(KEY_MASK_CMD),
318 	BIND_GLOBAL_CONSTANT(KEY_MASK_KPAD),
319 	BIND_GLOBAL_CONSTANT(KEY_MASK_GROUP_SWITCH),
320 
321 	// mouse
322 	BIND_GLOBAL_CONSTANT(BUTTON_LEFT),
323 	BIND_GLOBAL_CONSTANT(BUTTON_RIGHT),
324 	BIND_GLOBAL_CONSTANT(BUTTON_MIDDLE),
325 	BIND_GLOBAL_CONSTANT(BUTTON_WHEEL_UP),
326 	BIND_GLOBAL_CONSTANT(BUTTON_WHEEL_DOWN),
327 	BIND_GLOBAL_CONSTANT(BUTTON_WHEEL_LEFT),
328 	BIND_GLOBAL_CONSTANT(BUTTON_WHEEL_RIGHT),
329 	BIND_GLOBAL_CONSTANT(BUTTON_MASK_LEFT),
330 	BIND_GLOBAL_CONSTANT(BUTTON_MASK_RIGHT),
331 	BIND_GLOBAL_CONSTANT(BUTTON_MASK_MIDDLE),
332 
333 	//joysticks
334 	BIND_GLOBAL_CONSTANT(JOY_BUTTON_0),
335 	BIND_GLOBAL_CONSTANT(JOY_BUTTON_1),
336 	BIND_GLOBAL_CONSTANT(JOY_BUTTON_2),
337 	BIND_GLOBAL_CONSTANT(JOY_BUTTON_3),
338 	BIND_GLOBAL_CONSTANT(JOY_BUTTON_4),
339 	BIND_GLOBAL_CONSTANT(JOY_BUTTON_5),
340 	BIND_GLOBAL_CONSTANT(JOY_BUTTON_6),
341 	BIND_GLOBAL_CONSTANT(JOY_BUTTON_7),
342 	BIND_GLOBAL_CONSTANT(JOY_BUTTON_8),
343 	BIND_GLOBAL_CONSTANT(JOY_BUTTON_9),
344 	BIND_GLOBAL_CONSTANT(JOY_BUTTON_10),
345 	BIND_GLOBAL_CONSTANT(JOY_BUTTON_11),
346 	BIND_GLOBAL_CONSTANT(JOY_BUTTON_12),
347 	BIND_GLOBAL_CONSTANT(JOY_BUTTON_13),
348 	BIND_GLOBAL_CONSTANT(JOY_BUTTON_14),
349 	BIND_GLOBAL_CONSTANT(JOY_BUTTON_15),
350 	BIND_GLOBAL_CONSTANT(JOY_BUTTON_MAX),
351 
352 	BIND_GLOBAL_CONSTANT(JOY_SNES_A),
353 	BIND_GLOBAL_CONSTANT(JOY_SNES_B),
354 	BIND_GLOBAL_CONSTANT(JOY_SNES_X),
355 	BIND_GLOBAL_CONSTANT(JOY_SNES_Y),
356 
357 	BIND_GLOBAL_CONSTANT(JOY_SONY_CIRCLE),
358 	BIND_GLOBAL_CONSTANT(JOY_SONY_X),
359 	BIND_GLOBAL_CONSTANT(JOY_SONY_SQUARE),
360 	BIND_GLOBAL_CONSTANT(JOY_SONY_TRIANGLE),
361 
362 	BIND_GLOBAL_CONSTANT(JOY_SEGA_B),
363 	BIND_GLOBAL_CONSTANT(JOY_SEGA_A),
364 	BIND_GLOBAL_CONSTANT(JOY_SEGA_X),
365 	BIND_GLOBAL_CONSTANT(JOY_SEGA_Y),
366 
367 	BIND_GLOBAL_CONSTANT(JOY_XBOX_B),
368 	BIND_GLOBAL_CONSTANT(JOY_XBOX_A),
369 	BIND_GLOBAL_CONSTANT(JOY_XBOX_X),
370 	BIND_GLOBAL_CONSTANT(JOY_XBOX_Y),
371 
372 	BIND_GLOBAL_CONSTANT(JOY_DS_A),
373 	BIND_GLOBAL_CONSTANT(JOY_DS_B),
374 	BIND_GLOBAL_CONSTANT(JOY_DS_X),
375 	BIND_GLOBAL_CONSTANT(JOY_DS_Y),
376 
377 	BIND_GLOBAL_CONSTANT(JOY_SELECT),
378 	BIND_GLOBAL_CONSTANT(JOY_START),
379 	BIND_GLOBAL_CONSTANT(JOY_DPAD_UP),
380 	BIND_GLOBAL_CONSTANT(JOY_DPAD_DOWN),
381 	BIND_GLOBAL_CONSTANT(JOY_DPAD_LEFT),
382 	BIND_GLOBAL_CONSTANT(JOY_DPAD_RIGHT),
383 	BIND_GLOBAL_CONSTANT(JOY_L),
384 	BIND_GLOBAL_CONSTANT(JOY_L2),
385 	BIND_GLOBAL_CONSTANT(JOY_L3),
386 	BIND_GLOBAL_CONSTANT(JOY_R),
387 	BIND_GLOBAL_CONSTANT(JOY_R2),
388 	BIND_GLOBAL_CONSTANT(JOY_R3),
389 
390 	BIND_GLOBAL_CONSTANT(JOY_AXIS_0),
391 	BIND_GLOBAL_CONSTANT(JOY_AXIS_1),
392 	BIND_GLOBAL_CONSTANT(JOY_AXIS_2),
393 	BIND_GLOBAL_CONSTANT(JOY_AXIS_3),
394 	BIND_GLOBAL_CONSTANT(JOY_AXIS_4),
395 	BIND_GLOBAL_CONSTANT(JOY_AXIS_5),
396 	BIND_GLOBAL_CONSTANT(JOY_AXIS_6),
397 	BIND_GLOBAL_CONSTANT(JOY_AXIS_7),
398 	BIND_GLOBAL_CONSTANT(JOY_AXIS_MAX),
399 
400 	BIND_GLOBAL_CONSTANT(JOY_ANALOG_0_X),
401 	BIND_GLOBAL_CONSTANT(JOY_ANALOG_0_Y),
402 
403 	BIND_GLOBAL_CONSTANT(JOY_ANALOG_1_X),
404 	BIND_GLOBAL_CONSTANT(JOY_ANALOG_1_Y),
405 
406 	BIND_GLOBAL_CONSTANT(JOY_ANALOG_2_X),
407 	BIND_GLOBAL_CONSTANT(JOY_ANALOG_2_Y),
408 
409 	BIND_GLOBAL_CONSTANT(JOY_ANALOG_L2),
410 	BIND_GLOBAL_CONSTANT(JOY_ANALOG_R2),
411 
412 	// error list
413 
414 	BIND_GLOBAL_CONSTANT(OK),
415 	BIND_GLOBAL_CONSTANT(FAILED), ///< Generic fail error
416 	BIND_GLOBAL_CONSTANT(ERR_UNAVAILABLE), ///< What is requested is unsupported/unavailable
417 	BIND_GLOBAL_CONSTANT(ERR_UNCONFIGURED), ///< The object being used hasnt been properly set up yet
418 	BIND_GLOBAL_CONSTANT(ERR_UNAUTHORIZED), ///< Missing credentials for requested resource
419 	BIND_GLOBAL_CONSTANT(ERR_PARAMETER_RANGE_ERROR), ///< Parameter given out of range
420 	BIND_GLOBAL_CONSTANT(ERR_OUT_OF_MEMORY), ///< Out of memory
421 	BIND_GLOBAL_CONSTANT(ERR_FILE_NOT_FOUND),
422 	BIND_GLOBAL_CONSTANT(ERR_FILE_BAD_DRIVE),
423 	BIND_GLOBAL_CONSTANT(ERR_FILE_BAD_PATH),
424 	BIND_GLOBAL_CONSTANT(ERR_FILE_NO_PERMISSION),
425 	BIND_GLOBAL_CONSTANT(ERR_FILE_ALREADY_IN_USE),
426 	BIND_GLOBAL_CONSTANT(ERR_FILE_CANT_OPEN),
427 	BIND_GLOBAL_CONSTANT(ERR_FILE_CANT_WRITE),
428 	BIND_GLOBAL_CONSTANT(ERR_FILE_CANT_READ),
429 	BIND_GLOBAL_CONSTANT(ERR_FILE_UNRECOGNIZED),
430 	BIND_GLOBAL_CONSTANT(ERR_FILE_CORRUPT),
431 	BIND_GLOBAL_CONSTANT(ERR_FILE_MISSING_DEPENDENCIES),
432 	BIND_GLOBAL_CONSTANT(ERR_FILE_EOF),
433 	BIND_GLOBAL_CONSTANT(ERR_CANT_OPEN), ///< Can't open a resource/socket/file
434 	BIND_GLOBAL_CONSTANT(ERR_CANT_CREATE),
435 	BIND_GLOBAL_CONSTANT(ERR_PARSE_ERROR),
436 	BIND_GLOBAL_CONSTANT(ERROR_QUERY_FAILED),
437 	BIND_GLOBAL_CONSTANT(ERR_ALREADY_IN_USE),
438 	BIND_GLOBAL_CONSTANT(ERR_LOCKED), ///< resource is locked
439 	BIND_GLOBAL_CONSTANT(ERR_TIMEOUT),
440 	BIND_GLOBAL_CONSTANT(ERR_CANT_AQUIRE_RESOURCE),
441 	BIND_GLOBAL_CONSTANT(ERR_INVALID_DATA), ///< Data passed is invalid
442 	BIND_GLOBAL_CONSTANT(ERR_INVALID_PARAMETER), ///< Parameter passed is invalid
443 	BIND_GLOBAL_CONSTANT(ERR_ALREADY_EXISTS), ///< When adding ), item already exists
444 	BIND_GLOBAL_CONSTANT(ERR_DOES_NOT_EXIST), ///< When retrieving/erasing ), it item does not exist
445 	BIND_GLOBAL_CONSTANT(ERR_DATABASE_CANT_READ), ///< database is full
446 	BIND_GLOBAL_CONSTANT(ERR_DATABASE_CANT_WRITE), ///< database is full
447 	BIND_GLOBAL_CONSTANT(ERR_COMPILATION_FAILED),
448 	BIND_GLOBAL_CONSTANT(ERR_METHOD_NOT_FOUND),
449 	BIND_GLOBAL_CONSTANT(ERR_LINK_FAILED),
450 	BIND_GLOBAL_CONSTANT(ERR_SCRIPT_FAILED),
451 	BIND_GLOBAL_CONSTANT(ERR_CYCLIC_LINK),
452 	BIND_GLOBAL_CONSTANT(ERR_BUSY),
453 	BIND_GLOBAL_CONSTANT(ERR_HELP), ///< user requested help!!
454 	BIND_GLOBAL_CONSTANT(ERR_BUG), ///< a bug in the software certainly happened ), due to a double check failing or unexpected behavior.
455 	BIND_GLOBAL_CONSTANT(ERR_WTF),
456 
457 	BIND_GLOBAL_CONSTANT(PROPERTY_HINT_NONE),
458 	BIND_GLOBAL_CONSTANT(PROPERTY_HINT_RANGE),
459 	BIND_GLOBAL_CONSTANT(PROPERTY_HINT_EXP_RANGE),
460 	BIND_GLOBAL_CONSTANT(PROPERTY_HINT_ENUM),
461 	BIND_GLOBAL_CONSTANT(PROPERTY_HINT_EXP_EASING),
462 	BIND_GLOBAL_CONSTANT(PROPERTY_HINT_LENGTH),
463 	BIND_GLOBAL_CONSTANT(PROPERTY_HINT_KEY_ACCEL),
464 	BIND_GLOBAL_CONSTANT(PROPERTY_HINT_FLAGS),
465 	BIND_GLOBAL_CONSTANT(PROPERTY_HINT_ALL_FLAGS),
466 	BIND_GLOBAL_CONSTANT(PROPERTY_HINT_FILE),
467 	BIND_GLOBAL_CONSTANT(PROPERTY_HINT_DIR),
468 	BIND_GLOBAL_CONSTANT(PROPERTY_HINT_GLOBAL_FILE),
469 	BIND_GLOBAL_CONSTANT(PROPERTY_HINT_GLOBAL_DIR),
470 	BIND_GLOBAL_CONSTANT(PROPERTY_HINT_RESOURCE_TYPE),
471 	BIND_GLOBAL_CONSTANT(PROPERTY_HINT_MULTILINE_TEXT),
472 	BIND_GLOBAL_CONSTANT(PROPERTY_HINT_COLOR_NO_ALPHA),
473 	BIND_GLOBAL_CONSTANT(PROPERTY_HINT_IMAGE_COMPRESS_LOSSY),
474 	BIND_GLOBAL_CONSTANT(PROPERTY_HINT_IMAGE_COMPRESS_LOSSLESS),
475 
476 	BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_STORAGE),
477 	BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_EDITOR),
478 	BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_NETWORK),
479 
480 	BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_EDITOR_HELPER),
481 	BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_CHECKABLE),
482 	BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_CHECKED),
483 	BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_INTERNATIONALIZED),
484 	BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_BUNDLE),
485 	BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_CATEGORY),
486 	BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_STORE_IF_NONZERO),
487 	BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_STORE_IF_NONONE),
488 	BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_NO_INSTANCE_STATE),
489 	BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_RESTART_IF_CHANGED),
490 	BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_SCRIPT_VARIABLE),
491 
492 	BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_DEFAULT),
493 	BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_DEFAULT_INTL),
494 	BIND_GLOBAL_CONSTANT(PROPERTY_USAGE_NOEDITOR),
495 
496 	BIND_GLOBAL_CONSTANT(METHOD_FLAG_NORMAL),
497 	BIND_GLOBAL_CONSTANT(METHOD_FLAG_EDITOR),
498 	BIND_GLOBAL_CONSTANT(METHOD_FLAG_NOSCRIPT),
499 	BIND_GLOBAL_CONSTANT(METHOD_FLAG_CONST),
500 	BIND_GLOBAL_CONSTANT(METHOD_FLAG_REVERSE),
501 	BIND_GLOBAL_CONSTANT(METHOD_FLAG_VIRTUAL),
502 	BIND_GLOBAL_CONSTANT(METHOD_FLAG_FROM_SCRIPT),
503 	BIND_GLOBAL_CONSTANT(METHOD_FLAGS_DEFAULT),
504 
505 	{ "TYPE_NIL", Variant::NIL },
506 	{ "TYPE_BOOL", Variant::BOOL },
507 	{ "TYPE_INT", Variant::INT },
508 	{ "TYPE_REAL", Variant::REAL },
509 	{ "TYPE_STRING", Variant::STRING },
510 	{ "TYPE_VECTOR2", Variant::VECTOR2 }, // 5
511 	{ "TYPE_RECT2", Variant::RECT2 },
512 	{ "TYPE_VECTOR3", Variant::VECTOR3 },
513 	{ "TYPE_MATRIX32", Variant::MATRIX32 },
514 	{ "TYPE_PLANE", Variant::PLANE },
515 	{ "TYPE_QUAT", Variant::QUAT }, // 10
516 	{ "TYPE_AABB", Variant::_AABB }, //sorry naming convention fail :( not like it's used often
517 	{ "TYPE_MATRIX3", Variant::MATRIX3 },
518 	{ "TYPE_TRANSFORM", Variant::TRANSFORM },
519 	{ "TYPE_COLOR", Variant::COLOR },
520 	{ "TYPE_IMAGE", Variant::IMAGE }, // 15
521 	{ "TYPE_NODE_PATH", Variant::NODE_PATH },
522 	{ "TYPE_RID", Variant::_RID },
523 	{ "TYPE_OBJECT", Variant::OBJECT },
524 	{ "TYPE_INPUT_EVENT", Variant::INPUT_EVENT },
525 	{ "TYPE_DICTIONARY", Variant::DICTIONARY }, // 20
526 	{ "TYPE_ARRAY", Variant::ARRAY },
527 	{ "TYPE_RAW_ARRAY", Variant::RAW_ARRAY },
528 	{ "TYPE_INT_ARRAY", Variant::INT_ARRAY },
529 	{ "TYPE_REAL_ARRAY", Variant::REAL_ARRAY },
530 	{ "TYPE_STRING_ARRAY", Variant::STRING_ARRAY }, // 25
531 	{ "TYPE_VECTOR2_ARRAY", Variant::VECTOR2_ARRAY },
532 	{ "TYPE_VECTOR3_ARRAY", Variant::VECTOR3_ARRAY },
533 	{ "TYPE_COLOR_ARRAY", Variant::COLOR_ARRAY },
534 	{ "TYPE_MAX", Variant::VARIANT_MAX },
535 	{ NULL, 0 }
536 
537 };
538 
get_global_constant_count()539 int GlobalConstants::get_global_constant_count() {
540 
541 	int i = 0;
542 	while (_global_constants[i].name)
543 		i++;
544 	return i;
545 }
546 
get_global_constant_name(int p_idx)547 const char *GlobalConstants::get_global_constant_name(int p_idx) {
548 
549 	return _global_constants[p_idx].name;
550 }
551 
get_global_constant_value(int p_idx)552 int GlobalConstants::get_global_constant_value(int p_idx) {
553 
554 	return _global_constants[p_idx].value;
555 }
556