To my surprise, not all keys are represented by enumeration names. ~ / ; ' [ ] are not for example, but they are detected and given index numbers.
Code: Select all
// Key Code Finder for Irrlicht 1.4
// by arras
// 08.02.2008
// press keyboard key to find its EKEY_CODE index and name
#include <irrlicht.h>
using namespace irr;
u32 Index;
gui::IGUIStaticText *Text1;
gui::IGUIStaticText *Text2;
core::stringc KeyCodeName[KEY_KEY_CODES_COUNT];
class EventReceiver : public IEventReceiver
{
public:
virtual bool OnEvent(const SEvent& event)
{
if (event.EventType == EET_KEY_INPUT_EVENT)
{
if(event.KeyInput.PressedDown)
{
Index = (u32)event.KeyInput.Key;
core::stringw tmp("ENUMERATION INDEX = ");
tmp += Index;
Text1->setText(tmp.c_str());
tmp = "EKEY_CODE = ";
tmp += KeyCodeName[Index].c_str();
Text2->setText(tmp.c_str());
return true;
}
}
return false;
}
};
int main()
{
KeyCodeName[0x01] = "KEY_LBUTTON";
KeyCodeName[0x02] = "KEY_RBUTTON";
KeyCodeName[0x03] = "KEY_CANCEL";
KeyCodeName[0x04] = "KEY_MBUTTON";
KeyCodeName[0x05] = "KEY_XBUTTON1";
KeyCodeName[0x06] = "KEY_XBUTTON2";
KeyCodeName[0x08] = "KEY_BACK";
KeyCodeName[0x09] = "KEY_TAB";
KeyCodeName[0x0C] = "KEY_CLEAR";
KeyCodeName[0x0D] = "KEY_RETURN";
KeyCodeName[0x10] = "KEY_SHIFT";
KeyCodeName[0x11] = "KEY_CONTROL";
KeyCodeName[0x12] = "KEY_MENU";
KeyCodeName[0x13] = "KEY_PAUSE";
KeyCodeName[0x14] = "KEY_CAPITAL";
KeyCodeName[0x15] = "KEY_KANA";
KeyCodeName[0x15] += " KEY_HANGUEL";
KeyCodeName[0x15] += " KEY_HANGUL";
KeyCodeName[0x17] = "KEY_JUNJA";
KeyCodeName[0x18] = "KEY_FINAL";
KeyCodeName[0x19] = "KEY_HANJA";
KeyCodeName[0x19] += " KEY_KANJI";
KeyCodeName[0x1B] = "KEY_ESCAPE";
KeyCodeName[0x1C] = "KEY_CONVERT";
KeyCodeName[0x1D] = "KEY_NONCONVERT";
KeyCodeName[0x1E] = "KEY_ACCEPT";
KeyCodeName[0x1F] = "KEY_MODECHANGE";
KeyCodeName[0x20] = "KEY_SPACE";
KeyCodeName[0x21] = "KEY_PRIOR";
KeyCodeName[0x22] = "KEY_NEXT";
KeyCodeName[0x23] = "KEY_END";
KeyCodeName[0x24] = "KEY_HOME";
KeyCodeName[0x25] = "KEY_LEFT";
KeyCodeName[0x26] = "KEY_UP";
KeyCodeName[0x27] = "KEY_RIGHT";
KeyCodeName[0x28] = "KEY_DOWN";
KeyCodeName[0x29] = "KEY_SELECT";
KeyCodeName[0x2A] = "KEY_PRINT";
KeyCodeName[0x2B] = "KEY_EXECUT";
KeyCodeName[0x2C] = "KEY_SNAPSHOT";
KeyCodeName[0x2D] = "KEY_INSERT";
KeyCodeName[0x2E] = "KEY_DELETE";
KeyCodeName[0x2F] = "KEY_HELP";
KeyCodeName[0x30] = "KEY_KEY_0";
KeyCodeName[0x31] = "KEY_KEY_1";
KeyCodeName[0x32] = "KEY_KEY_2";
KeyCodeName[0x33] = "KEY_KEY_3";
KeyCodeName[0x34] = "KEY_KEY_4";
KeyCodeName[0x35] = "KEY_KEY_5";
KeyCodeName[0x36] = "KEY_KEY_6";
KeyCodeName[0x37] = "KEY_KEY_7";
KeyCodeName[0x38] = "KEY_KEY_8";
KeyCodeName[0x39] = "KEY_KEY_9";
KeyCodeName[0x41] = "KEY_KEY_A";
KeyCodeName[0x42] = "KEY_KEY_B";
KeyCodeName[0x43] = "KEY_KEY_C";
KeyCodeName[0x44] = "KEY_KEY_D";
KeyCodeName[0x45] = "KEY_KEY_E";
KeyCodeName[0x46] = "KEY_KEY_F";
KeyCodeName[0x47] = "KEY_KEY_G";
KeyCodeName[0x48] = "KEY_KEY_H";
KeyCodeName[0x49] = "KEY_KEY_I";
KeyCodeName[0x4A] = "KEY_KEY_J";
KeyCodeName[0x4B] = "KEY_KEY_K";
KeyCodeName[0x4C] = "KEY_KEY_L";
KeyCodeName[0x4D] = "KEY_KEY_M";
KeyCodeName[0x4E] = "KEY_KEY_N";
KeyCodeName[0x4F] = "KEY_KEY_O";
KeyCodeName[0x50] = "KEY_KEY_P";
KeyCodeName[0x51] = "KEY_KEY_Q";
KeyCodeName[0x52] = "KEY_KEY_R";
KeyCodeName[0x53] = "KEY_KEY_S";
KeyCodeName[0x54] = "KEY_KEY_T";
KeyCodeName[0x55] = "KEY_KEY_U";
KeyCodeName[0x56] = "KEY_KEY_V";
KeyCodeName[0x57] = "KEY_KEY_W";
KeyCodeName[0x58] = "KEY_KEY_X";
KeyCodeName[0x59] = "KEY_KEY_Y";
KeyCodeName[0x5A] = "KEY_KEY_Z";
KeyCodeName[0x5B] = "KEY_LWIN";
KeyCodeName[0x5C] = "KEY_RWIN";
KeyCodeName[0x5D] = "KEY_APPS";
KeyCodeName[0x5F] = "KEY_SLEEP";
KeyCodeName[0x60] = "KEY_NUMPAD0";
KeyCodeName[0x61] = "KEY_NUMPAD1";
KeyCodeName[0x62] = "KEY_NUMPAD2";
KeyCodeName[0x63] = "KEY_NUMPAD3";
KeyCodeName[0x64] = "KEY_NUMPAD4";
KeyCodeName[0x65] = "KEY_NUMPAD5";
KeyCodeName[0x66] = "KEY_NUMPAD6";
KeyCodeName[0x67] = "KEY_NUMPAD7";
KeyCodeName[0x68] = "KEY_NUMPAD8";
KeyCodeName[0x69] = "KEY_NUMPAD9";
KeyCodeName[0x6A] = "KEY_MULTIPLY";
KeyCodeName[0x6B] = "KEY_ADD";
KeyCodeName[0x6C] = "KEY_SEPARATOR";
KeyCodeName[0x6D] = "KEY_SUBTRACT";
KeyCodeName[0x6E] = "KEY_DECIMAL";
KeyCodeName[0x6F] = "KEY_DIVIDE";
KeyCodeName[0x70] = "KEY_F1";
KeyCodeName[0x71] = "KEY_F2";
KeyCodeName[0x72] = "KEY_F3";
KeyCodeName[0x73] = "KEY_F4";
KeyCodeName[0x74] = "KEY_F5";
KeyCodeName[0x75] = "KEY_F6";
KeyCodeName[0x76] = "KEY_F7";
KeyCodeName[0x77] = "KEY_F8";
KeyCodeName[0x78] = "KEY_F9";
KeyCodeName[0x79] = "KEY_F10";
KeyCodeName[0x7A] = "KEY_F11";
KeyCodeName[0x7B] = "KEY_F12";
KeyCodeName[0x7C] = "KEY_F13";
KeyCodeName[0x7D] = "KEY_F14";
KeyCodeName[0x7E] = "KEY_F15";
KeyCodeName[0x7F] = "KEY_F16";
KeyCodeName[0x80] = "KEY_F17";
KeyCodeName[0x81] = "KEY_F18";
KeyCodeName[0x82] = "KEY_F19";
KeyCodeName[0x83] = "KEY_F20";
KeyCodeName[0x84] = "KEY_F21";
KeyCodeName[0x85] = "KEY_F22";
KeyCodeName[0x86] = "KEY_F23";
KeyCodeName[0x87] = "KEY_F24";
KeyCodeName[0x90] = "KEY_NUMLOCK";
KeyCodeName[0x91] = "KEY_SCROLL";
KeyCodeName[0xA0] = "KEY_LSHIFT";
KeyCodeName[0xA1] = "KEY_RSHIFT";
KeyCodeName[0xA2] = "KEY_LCONTROL";
KeyCodeName[0xA3] = "KEY_RCONTROL";
KeyCodeName[0xA4] = "KEY_LMENU";
KeyCodeName[0xA5] = "KEY_RMENU";
KeyCodeName[0xBB] = "KEY_PLUS";
KeyCodeName[0xBC] = "KEY_COMMA";
KeyCodeName[0xBD] = "KEY_MINUS";
KeyCodeName[0xBE] = "KEY_PERIOD";
KeyCodeName[0xF6] = "KEY_ATTN";
KeyCodeName[0xF7] = "KEY_CRSEL";
KeyCodeName[0xF8] = "KEY_EXSEL";
KeyCodeName[0xF9] = "KEY_EREOF";
KeyCodeName[0xFA] = "KEY_PLAY";
KeyCodeName[0xFB] = "KEY_ZOOM";
KeyCodeName[0xFD] = "KEY_PA1";
KeyCodeName[0xFE] = "KEY_OEM_CLEAR";
EventReceiver receiver;
IrrlichtDevice* device = createDevice(
video::EDT_SOFTWARE,
core::dimension2d<s32>(320, 240), 32, false, false, false, &receiver);
video::IVideoDriver* driver = device->getVideoDriver();
gui::IGUIEnvironment* guienv = device->getGUIEnvironment();
device->setWindowCaption(L"KeyCodeFinder for Irrlicht 1.4 by arras 08.02.2008");
guienv->addStaticText(L"PRESS KEY", core::rect<s32>(10,10,200,20));
Text1 = guienv->addStaticText(L"ENUMERATION INDEX = ", core::rect<s32>(10,30,200,40));
Text2 = guienv->addStaticText(L"EKEY_CODE = ", core::rect<s32>(10,50,200,60));
core::stringw str("KEY_KEY_CODES_COUNT = ");
str += KEY_KEY_CODES_COUNT;
guienv->addStaticText(str.c_str(), core::rect<s32>(10,70,200,80));
while(device->run())
{
driver->beginScene(true, true, video::SColor(255,200,200,200));
guienv->drawAll();
driver->endScene();
}
device->drop();
return 0;
}