--- /dev/null
+/* guile-irrlicht --- GNU Guile bindings for Irrlicht Engine
+
+ Copyright (C) 2020 Javier Sancho <jsf@jsancho.org>
+
+ This file is part of guile-irrlicht.
+
+ guile-irrlicht is free software; you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 3 of the
+ License, or (at your option) any later version.
+
+ guile-irrlicht is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with guile-irrlicht. If not, see
+ <http://www.gnu.org/licenses/>.
+*/
+
+#include <irrlicht/irrlicht.h>
+#include <libguile.h>
+
+extern "C" {
+
+ SCM
+ scm_from_key_code (irr::EKEY_CODE key_code)
+ {
+ switch (key_code)
+ {
+ case irr::KEY_LBUTTON:
+ return scm_from_utf8_symbol ("lbutton");
+ break;
+
+ case irr::KEY_RBUTTON:
+ return scm_from_utf8_symbol ("rbutton");
+ break;
+
+ case irr::KEY_CANCEL:
+ return scm_from_utf8_symbol ("cancel");
+ break;
+
+ case irr::KEY_MBUTTON:
+ return scm_from_utf8_symbol ("mbutton");
+ break;
+
+ case irr::KEY_XBUTTON1:
+ return scm_from_utf8_symbol ("xbutton1");
+ break;
+
+ case irr::KEY_XBUTTON2:
+ return scm_from_utf8_symbol ("xbutton2");
+ break;
+
+ case irr::KEY_BACK:
+ return scm_from_utf8_symbol ("back");
+ break;
+
+ case irr::KEY_TAB:
+ return scm_from_utf8_symbol ("tab");
+ break;
+
+ case irr::KEY_CLEAR:
+ return scm_from_utf8_symbol ("clear");
+ break;
+
+ case irr::KEY_RETURN:
+ return scm_from_utf8_symbol ("return");
+ break;
+
+ case irr::KEY_SHIFT:
+ return scm_from_utf8_symbol ("shift");
+ break;
+
+ case irr::KEY_CONTROL:
+ return scm_from_utf8_symbol ("control");
+ break;
+
+ case irr::KEY_MENU:
+ return scm_from_utf8_symbol ("menu");
+ break;
+
+ case irr::KEY_PAUSE:
+ return scm_from_utf8_symbol ("pause");
+ break;
+
+ case irr::KEY_CAPITAL:
+ return scm_from_utf8_symbol ("capital");
+ break;
+
+ case irr::KEY_KANA:
+ return scm_from_utf8_symbol ("kana");
+ break;
+
+ case irr::KEY_JUNJA:
+ return scm_from_utf8_symbol ("junja");
+ break;
+
+ case irr::KEY_FINAL:
+ return scm_from_utf8_symbol ("final");
+ break;
+
+ case irr::KEY_HANJA:
+ return scm_from_utf8_symbol ("hanja");
+ break;
+
+ case irr::KEY_ESCAPE:
+ return scm_from_utf8_symbol ("escape");
+ break;
+
+ case irr::KEY_CONVERT:
+ return scm_from_utf8_symbol ("convert");
+ break;
+
+ case irr::KEY_NONCONVERT:
+ return scm_from_utf8_symbol ("nonconvert");
+ break;
+
+ case irr::KEY_ACCEPT:
+ return scm_from_utf8_symbol ("accept");
+ break;
+
+ case irr::KEY_MODECHANGE:
+ return scm_from_utf8_symbol ("modechange");
+ break;
+
+ case irr::KEY_SPACE:
+ return scm_from_utf8_symbol ("space");
+ break;
+
+ case irr::KEY_PRIOR:
+ return scm_from_utf8_symbol ("prior");
+ break;
+
+ case irr::KEY_NEXT:
+ return scm_from_utf8_symbol ("next");
+ break;
+
+ case irr::KEY_END:
+ return scm_from_utf8_symbol ("end");
+ break;
+
+ case irr::KEY_HOME:
+ return scm_from_utf8_symbol ("home");
+ break;
+
+ case irr::KEY_LEFT:
+ return scm_from_utf8_symbol ("left");
+ break;
+
+ case irr::KEY_UP:
+ return scm_from_utf8_symbol ("up");
+ break;
+
+ case irr::KEY_RIGHT:
+ return scm_from_utf8_symbol ("right");
+ break;
+
+ case irr::KEY_DOWN:
+ return scm_from_utf8_symbol ("down");
+ break;
+
+ case irr::KEY_SELECT:
+ return scm_from_utf8_symbol ("select");
+ break;
+
+ case irr::KEY_PRINT:
+ return scm_from_utf8_symbol ("print");
+ break;
+
+ case irr::KEY_EXECUT:
+ return scm_from_utf8_symbol ("execut");
+ break;
+
+ case irr::KEY_SNAPSHOT:
+ return scm_from_utf8_symbol ("snapshot");
+ break;
+
+ case irr::KEY_INSERT:
+ return scm_from_utf8_symbol ("insert");
+ break;
+
+ case irr::KEY_DELETE:
+ return scm_from_utf8_symbol ("delete");
+ break;
+
+ case irr::KEY_HELP:
+ return scm_from_utf8_symbol ("help");
+ break;
+
+ case irr::KEY_KEY_0:
+ return scm_from_utf8_symbol ("key-0");
+ break;
+
+ case irr::KEY_KEY_1:
+ return scm_from_utf8_symbol ("key-1");
+ break;
+
+ case irr::KEY_KEY_2:
+ return scm_from_utf8_symbol ("key-2");
+ break;
+
+ case irr::KEY_KEY_3:
+ return scm_from_utf8_symbol ("key-3");
+ break;
+
+ case irr::KEY_KEY_4:
+ return scm_from_utf8_symbol ("key-4");
+ break;
+
+ case irr::KEY_KEY_5:
+ return scm_from_utf8_symbol ("key-5");
+ break;
+
+ case irr::KEY_KEY_6:
+ return scm_from_utf8_symbol ("key-6");
+ break;
+
+ case irr::KEY_KEY_7:
+ return scm_from_utf8_symbol ("key-7");
+ break;
+
+ case irr::KEY_KEY_8:
+ return scm_from_utf8_symbol ("key-8");
+ break;
+
+ case irr::KEY_KEY_9:
+ return scm_from_utf8_symbol ("key-9");
+ break;
+
+ case irr::KEY_KEY_A:
+ return scm_from_utf8_symbol ("key-a");
+ break;
+
+ case irr::KEY_KEY_B:
+ return scm_from_utf8_symbol ("key-b");
+ break;
+
+ case irr::KEY_KEY_C:
+ return scm_from_utf8_symbol ("key-c");
+ break;
+
+ case irr::KEY_KEY_D:
+ return scm_from_utf8_symbol ("key-d");
+ break;
+
+ case irr::KEY_KEY_E:
+ return scm_from_utf8_symbol ("key-e");
+ break;
+
+ case irr::KEY_KEY_F:
+ return scm_from_utf8_symbol ("key-f");
+ break;
+
+ case irr::KEY_KEY_G:
+ return scm_from_utf8_symbol ("key-g");
+ break;
+
+ case irr::KEY_KEY_H:
+ return scm_from_utf8_symbol ("key-h");
+ break;
+
+ case irr::KEY_KEY_I:
+ return scm_from_utf8_symbol ("key-i");
+ break;
+
+ case irr::KEY_KEY_J:
+ return scm_from_utf8_symbol ("key-j");
+ break;
+
+ case irr::KEY_KEY_K:
+ return scm_from_utf8_symbol ("key-k");
+ break;
+
+ case irr::KEY_KEY_L:
+ return scm_from_utf8_symbol ("key-l");
+ break;
+
+ case irr::KEY_KEY_M:
+ return scm_from_utf8_symbol ("key-m");
+ break;
+
+ case irr::KEY_KEY_N:
+ return scm_from_utf8_symbol ("key-n");
+ break;
+
+ case irr::KEY_KEY_O:
+ return scm_from_utf8_symbol ("key-o");
+ break;
+
+ case irr::KEY_KEY_P:
+ return scm_from_utf8_symbol ("key-p");
+ break;
+
+ case irr::KEY_KEY_Q:
+ return scm_from_utf8_symbol ("key-q");
+ break;
+
+ case irr::KEY_KEY_R:
+ return scm_from_utf8_symbol ("key-r");
+ break;
+
+ case irr::KEY_KEY_S:
+ return scm_from_utf8_symbol ("key-s");
+ break;
+
+ case irr::KEY_KEY_T:
+ return scm_from_utf8_symbol ("key-t");
+ break;
+
+ case irr::KEY_KEY_U:
+ return scm_from_utf8_symbol ("key-u");
+ break;
+
+ case irr::KEY_KEY_V:
+ return scm_from_utf8_symbol ("key-v");
+ break;
+
+ case irr::KEY_KEY_W:
+ return scm_from_utf8_symbol ("key-w");
+ break;
+
+ case irr::KEY_KEY_X:
+ return scm_from_utf8_symbol ("key-x");
+ break;
+
+ case irr::KEY_KEY_Y:
+ return scm_from_utf8_symbol ("key-y");
+ break;
+
+ case irr::KEY_KEY_Z:
+ return scm_from_utf8_symbol ("key-z");
+ break;
+
+ case irr::KEY_LWIN:
+ return scm_from_utf8_symbol ("lwin");
+ break;
+
+ case irr::KEY_RWIN:
+ return scm_from_utf8_symbol ("rwin");
+ break;
+
+ case irr::KEY_APPS:
+ return scm_from_utf8_symbol ("apps");
+ break;
+
+ case irr::KEY_SLEEP:
+ return scm_from_utf8_symbol ("sleep");
+ break;
+
+ case irr::KEY_NUMPAD0:
+ return scm_from_utf8_symbol ("numpad0");
+ break;
+
+ case irr::KEY_NUMPAD1:
+ return scm_from_utf8_symbol ("numpad1");
+ break;
+
+ case irr::KEY_NUMPAD2:
+ return scm_from_utf8_symbol ("numpad2");
+ break;
+
+ case irr::KEY_NUMPAD3:
+ return scm_from_utf8_symbol ("numpad3");
+ break;
+
+ case irr::KEY_NUMPAD4:
+ return scm_from_utf8_symbol ("numpad4");
+ break;
+
+ case irr::KEY_NUMPAD5:
+ return scm_from_utf8_symbol ("numpad5");
+ break;
+
+ case irr::KEY_NUMPAD6:
+ return scm_from_utf8_symbol ("numpad6");
+ break;
+
+ case irr::KEY_NUMPAD7:
+ return scm_from_utf8_symbol ("numpad7");
+ break;
+
+ case irr::KEY_NUMPAD8:
+ return scm_from_utf8_symbol ("numpad8");
+ break;
+
+ case irr::KEY_NUMPAD9:
+ return scm_from_utf8_symbol ("numpad9");
+ break;
+
+ case irr::KEY_MULTIPLY:
+ return scm_from_utf8_symbol ("multiply");
+ break;
+
+ case irr::KEY_ADD:
+ return scm_from_utf8_symbol ("add");
+ break;
+
+ case irr::KEY_SEPARATOR:
+ return scm_from_utf8_symbol ("separator");
+ break;
+
+ case irr::KEY_SUBTRACT:
+ return scm_from_utf8_symbol ("subtract");
+ break;
+
+ case irr::KEY_DECIMAL:
+ return scm_from_utf8_symbol ("decimal");
+ break;
+
+ case irr::KEY_DIVIDE:
+ return scm_from_utf8_symbol ("divide");
+ break;
+
+ case irr::KEY_F1:
+ return scm_from_utf8_symbol ("f1");
+ break;
+
+ case irr::KEY_F2:
+ return scm_from_utf8_symbol ("f2");
+ break;
+
+ case irr::KEY_F3:
+ return scm_from_utf8_symbol ("f3");
+ break;
+
+ case irr::KEY_F4:
+ return scm_from_utf8_symbol ("f4");
+ break;
+
+ case irr::KEY_F5:
+ return scm_from_utf8_symbol ("f5");
+ break;
+
+ case irr::KEY_F6:
+ return scm_from_utf8_symbol ("f6");
+ break;
+
+ case irr::KEY_F7:
+ return scm_from_utf8_symbol ("f7");
+ break;
+
+ case irr::KEY_F8:
+ return scm_from_utf8_symbol ("f8");
+ break;
+
+ case irr::KEY_F9:
+ return scm_from_utf8_symbol ("f9");
+ break;
+
+ case irr::KEY_F10:
+ return scm_from_utf8_symbol ("f10");
+ break;
+
+ case irr::KEY_F11:
+ return scm_from_utf8_symbol ("f11");
+ break;
+
+ case irr::KEY_F12:
+ return scm_from_utf8_symbol ("f12");
+ break;
+
+ case irr::KEY_F13:
+ return scm_from_utf8_symbol ("f13");
+ break;
+
+ case irr::KEY_F14:
+ return scm_from_utf8_symbol ("f14");
+ break;
+
+ case irr::KEY_F15:
+ return scm_from_utf8_symbol ("f15");
+ break;
+
+ case irr::KEY_F16:
+ return scm_from_utf8_symbol ("f16");
+ break;
+
+ case irr::KEY_F17:
+ return scm_from_utf8_symbol ("f17");
+ break;
+
+ case irr::KEY_F18:
+ return scm_from_utf8_symbol ("f18");
+ break;
+
+ case irr::KEY_F19:
+ return scm_from_utf8_symbol ("f19");
+ break;
+
+ case irr::KEY_F20:
+ return scm_from_utf8_symbol ("f20");
+ break;
+
+ case irr::KEY_F21:
+ return scm_from_utf8_symbol ("f21");
+ break;
+
+ case irr::KEY_F22:
+ return scm_from_utf8_symbol ("f22");
+ break;
+
+ case irr::KEY_F23:
+ return scm_from_utf8_symbol ("f23");
+ break;
+
+ case irr::KEY_F24:
+ return scm_from_utf8_symbol ("f24");
+ break;
+
+ case irr::KEY_NUMLOCK:
+ return scm_from_utf8_symbol ("numlock");
+ break;
+
+ case irr::KEY_SCROLL:
+ return scm_from_utf8_symbol ("scroll");
+ break;
+
+ case irr::KEY_LSHIFT:
+ return scm_from_utf8_symbol ("lshift");
+ break;
+
+ case irr::KEY_RSHIFT:
+ return scm_from_utf8_symbol ("rshift");
+ break;
+
+ case irr::KEY_LCONTROL:
+ return scm_from_utf8_symbol ("lcontrol");
+ break;
+
+ case irr::KEY_RCONTROL:
+ return scm_from_utf8_symbol ("rcontrol");
+ break;
+
+ case irr::KEY_LMENU:
+ return scm_from_utf8_symbol ("lmenu");
+ break;
+
+ case irr::KEY_RMENU:
+ return scm_from_utf8_symbol ("rmenu");
+ break;
+
+ case irr::KEY_OEM_1:
+ return scm_from_utf8_symbol ("oem-1");
+ break;
+
+ case irr::KEY_PLUS:
+ return scm_from_utf8_symbol ("plus");
+ break;
+
+ case irr::KEY_COMMA:
+ return scm_from_utf8_symbol ("comma");
+ break;
+
+ case irr::KEY_MINUS:
+ return scm_from_utf8_symbol ("minus");
+ break;
+
+ case irr::KEY_PERIOD:
+ return scm_from_utf8_symbol ("period");
+ break;
+
+ case irr::KEY_OEM_2:
+ return scm_from_utf8_symbol ("oem-2");
+ break;
+
+ case irr::KEY_OEM_3:
+ return scm_from_utf8_symbol ("oem-3");
+ break;
+
+ case irr::KEY_OEM_4:
+ return scm_from_utf8_symbol ("oem-4");
+ break;
+
+ case irr::KEY_OEM_5:
+ return scm_from_utf8_symbol ("oem-5");
+ break;
+
+ case irr::KEY_OEM_6:
+ return scm_from_utf8_symbol ("oem-6");
+ break;
+
+ case irr::KEY_OEM_7:
+ return scm_from_utf8_symbol ("oem-7");
+ break;
+
+ case irr::KEY_OEM_8:
+ return scm_from_utf8_symbol ("oem-8");
+ break;
+
+ case irr::KEY_OEM_AX:
+ return scm_from_utf8_symbol ("oem-ax");
+ break;
+
+ case irr::KEY_OEM_102:
+ return scm_from_utf8_symbol ("oem-102");
+ break;
+
+ case irr::KEY_ATTN:
+ return scm_from_utf8_symbol ("attn");
+ break;
+
+ case irr::KEY_CRSEL:
+ return scm_from_utf8_symbol ("crsel");
+ break;
+
+ case irr::KEY_EXSEL:
+ return scm_from_utf8_symbol ("exsel");
+ break;
+
+ case irr::KEY_EREOF:
+ return scm_from_utf8_symbol ("ereof");
+ break;
+
+ case irr::KEY_PLAY:
+ return scm_from_utf8_symbol ("play");
+ break;
+
+ case irr::KEY_ZOOM:
+ return scm_from_utf8_symbol ("zoom");
+ break;
+
+ case irr::KEY_PA1:
+ return scm_from_utf8_symbol ("pa1");
+ break;
+
+ case irr::KEY_OEM_CLEAR:
+ return scm_from_utf8_symbol ("oem-clear");
+ break;
+
+ default:
+ SCM code = scm_from_uint (key_code);
+ scm_error (scm_arg_type_key, NULL, "Wrong key code: ~S",
+ scm_list_1 (code), scm_list_1 (code));
+ }
+ }
+
+}