]> git.jsancho.org Git - guile-irrlicht.git/blob - src/keycodes.cpp
372ac5a61390b2bc830c280ff13c7af7b294f961
[guile-irrlicht.git] / src / keycodes.cpp
1 /* guile-irrlicht --- GNU Guile bindings for Irrlicht Engine
2
3    Copyright (C) 2020 Javier Sancho <jsf@jsancho.org>
4
5    This file is part of guile-irrlicht.
6
7    guile-irrlicht is free software; you can redistribute it and/or modify
8    it under the terms of the GNU Lesser General Public License as
9    published by the Free Software Foundation; either version 3 of the
10    License, or (at your option) any later version.
11
12    guile-irrlicht is distributed in the hope that it will be useful, but
13    WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15    General Public License for more details.
16
17    You should have received a copy of the GNU Lesser General Public
18    License along with guile-irrlicht. If not, see
19    <http://www.gnu.org/licenses/>.
20 */
21
22 #include <irrlicht/irrlicht.h>
23 #include <libguile.h>
24
25
26 using namespace irr;
27
28
29 SCM
30 scm_from_key_code (EKEY_CODE key_code)
31 {
32   switch (key_code)
33     {
34     case KEY_LBUTTON:
35       return scm_from_utf8_symbol ("lbutton");
36       break;
37
38     case KEY_RBUTTON:
39       return scm_from_utf8_symbol ("rbutton");
40       break;
41
42     case KEY_CANCEL:
43       return scm_from_utf8_symbol ("cancel");
44       break;
45
46     case KEY_MBUTTON:
47       return scm_from_utf8_symbol ("mbutton");
48       break;
49
50     case KEY_XBUTTON1:
51       return scm_from_utf8_symbol ("xbutton1");
52       break;
53
54     case KEY_XBUTTON2:
55       return scm_from_utf8_symbol ("xbutton2");
56       break;
57
58     case KEY_BACK:
59       return scm_from_utf8_symbol ("back");
60       break;
61
62     case KEY_TAB:
63       return scm_from_utf8_symbol ("tab");
64       break;
65
66     case KEY_CLEAR:
67       return scm_from_utf8_symbol ("clear");
68       break;
69
70     case KEY_RETURN:
71       return scm_from_utf8_symbol ("return");
72       break;
73
74     case KEY_SHIFT:
75       return scm_from_utf8_symbol ("shift");
76       break;
77
78     case KEY_CONTROL:
79       return scm_from_utf8_symbol ("control");
80       break;
81
82     case KEY_MENU:
83       return scm_from_utf8_symbol ("menu");
84       break;
85
86     case KEY_PAUSE:
87       return scm_from_utf8_symbol ("pause");
88       break;
89
90     case KEY_CAPITAL:
91       return scm_from_utf8_symbol ("capital");
92       break;
93
94     case KEY_KANA:
95       return scm_from_utf8_symbol ("kana");
96       break;
97
98     case KEY_JUNJA:
99       return scm_from_utf8_symbol ("junja");
100       break;
101
102     case KEY_FINAL:
103       return scm_from_utf8_symbol ("final");
104       break;
105
106     case KEY_HANJA:
107       return scm_from_utf8_symbol ("hanja");
108       break;
109
110     case KEY_ESCAPE:
111       return scm_from_utf8_symbol ("escape");
112       break;
113
114     case KEY_CONVERT:
115       return scm_from_utf8_symbol ("convert");
116       break;
117
118     case KEY_NONCONVERT:
119       return scm_from_utf8_symbol ("nonconvert");
120       break;
121
122     case KEY_ACCEPT:
123       return scm_from_utf8_symbol ("accept");
124       break;
125
126     case KEY_MODECHANGE:
127       return scm_from_utf8_symbol ("modechange");
128       break;
129
130     case KEY_SPACE:
131       return scm_from_utf8_symbol ("space");
132       break;
133
134     case KEY_PRIOR:
135       return scm_from_utf8_symbol ("prior");
136       break;
137
138     case KEY_NEXT:
139       return scm_from_utf8_symbol ("next");
140       break;
141
142     case KEY_END:
143       return scm_from_utf8_symbol ("end");
144       break;
145
146     case KEY_HOME:
147       return scm_from_utf8_symbol ("home");
148       break;
149
150     case KEY_LEFT:
151       return scm_from_utf8_symbol ("left");
152       break;
153
154     case KEY_UP:
155       return scm_from_utf8_symbol ("up");
156       break;
157
158     case KEY_RIGHT:
159       return scm_from_utf8_symbol ("right");
160       break;
161
162     case KEY_DOWN:
163       return scm_from_utf8_symbol ("down");
164       break;
165
166     case KEY_SELECT:
167       return scm_from_utf8_symbol ("select");
168       break;
169
170     case KEY_PRINT:
171       return scm_from_utf8_symbol ("print");
172       break;
173
174     case KEY_EXECUT:
175       return scm_from_utf8_symbol ("execut");
176       break;
177
178     case KEY_SNAPSHOT:
179       return scm_from_utf8_symbol ("snapshot");
180       break;
181
182     case KEY_INSERT:
183       return scm_from_utf8_symbol ("insert");
184       break;
185
186     case KEY_DELETE:
187       return scm_from_utf8_symbol ("delete");
188       break;
189
190     case KEY_HELP:
191       return scm_from_utf8_symbol ("help");
192       break;
193
194     case KEY_KEY_0:
195       return scm_from_utf8_symbol ("key-0");
196       break;
197
198     case KEY_KEY_1:
199       return scm_from_utf8_symbol ("key-1");
200       break;
201
202     case KEY_KEY_2:
203       return scm_from_utf8_symbol ("key-2");
204       break;
205
206     case KEY_KEY_3:
207       return scm_from_utf8_symbol ("key-3");
208       break;
209
210     case KEY_KEY_4:
211       return scm_from_utf8_symbol ("key-4");
212       break;
213
214     case KEY_KEY_5:
215       return scm_from_utf8_symbol ("key-5");
216       break;
217
218     case KEY_KEY_6:
219       return scm_from_utf8_symbol ("key-6");
220       break;
221
222     case KEY_KEY_7:
223       return scm_from_utf8_symbol ("key-7");
224       break;
225
226     case KEY_KEY_8:
227       return scm_from_utf8_symbol ("key-8");
228       break;
229
230     case KEY_KEY_9:
231       return scm_from_utf8_symbol ("key-9");
232       break;
233
234     case KEY_KEY_A:
235       return scm_from_utf8_symbol ("key-a");
236       break;
237
238     case KEY_KEY_B:
239       return scm_from_utf8_symbol ("key-b");
240       break;
241
242     case KEY_KEY_C:
243       return scm_from_utf8_symbol ("key-c");
244       break;
245
246     case KEY_KEY_D:
247       return scm_from_utf8_symbol ("key-d");
248       break;
249
250     case KEY_KEY_E:
251       return scm_from_utf8_symbol ("key-e");
252       break;
253
254     case KEY_KEY_F:
255       return scm_from_utf8_symbol ("key-f");
256       break;
257
258     case KEY_KEY_G:
259       return scm_from_utf8_symbol ("key-g");
260       break;
261
262     case KEY_KEY_H:
263       return scm_from_utf8_symbol ("key-h");
264       break;
265
266     case KEY_KEY_I:
267       return scm_from_utf8_symbol ("key-i");
268       break;
269
270     case KEY_KEY_J:
271       return scm_from_utf8_symbol ("key-j");
272       break;
273
274     case KEY_KEY_K:
275       return scm_from_utf8_symbol ("key-k");
276       break;
277
278     case KEY_KEY_L:
279       return scm_from_utf8_symbol ("key-l");
280       break;
281
282     case KEY_KEY_M:
283       return scm_from_utf8_symbol ("key-m");
284       break;
285
286     case KEY_KEY_N:
287       return scm_from_utf8_symbol ("key-n");
288       break;
289
290     case KEY_KEY_O:
291       return scm_from_utf8_symbol ("key-o");
292       break;
293
294     case KEY_KEY_P:
295       return scm_from_utf8_symbol ("key-p");
296       break;
297
298     case KEY_KEY_Q:
299       return scm_from_utf8_symbol ("key-q");
300       break;
301
302     case KEY_KEY_R:
303       return scm_from_utf8_symbol ("key-r");
304       break;
305
306     case KEY_KEY_S:
307       return scm_from_utf8_symbol ("key-s");
308       break;
309
310     case KEY_KEY_T:
311       return scm_from_utf8_symbol ("key-t");
312       break;
313
314     case KEY_KEY_U:
315       return scm_from_utf8_symbol ("key-u");
316       break;
317
318     case KEY_KEY_V:
319       return scm_from_utf8_symbol ("key-v");
320       break;
321
322     case KEY_KEY_W:
323       return scm_from_utf8_symbol ("key-w");
324       break;
325
326     case KEY_KEY_X:
327       return scm_from_utf8_symbol ("key-x");
328       break;
329
330     case KEY_KEY_Y:
331       return scm_from_utf8_symbol ("key-y");
332       break;
333
334     case KEY_KEY_Z:
335       return scm_from_utf8_symbol ("key-z");
336       break;
337
338     case KEY_LWIN:
339       return scm_from_utf8_symbol ("lwin");
340       break;
341
342     case KEY_RWIN:
343       return scm_from_utf8_symbol ("rwin");
344       break;
345
346     case KEY_APPS:
347       return scm_from_utf8_symbol ("apps");
348       break;
349
350     case KEY_SLEEP:
351       return scm_from_utf8_symbol ("sleep");
352       break;
353
354     case KEY_NUMPAD0:
355       return scm_from_utf8_symbol ("numpad0");
356       break;
357
358     case KEY_NUMPAD1:
359       return scm_from_utf8_symbol ("numpad1");
360       break;
361
362     case KEY_NUMPAD2:
363       return scm_from_utf8_symbol ("numpad2");
364       break;
365
366     case KEY_NUMPAD3:
367       return scm_from_utf8_symbol ("numpad3");
368       break;
369
370     case KEY_NUMPAD4:
371       return scm_from_utf8_symbol ("numpad4");
372       break;
373
374     case KEY_NUMPAD5:
375       return scm_from_utf8_symbol ("numpad5");
376       break;
377
378     case KEY_NUMPAD6:
379       return scm_from_utf8_symbol ("numpad6");
380       break;
381
382     case KEY_NUMPAD7:
383       return scm_from_utf8_symbol ("numpad7");
384       break;
385
386     case KEY_NUMPAD8:
387       return scm_from_utf8_symbol ("numpad8");
388       break;
389
390     case KEY_NUMPAD9:
391       return scm_from_utf8_symbol ("numpad9");
392       break;
393
394     case KEY_MULTIPLY:
395       return scm_from_utf8_symbol ("multiply");
396       break;
397
398     case KEY_ADD:
399       return scm_from_utf8_symbol ("add");
400       break;
401
402     case KEY_SEPARATOR:
403       return scm_from_utf8_symbol ("separator");
404       break;
405
406     case KEY_SUBTRACT:
407       return scm_from_utf8_symbol ("subtract");
408       break;
409
410     case KEY_DECIMAL:
411       return scm_from_utf8_symbol ("decimal");
412       break;
413
414     case KEY_DIVIDE:
415       return scm_from_utf8_symbol ("divide");
416       break;
417
418     case KEY_F1:
419       return scm_from_utf8_symbol ("f1");
420       break;
421
422     case KEY_F2:
423       return scm_from_utf8_symbol ("f2");
424       break;
425
426     case KEY_F3:
427       return scm_from_utf8_symbol ("f3");
428       break;
429
430     case KEY_F4:
431       return scm_from_utf8_symbol ("f4");
432       break;
433
434     case KEY_F5:
435       return scm_from_utf8_symbol ("f5");
436       break;
437
438     case KEY_F6:
439       return scm_from_utf8_symbol ("f6");
440       break;
441
442     case KEY_F7:
443       return scm_from_utf8_symbol ("f7");
444       break;
445
446     case KEY_F8:
447       return scm_from_utf8_symbol ("f8");
448       break;
449
450     case KEY_F9:
451       return scm_from_utf8_symbol ("f9");
452       break;
453
454     case KEY_F10:
455       return scm_from_utf8_symbol ("f10");
456       break;
457
458     case KEY_F11:
459       return scm_from_utf8_symbol ("f11");
460       break;
461
462     case KEY_F12:
463       return scm_from_utf8_symbol ("f12");
464       break;
465
466     case KEY_F13:
467       return scm_from_utf8_symbol ("f13");
468       break;
469
470     case KEY_F14:
471       return scm_from_utf8_symbol ("f14");
472       break;
473
474     case KEY_F15:
475       return scm_from_utf8_symbol ("f15");
476       break;
477
478     case KEY_F16:
479       return scm_from_utf8_symbol ("f16");
480       break;
481
482     case KEY_F17:
483       return scm_from_utf8_symbol ("f17");
484       break;
485
486     case KEY_F18:
487       return scm_from_utf8_symbol ("f18");
488       break;
489
490     case KEY_F19:
491       return scm_from_utf8_symbol ("f19");
492       break;
493
494     case KEY_F20:
495       return scm_from_utf8_symbol ("f20");
496       break;
497
498     case KEY_F21:
499       return scm_from_utf8_symbol ("f21");
500       break;
501
502     case KEY_F22:
503       return scm_from_utf8_symbol ("f22");
504       break;
505
506     case KEY_F23:
507       return scm_from_utf8_symbol ("f23");
508       break;
509
510     case KEY_F24:
511       return scm_from_utf8_symbol ("f24");
512       break;
513
514     case KEY_NUMLOCK:
515       return scm_from_utf8_symbol ("numlock");
516       break;
517
518     case KEY_SCROLL:
519       return scm_from_utf8_symbol ("scroll");
520       break;
521
522     case KEY_LSHIFT:
523       return scm_from_utf8_symbol ("lshift");
524       break;
525
526     case KEY_RSHIFT:
527       return scm_from_utf8_symbol ("rshift");
528       break;
529
530     case KEY_LCONTROL:
531       return scm_from_utf8_symbol ("lcontrol");
532       break;
533
534     case KEY_RCONTROL:
535       return scm_from_utf8_symbol ("rcontrol");
536       break;
537
538     case KEY_LMENU:
539       return scm_from_utf8_symbol ("lmenu");
540       break;
541
542     case KEY_RMENU:
543       return scm_from_utf8_symbol ("rmenu");
544       break;
545
546     case KEY_OEM_1:
547       return scm_from_utf8_symbol ("oem-1");
548       break;
549
550     case KEY_PLUS:
551       return scm_from_utf8_symbol ("plus");
552       break;
553
554     case KEY_COMMA:
555       return scm_from_utf8_symbol ("comma");
556       break;
557
558     case KEY_MINUS:
559       return scm_from_utf8_symbol ("minus");
560       break;
561
562     case KEY_PERIOD:
563       return scm_from_utf8_symbol ("period");
564       break;
565
566     case KEY_OEM_2:
567       return scm_from_utf8_symbol ("oem-2");
568       break;
569
570     case KEY_OEM_3:
571       return scm_from_utf8_symbol ("oem-3");
572       break;
573
574     case KEY_OEM_4:
575       return scm_from_utf8_symbol ("oem-4");
576       break;
577
578     case KEY_OEM_5:
579       return scm_from_utf8_symbol ("oem-5");
580       break;
581
582     case KEY_OEM_6:
583       return scm_from_utf8_symbol ("oem-6");
584       break;
585
586     case KEY_OEM_7:
587       return scm_from_utf8_symbol ("oem-7");
588       break;
589
590     case KEY_OEM_8:
591       return scm_from_utf8_symbol ("oem-8");
592       break;
593
594     case KEY_OEM_AX:
595       return scm_from_utf8_symbol ("oem-ax");
596       break;
597
598     case KEY_OEM_102:
599       return scm_from_utf8_symbol ("oem-102");
600       break;
601
602     case KEY_ATTN:
603       return scm_from_utf8_symbol ("attn");
604       break;
605
606     case KEY_CRSEL:
607       return scm_from_utf8_symbol ("crsel");
608       break;
609
610     case KEY_EXSEL:
611       return scm_from_utf8_symbol ("exsel");
612       break;
613
614     case KEY_EREOF:
615       return scm_from_utf8_symbol ("ereof");
616       break;
617
618     case KEY_PLAY:
619       return scm_from_utf8_symbol ("play");
620       break;
621
622     case KEY_ZOOM:
623       return scm_from_utf8_symbol ("zoom");
624       break;
625
626     case KEY_PA1:
627       return scm_from_utf8_symbol ("pa1");
628       break;
629
630     case KEY_OEM_CLEAR:
631       return scm_from_utf8_symbol ("oem-clear");
632       break;
633
634     default:
635       SCM code = scm_from_uint (key_code);
636       scm_error (scm_arg_type_key, NULL, "Wrong key code: ~S",
637                  scm_list_1 (code), scm_list_1 (code));
638     }
639 }