C++程序  |  596行  |  21.05 KB

/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#include "keymap.h"
#include <sstream>

using namespace com::android::car::keventreader;

Keymap& Keymap::get() {
    static Keymap gKeymap;

    return gKeymap;
}

Keymap::Keymap() {
    fillMap();
}

std::string_view Keymap::getDisplayName(int keycode) {
    auto iter = mKeyMap.find(keycode), end = mKeyMap.end();
    if (iter == end) {
        std::stringstream ss;
        ss << "unknown " << keycode;
        return ss.str();
    }
    return iter->second;
}

void Keymap::fillMap() {
    mKeyMap.emplace(0,"RESERVED");
    mKeyMap.emplace(1,"ESC");
    mKeyMap.emplace(2,"1");
    mKeyMap.emplace(3,"2");
    mKeyMap.emplace(4,"3");
    mKeyMap.emplace(5,"4");
    mKeyMap.emplace(6,"5");
    mKeyMap.emplace(7,"6");
    mKeyMap.emplace(8,"7");
    mKeyMap.emplace(9,"8");
    mKeyMap.emplace(10,"9");
    mKeyMap.emplace(11,"0");
    mKeyMap.emplace(12,"MINUS");
    mKeyMap.emplace(13,"EQUAL");
    mKeyMap.emplace(14,"BACKSPACE");
    mKeyMap.emplace(15,"TAB");
    mKeyMap.emplace(16,"Q");
    mKeyMap.emplace(17,"W");
    mKeyMap.emplace(18,"E");
    mKeyMap.emplace(19,"R");
    mKeyMap.emplace(20,"T");
    mKeyMap.emplace(21,"Y");
    mKeyMap.emplace(22,"U");
    mKeyMap.emplace(23,"I");
    mKeyMap.emplace(24,"O");
    mKeyMap.emplace(25,"P");
    mKeyMap.emplace(26,"LEFTBRACE");
    mKeyMap.emplace(27,"RIGHTBRACE");
    mKeyMap.emplace(28,"ENTER");
    mKeyMap.emplace(29,"LEFTCTRL");
    mKeyMap.emplace(30,"A");
    mKeyMap.emplace(31,"S");
    mKeyMap.emplace(32,"D");
    mKeyMap.emplace(33,"F");
    mKeyMap.emplace(34,"G");
    mKeyMap.emplace(35,"H");
    mKeyMap.emplace(36,"J");
    mKeyMap.emplace(37,"K");
    mKeyMap.emplace(38,"L");
    mKeyMap.emplace(39,"SEMICOLON");
    mKeyMap.emplace(40,"APOSTROPHE");
    mKeyMap.emplace(41,"GRAVE");
    mKeyMap.emplace(42,"LEFTSHIFT");
    mKeyMap.emplace(43,"BACKSLASH");
    mKeyMap.emplace(44,"Z");
    mKeyMap.emplace(45,"X");
    mKeyMap.emplace(46,"C");
    mKeyMap.emplace(47,"V");
    mKeyMap.emplace(48,"B");
    mKeyMap.emplace(49,"N");
    mKeyMap.emplace(50,"M");
    mKeyMap.emplace(51,"COMMA");
    mKeyMap.emplace(52,"DOT");
    mKeyMap.emplace(53,"SLASH");
    mKeyMap.emplace(54,"RIGHTSHIFT");
    mKeyMap.emplace(55,"KPASTERISK");
    mKeyMap.emplace(56,"LEFTALT");
    mKeyMap.emplace(57,"SPACE");
    mKeyMap.emplace(58,"CAPSLOCK");
    mKeyMap.emplace(59,"F1");
    mKeyMap.emplace(60,"F2");
    mKeyMap.emplace(61,"F3");
    mKeyMap.emplace(62,"F4");
    mKeyMap.emplace(63,"F5");
    mKeyMap.emplace(64,"F6");
    mKeyMap.emplace(65,"F7");
    mKeyMap.emplace(66,"F8");
    mKeyMap.emplace(67,"F9");
    mKeyMap.emplace(68,"F10");
    mKeyMap.emplace(69,"NUMLOCK");
    mKeyMap.emplace(70,"SCROLLLOCK");
    mKeyMap.emplace(71,"KP7");
    mKeyMap.emplace(72,"KP8");
    mKeyMap.emplace(73,"KP9");
    mKeyMap.emplace(74,"KPMINUS");
    mKeyMap.emplace(75,"KP4");
    mKeyMap.emplace(76,"KP5");
    mKeyMap.emplace(77,"KP6");
    mKeyMap.emplace(78,"KPPLUS");
    mKeyMap.emplace(79,"KP1");
    mKeyMap.emplace(80,"KP2");
    mKeyMap.emplace(81,"KP3");
    mKeyMap.emplace(82,"KP0");
    mKeyMap.emplace(83,"KPDOT");
    mKeyMap.emplace(85,"ZENKAKUHANKAKU");
    mKeyMap.emplace(86,"102ND");
    mKeyMap.emplace(87,"F11");
    mKeyMap.emplace(88,"F12");
    mKeyMap.emplace(89,"RO");
    mKeyMap.emplace(90,"KATAKANA");
    mKeyMap.emplace(91,"HIRAGANA");
    mKeyMap.emplace(92,"HENKAN");
    mKeyMap.emplace(93,"KATAKANAHIRAGANA");
    mKeyMap.emplace(94,"MUHENKAN");
    mKeyMap.emplace(95,"KPJPCOMMA");
    mKeyMap.emplace(96,"KPENTER");
    mKeyMap.emplace(97,"RIGHTCTRL");
    mKeyMap.emplace(98,"KPSLASH");
    mKeyMap.emplace(99,"SYSRQ");
    mKeyMap.emplace(100,"RIGHTALT");
    mKeyMap.emplace(101,"LINEFEED");
    mKeyMap.emplace(102,"HOME");
    mKeyMap.emplace(103,"UP");
    mKeyMap.emplace(104,"PAGEUP");
    mKeyMap.emplace(105,"LEFT");
    mKeyMap.emplace(106,"RIGHT");
    mKeyMap.emplace(107,"END");
    mKeyMap.emplace(108,"DOWN");
    mKeyMap.emplace(109,"PAGEDOWN");
    mKeyMap.emplace(110,"INSERT");
    mKeyMap.emplace(111,"DELETE");
    mKeyMap.emplace(112,"MACRO");
    mKeyMap.emplace(113,"MUTE");
    mKeyMap.emplace(114,"VOLUMEDOWN");
    mKeyMap.emplace(115,"VOLUMEUP");
    mKeyMap.emplace(116,"POWER");
    mKeyMap.emplace(117,"KPEQUAL");
    mKeyMap.emplace(118,"KPPLUSMINUS");
    mKeyMap.emplace(119,"PAUSE");
    mKeyMap.emplace(120,"SCALE");
    mKeyMap.emplace(121,"KPCOMMA");
    mKeyMap.emplace(122,"HANGEUL");
    mKeyMap.emplace(123,"HANJA");
    mKeyMap.emplace(124,"YEN");
    mKeyMap.emplace(125,"LEFTMETA");
    mKeyMap.emplace(126,"RIGHTMETA");
    mKeyMap.emplace(127,"COMPOSE");
    mKeyMap.emplace(128,"STOP");
    mKeyMap.emplace(129,"AGAIN");
    mKeyMap.emplace(130,"PROPS");
    mKeyMap.emplace(131,"UNDO");
    mKeyMap.emplace(132,"FRONT");
    mKeyMap.emplace(133,"COPY");
    mKeyMap.emplace(134,"OPEN");
    mKeyMap.emplace(135,"PASTE");
    mKeyMap.emplace(136,"FIND");
    mKeyMap.emplace(137,"CUT");
    mKeyMap.emplace(138,"HELP");
    mKeyMap.emplace(139,"MENU");
    mKeyMap.emplace(140,"CALC");
    mKeyMap.emplace(141,"SETUP");
    mKeyMap.emplace(142,"SLEEP");
    mKeyMap.emplace(143,"WAKEUP");
    mKeyMap.emplace(144,"FILE");
    mKeyMap.emplace(145,"SENDFILE");
    mKeyMap.emplace(146,"DELETEFILE");
    mKeyMap.emplace(147,"XFER");
    mKeyMap.emplace(148,"PROG1");
    mKeyMap.emplace(149,"PROG2");
    mKeyMap.emplace(150,"WWW");
    mKeyMap.emplace(151,"MSDOS");
    mKeyMap.emplace(152,"SCREENLOCK");
    mKeyMap.emplace(153,"ROTATE_DISPLAY");
    mKeyMap.emplace(154,"CYCLEWINDOWS");
    mKeyMap.emplace(155,"MAIL");
    mKeyMap.emplace(156,"BOOKMARKS");
    mKeyMap.emplace(157,"COMPUTER");
    mKeyMap.emplace(158,"BACK");
    mKeyMap.emplace(159,"FORWARD");
    mKeyMap.emplace(160,"CLOSECD");
    mKeyMap.emplace(161,"EJECTCD");
    mKeyMap.emplace(162,"EJECTCLOSECD");
    mKeyMap.emplace(163,"NEXTSONG");
    mKeyMap.emplace(164,"PLAYPAUSE");
    mKeyMap.emplace(165,"PREVIOUSSONG");
    mKeyMap.emplace(166,"STOPCD");
    mKeyMap.emplace(167,"RECORD");
    mKeyMap.emplace(168,"REWIND");
    mKeyMap.emplace(169,"PHONE");
    mKeyMap.emplace(170,"ISO");
    mKeyMap.emplace(171,"CONFIG");
    mKeyMap.emplace(172,"HOMEPAGE");
    mKeyMap.emplace(173,"REFRESH");
    mKeyMap.emplace(174,"EXIT");
    mKeyMap.emplace(175,"MOVE");
    mKeyMap.emplace(176,"EDIT");
    mKeyMap.emplace(177,"SCROLLUP");
    mKeyMap.emplace(178,"SCROLLDOWN");
    mKeyMap.emplace(179,"KPLEFTPAREN");
    mKeyMap.emplace(180,"KPRIGHTPAREN");
    mKeyMap.emplace(181,"NEW");
    mKeyMap.emplace(182,"REDO");
    mKeyMap.emplace(183,"F13");
    mKeyMap.emplace(184,"F14");
    mKeyMap.emplace(185,"F15");
    mKeyMap.emplace(186,"F16");
    mKeyMap.emplace(187,"F17");
    mKeyMap.emplace(188,"F18");
    mKeyMap.emplace(189,"F19");
    mKeyMap.emplace(190,"F20");
    mKeyMap.emplace(191,"F21");
    mKeyMap.emplace(192,"F22");
    mKeyMap.emplace(193,"F23");
    mKeyMap.emplace(194,"F24");
    mKeyMap.emplace(200,"PLAYCD");
    mKeyMap.emplace(201,"PAUSECD");
    mKeyMap.emplace(202,"PROG3");
    mKeyMap.emplace(203,"PROG4");
    mKeyMap.emplace(204,"DASHBOARD");
    mKeyMap.emplace(205,"SUSPEND");
    mKeyMap.emplace(206,"CLOSE");
    mKeyMap.emplace(207,"PLAY");
    mKeyMap.emplace(208,"FASTFORWARD");
    mKeyMap.emplace(209,"BASSBOOST");
    mKeyMap.emplace(210,"PRINT");
    mKeyMap.emplace(211,"HP");
    mKeyMap.emplace(212,"CAMERA");
    mKeyMap.emplace(213,"SOUND");
    mKeyMap.emplace(214,"QUESTION");
    mKeyMap.emplace(215,"EMAIL");
    mKeyMap.emplace(216,"CHAT");
    mKeyMap.emplace(217,"SEARCH");
    mKeyMap.emplace(218,"CONNECT");
    mKeyMap.emplace(219,"FINANCE");
    mKeyMap.emplace(220,"SPORT");
    mKeyMap.emplace(221,"SHOP");
    mKeyMap.emplace(222,"ALTERASE");
    mKeyMap.emplace(223,"CANCEL");
    mKeyMap.emplace(224,"BRIGHTNESSDOWN");
    mKeyMap.emplace(225,"BRIGHTNESSUP");
    mKeyMap.emplace(226,"MEDIA");
    mKeyMap.emplace(227,"SWITCHVIDEOMODE");
    mKeyMap.emplace(228,"KBDILLUMTOGGLE");
    mKeyMap.emplace(229,"KBDILLUMDOWN");
    mKeyMap.emplace(230,"KBDILLUMUP");
    mKeyMap.emplace(231,"SEND");
    mKeyMap.emplace(232,"REPLY");
    mKeyMap.emplace(233,"FORWARDMAIL");
    mKeyMap.emplace(234,"SAVE");
    mKeyMap.emplace(235,"DOCUMENTS");
    mKeyMap.emplace(236,"BATTERY");
    mKeyMap.emplace(237,"BLUETOOTH");
    mKeyMap.emplace(238,"WLAN");
    mKeyMap.emplace(239,"UWB");
    mKeyMap.emplace(240,"UNKNOWN");
    mKeyMap.emplace(241,"VIDEO_NEXT");
    mKeyMap.emplace(242,"VIDEO_PREV");
    mKeyMap.emplace(243,"BRIGHTNESS_CYCLE");
    mKeyMap.emplace(244,"BRIGHTNESS_AUTO");
    mKeyMap.emplace(245,"DISPLAY_OFF");
    mKeyMap.emplace(246,"WWAN");
    mKeyMap.emplace(247,"RFKILL");
    mKeyMap.emplace(248,"MICMUTE");
    mKeyMap.emplace(0x160,"OK");
    mKeyMap.emplace(0x161,"SELECT");
    mKeyMap.emplace(0x162,"GOTO");
    mKeyMap.emplace(0x163,"CLEAR");
    mKeyMap.emplace(0x164,"POWER2");
    mKeyMap.emplace(0x165,"OPTION");
    mKeyMap.emplace(0x166,"INFO");
    mKeyMap.emplace(0x167,"TIME");
    mKeyMap.emplace(0x168,"VENDOR");
    mKeyMap.emplace(0x169,"ARCHIVE");
    mKeyMap.emplace(0x16a,"PROGRAM");
    mKeyMap.emplace(0x16b,"CHANNEL");
    mKeyMap.emplace(0x16c,"FAVORITES");
    mKeyMap.emplace(0x16d,"EPG");
    mKeyMap.emplace(0x16e,"PVR");
    mKeyMap.emplace(0x16f,"MHP");
    mKeyMap.emplace(0x170,"LANGUAGE");
    mKeyMap.emplace(0x171,"TITLE");
    mKeyMap.emplace(0x172,"SUBTITLE");
    mKeyMap.emplace(0x173,"ANGLE");
    mKeyMap.emplace(0x174,"ZOOM");
    mKeyMap.emplace(0x175,"MODE");
    mKeyMap.emplace(0x176,"KEYBOARD");
    mKeyMap.emplace(0x177,"SCREEN");
    mKeyMap.emplace(0x178,"PC");
    mKeyMap.emplace(0x179,"TV");
    mKeyMap.emplace(0x17a,"TV2");
    mKeyMap.emplace(0x17b,"VCR");
    mKeyMap.emplace(0x17c,"VCR2");
    mKeyMap.emplace(0x17d,"SAT");
    mKeyMap.emplace(0x17e,"SAT2");
    mKeyMap.emplace(0x17f,"CD");
    mKeyMap.emplace(0x180,"TAPE");
    mKeyMap.emplace(0x181,"RADIO");
    mKeyMap.emplace(0x182,"TUNER");
    mKeyMap.emplace(0x183,"PLAYER");
    mKeyMap.emplace(0x184,"TEXT");
    mKeyMap.emplace(0x185,"DVD");
    mKeyMap.emplace(0x186,"AUX");
    mKeyMap.emplace(0x187,"MP3");
    mKeyMap.emplace(0x188,"AUDIO");
    mKeyMap.emplace(0x189,"VIDEO");
    mKeyMap.emplace(0x18a,"DIRECTORY");
    mKeyMap.emplace(0x18b,"LIST");
    mKeyMap.emplace(0x18c,"MEMO");
    mKeyMap.emplace(0x18d,"CALENDAR");
    mKeyMap.emplace(0x18e,"RED");
    mKeyMap.emplace(0x18f,"GREEN");
    mKeyMap.emplace(0x190,"YELLOW");
    mKeyMap.emplace(0x191,"BLUE");
    mKeyMap.emplace(0x192,"CHANNELUP");
    mKeyMap.emplace(0x193,"CHANNELDOWN");
    mKeyMap.emplace(0x194,"FIRST");
    mKeyMap.emplace(0x195,"LAST");
    mKeyMap.emplace(0x196,"AB");
    mKeyMap.emplace(0x197,"NEXT");
    mKeyMap.emplace(0x198,"RESTART");
    mKeyMap.emplace(0x199,"SLOW");
    mKeyMap.emplace(0x19a,"SHUFFLE");
    mKeyMap.emplace(0x19b,"BREAK");
    mKeyMap.emplace(0x19c,"PREVIOUS");
    mKeyMap.emplace(0x19d,"DIGITS");
    mKeyMap.emplace(0x19e,"TEEN");
    mKeyMap.emplace(0x19f,"TWEN");
    mKeyMap.emplace(0x1a0,"VIDEOPHONE");
    mKeyMap.emplace(0x1a1,"GAMES");
    mKeyMap.emplace(0x1a2,"ZOOMIN");
    mKeyMap.emplace(0x1a3,"ZOOMOUT");
    mKeyMap.emplace(0x1a4,"ZOOMRESET");
    mKeyMap.emplace(0x1a5,"WORDPROCESSOR");
    mKeyMap.emplace(0x1a6,"EDITOR");
    mKeyMap.emplace(0x1a7,"SPREADSHEET");
    mKeyMap.emplace(0x1a8,"GRAPHICSEDITOR");
    mKeyMap.emplace(0x1a9,"PRESENTATION");
    mKeyMap.emplace(0x1aa,"DATABASE");
    mKeyMap.emplace(0x1ab,"NEWS");
    mKeyMap.emplace(0x1ac,"VOICEMAIL");
    mKeyMap.emplace(0x1ad,"ADDRESSBOOK");
    mKeyMap.emplace(0x1ae,"MESSENGER");
    mKeyMap.emplace(0x1af,"DISPLAYTOGGLE");
    mKeyMap.emplace(0x1b0,"SPELLCHECK");
    mKeyMap.emplace(0x1b1,"LOGOFF");
    mKeyMap.emplace(0x1b2,"DOLLAR");
    mKeyMap.emplace(0x1b3,"EURO");
    mKeyMap.emplace(0x1b4,"FRAMEBACK");
    mKeyMap.emplace(0x1b5,"FRAMEFORWARD");
    mKeyMap.emplace(0x1b6,"CONTEXT_MENU");
    mKeyMap.emplace(0x1b7,"MEDIA_REPEAT");
    mKeyMap.emplace(0x1b8,"10CHANNELSUP");
    mKeyMap.emplace(0x1b9,"10CHANNELSDOWN");
    mKeyMap.emplace(0x1ba,"IMAGES");
    mKeyMap.emplace(0x1c0,"DEL_EOL");
    mKeyMap.emplace(0x1c1,"DEL_EOS");
    mKeyMap.emplace(0x1c2,"INS_LINE");
    mKeyMap.emplace(0x1c3,"DEL_LINE");
    mKeyMap.emplace(0x1d0,"FN");
    mKeyMap.emplace(0x1d1,"FN_ESC");
    mKeyMap.emplace(0x1d2,"FN_F1");
    mKeyMap.emplace(0x1d3,"FN_F2");
    mKeyMap.emplace(0x1d4,"FN_F3");
    mKeyMap.emplace(0x1d5,"FN_F4");
    mKeyMap.emplace(0x1d6,"FN_F5");
    mKeyMap.emplace(0x1d7,"FN_F6");
    mKeyMap.emplace(0x1d8,"FN_F7");
    mKeyMap.emplace(0x1d9,"FN_F8");
    mKeyMap.emplace(0x1da,"FN_F9");
    mKeyMap.emplace(0x1db,"FN_F10");
    mKeyMap.emplace(0x1dc,"FN_F11");
    mKeyMap.emplace(0x1dd,"FN_F12");
    mKeyMap.emplace(0x1de,"FN_1");
    mKeyMap.emplace(0x1df,"FN_2");
    mKeyMap.emplace(0x1e0,"FN_D");
    mKeyMap.emplace(0x1e1,"FN_E");
    mKeyMap.emplace(0x1e2,"FN_F");
    mKeyMap.emplace(0x1e3,"FN_S");
    mKeyMap.emplace(0x1e4,"FN_B");
    mKeyMap.emplace(0x1f1,"BRL_DOT1");
    mKeyMap.emplace(0x1f2,"BRL_DOT2");
    mKeyMap.emplace(0x1f3,"BRL_DOT3");
    mKeyMap.emplace(0x1f4,"BRL_DOT4");
    mKeyMap.emplace(0x1f5,"BRL_DOT5");
    mKeyMap.emplace(0x1f6,"BRL_DOT6");
    mKeyMap.emplace(0x1f7,"BRL_DOT7");
    mKeyMap.emplace(0x1f8,"BRL_DOT8");
    mKeyMap.emplace(0x1f9,"BRL_DOT9");
    mKeyMap.emplace(0x1fa,"BRL_DOT10");
    mKeyMap.emplace(0x200,"NUMERIC_0");
    mKeyMap.emplace(0x201,"NUMERIC_1");
    mKeyMap.emplace(0x202,"NUMERIC_2");
    mKeyMap.emplace(0x203,"NUMERIC_3");
    mKeyMap.emplace(0x204,"NUMERIC_4");
    mKeyMap.emplace(0x205,"NUMERIC_5");
    mKeyMap.emplace(0x206,"NUMERIC_6");
    mKeyMap.emplace(0x207,"NUMERIC_7");
    mKeyMap.emplace(0x208,"NUMERIC_8");
    mKeyMap.emplace(0x209,"NUMERIC_9");
    mKeyMap.emplace(0x20a,"NUMERIC_STAR");
    mKeyMap.emplace(0x20b,"NUMERIC_POUND");
    mKeyMap.emplace(0x20c,"NUMERIC_A");
    mKeyMap.emplace(0x20d,"NUMERIC_B");
    mKeyMap.emplace(0x20e,"NUMERIC_C");
    mKeyMap.emplace(0x20f,"NUMERIC_D");
    mKeyMap.emplace(0x210,"CAMERA_FOCUS");
    mKeyMap.emplace(0x211,"WPS_BUTTON");
    mKeyMap.emplace(0x212,"TOUCHPAD_TOGGLE");
    mKeyMap.emplace(0x213,"TOUCHPAD_ON");
    mKeyMap.emplace(0x214,"TOUCHPAD_OFF");
    mKeyMap.emplace(0x215,"CAMERA_ZOOMIN");
    mKeyMap.emplace(0x216,"CAMERA_ZOOMOUT");
    mKeyMap.emplace(0x217,"CAMERA_UP");
    mKeyMap.emplace(0x218,"CAMERA_DOWN");
    mKeyMap.emplace(0x219,"CAMERA_LEFT");
    mKeyMap.emplace(0x21a,"CAMERA_RIGHT");
    mKeyMap.emplace(0x21b,"ATTENDANT_ON");
    mKeyMap.emplace(0x21c,"ATTENDANT_OFF");
    mKeyMap.emplace(0x21d,"ATTENDANT_TOGGLE");
    mKeyMap.emplace(0x21e,"LIGHTS_TOGGLE");
    mKeyMap.emplace(0x230,"ALS_TOGGLE");
    mKeyMap.emplace(0x240,"BUTTONCONFIG");
    mKeyMap.emplace(0x241,"TASKMANAGER");
    mKeyMap.emplace(0x242,"JOURNAL");
    mKeyMap.emplace(0x243,"CONTROLPANEL");
    mKeyMap.emplace(0x244,"APPSELECT");
    mKeyMap.emplace(0x245,"SCREENSAVER");
    mKeyMap.emplace(0x246,"VOICECOMMAND");
    mKeyMap.emplace(0x247,"ASSISTANT");
    mKeyMap.emplace(0x250,"BRIGHTNESS_MIN");
    mKeyMap.emplace(0x251,"BRIGHTNESS_MAX");
    mKeyMap.emplace(0x260,"KBDINPUTASSIST_PREV");
    mKeyMap.emplace(0x261,"KBDINPUTASSIST_NEXT");
    mKeyMap.emplace(0x262,"KBDINPUTASSIST_PREVGROUP");
    mKeyMap.emplace(0x263,"KBDINPUTASSIST_NEXTGROUP");
    mKeyMap.emplace(0x264,"KBDINPUTASSIST_ACCEPT");
    mKeyMap.emplace(0x265,"KBDINPUTASSIST_CANCEL");
    mKeyMap.emplace(0x266,"RIGHT_UP");
    mKeyMap.emplace(0x267,"RIGHT_DOWN");
    mKeyMap.emplace(0x268,"LEFT_UP");
    mKeyMap.emplace(0x269,"LEFT_DOWN");
    mKeyMap.emplace(0x26a,"ROOT_MENU");
    mKeyMap.emplace(0x26b,"MEDIA_TOP_MENU");
    mKeyMap.emplace(0x26c,"NUMERIC_11");
    mKeyMap.emplace(0x26d,"NUMERIC_12");
    mKeyMap.emplace(0x26e,"AUDIO_DESC");
    mKeyMap.emplace(0x26f,"3D_MODE");
    mKeyMap.emplace(0x270,"NEXT_FAVORITE");
    mKeyMap.emplace(0x271,"STOP_RECORD");
    mKeyMap.emplace(0x272,"PAUSE_RECORD");
    mKeyMap.emplace(0x273,"VOD");
    mKeyMap.emplace(0x274,"UNMUTE");
    mKeyMap.emplace(0x275,"FASTREVERSE");
    mKeyMap.emplace(0x276,"SLOWREVERSE");
    mKeyMap.emplace(0x277,"DATA");
    mKeyMap.emplace(0x278,"ONSCREEN_KEYBOARD");
    mKeyMap.emplace(113,"MIN_INTERESTING");
    mKeyMap.emplace(0x2ff,"MAX");
    mKeyMap.emplace(0x100,"MISC");
    mKeyMap.emplace(0x100,"0");
    mKeyMap.emplace(0x101,"1");
    mKeyMap.emplace(0x102,"2");
    mKeyMap.emplace(0x103,"3");
    mKeyMap.emplace(0x104,"4");
    mKeyMap.emplace(0x105,"5");
    mKeyMap.emplace(0x106,"6");
    mKeyMap.emplace(0x107,"7");
    mKeyMap.emplace(0x108,"8");
    mKeyMap.emplace(0x109,"9");
    mKeyMap.emplace(0x110,"MOUSE");
    mKeyMap.emplace(0x110,"LEFT");
    mKeyMap.emplace(0x111,"RIGHT");
    mKeyMap.emplace(0x112,"MIDDLE");
    mKeyMap.emplace(0x113,"SIDE");
    mKeyMap.emplace(0x114,"EXTRA");
    mKeyMap.emplace(0x115,"FORWARD");
    mKeyMap.emplace(0x116,"BACK");
    mKeyMap.emplace(0x117,"TASK");
    mKeyMap.emplace(0x120,"JOYSTICK");
    mKeyMap.emplace(0x120,"TRIGGER");
    mKeyMap.emplace(0x121,"THUMB");
    mKeyMap.emplace(0x122,"THUMB2");
    mKeyMap.emplace(0x123,"TOP");
    mKeyMap.emplace(0x124,"TOP2");
    mKeyMap.emplace(0x125,"PINKIE");
    mKeyMap.emplace(0x126,"BASE");
    mKeyMap.emplace(0x127,"BASE2");
    mKeyMap.emplace(0x128,"BASE3");
    mKeyMap.emplace(0x129,"BASE4");
    mKeyMap.emplace(0x12a,"BASE5");
    mKeyMap.emplace(0x12b,"BASE6");
    mKeyMap.emplace(0x12f,"DEAD");
    mKeyMap.emplace(0x130,"GAMEPAD");
    mKeyMap.emplace(0x130,"SOUTH");
    mKeyMap.emplace(0x131,"EAST");
    mKeyMap.emplace(0x132,"C");
    mKeyMap.emplace(0x133,"NORTH");
    mKeyMap.emplace(0x134,"WEST");
    mKeyMap.emplace(0x135,"Z");
    mKeyMap.emplace(0x136,"TL");
    mKeyMap.emplace(0x137,"TR");
    mKeyMap.emplace(0x138,"TL2");
    mKeyMap.emplace(0x139,"TR2");
    mKeyMap.emplace(0x13a,"SELECT");
    mKeyMap.emplace(0x13b,"START");
    mKeyMap.emplace(0x13c,"MODE");
    mKeyMap.emplace(0x13d,"THUMBL");
    mKeyMap.emplace(0x13e,"THUMBR");
    mKeyMap.emplace(0x140,"DIGI");
    mKeyMap.emplace(0x140,"TOOL_PEN");
    mKeyMap.emplace(0x141,"TOOL_RUBBER");
    mKeyMap.emplace(0x142,"TOOL_BRUSH");
    mKeyMap.emplace(0x143,"TOOL_PENCIL");
    mKeyMap.emplace(0x144,"TOOL_AIRBRUSH");
    mKeyMap.emplace(0x145,"TOOL_FINGER");
    mKeyMap.emplace(0x146,"TOOL_MOUSE");
    mKeyMap.emplace(0x147,"TOOL_LENS");
    mKeyMap.emplace(0x148,"TOOL_QUINTTAP");
    mKeyMap.emplace(0x149,"STYLUS3");
    mKeyMap.emplace(0x14a,"TOUCH");
    mKeyMap.emplace(0x14b,"STYLUS");
    mKeyMap.emplace(0x14c,"STYLUS2");
    mKeyMap.emplace(0x14d,"TOOL_DOUBLETAP");
    mKeyMap.emplace(0x14e,"TOOL_TRIPLETAP");
    mKeyMap.emplace(0x14f,"TOOL_QUADTAP");
    mKeyMap.emplace(0x150,"WHEEL");
    mKeyMap.emplace(0x150,"GEAR_DOWN");
    mKeyMap.emplace(0x151,"GEAR_UP");
    mKeyMap.emplace(0x220,"DPAD_UP");
    mKeyMap.emplace(0x221,"DPAD_DOWN");
    mKeyMap.emplace(0x222,"DPAD_LEFT");
    mKeyMap.emplace(0x223,"DPAD_RIGHT");
    mKeyMap.emplace(0x2c0,"TRIGGER_HAPPY");
    mKeyMap.emplace(0x2c0,"TRIGGER_HAPPY1");
    mKeyMap.emplace(0x2c1,"TRIGGER_HAPPY2");
    mKeyMap.emplace(0x2c2,"TRIGGER_HAPPY3");
    mKeyMap.emplace(0x2c3,"TRIGGER_HAPPY4");
    mKeyMap.emplace(0x2c4,"TRIGGER_HAPPY5");
    mKeyMap.emplace(0x2c5,"TRIGGER_HAPPY6");
    mKeyMap.emplace(0x2c6,"TRIGGER_HAPPY7");
    mKeyMap.emplace(0x2c7,"TRIGGER_HAPPY8");
    mKeyMap.emplace(0x2c8,"TRIGGER_HAPPY9");
    mKeyMap.emplace(0x2c9,"TRIGGER_HAPPY10");
    mKeyMap.emplace(0x2ca,"TRIGGER_HAPPY11");
    mKeyMap.emplace(0x2cb,"TRIGGER_HAPPY12");
    mKeyMap.emplace(0x2cc,"TRIGGER_HAPPY13");
    mKeyMap.emplace(0x2cd,"TRIGGER_HAPPY14");
    mKeyMap.emplace(0x2ce,"TRIGGER_HAPPY15");
    mKeyMap.emplace(0x2cf,"TRIGGER_HAPPY16");
    mKeyMap.emplace(0x2d0,"TRIGGER_HAPPY17");
    mKeyMap.emplace(0x2d1,"TRIGGER_HAPPY18");
    mKeyMap.emplace(0x2d2,"TRIGGER_HAPPY19");
    mKeyMap.emplace(0x2d3,"TRIGGER_HAPPY20");
    mKeyMap.emplace(0x2d4,"TRIGGER_HAPPY21");
    mKeyMap.emplace(0x2d5,"TRIGGER_HAPPY22");
    mKeyMap.emplace(0x2d6,"TRIGGER_HAPPY23");
    mKeyMap.emplace(0x2d7,"TRIGGER_HAPPY24");
    mKeyMap.emplace(0x2d8,"TRIGGER_HAPPY25");
    mKeyMap.emplace(0x2d9,"TRIGGER_HAPPY26");
    mKeyMap.emplace(0x2da,"TRIGGER_HAPPY27");
    mKeyMap.emplace(0x2db,"TRIGGER_HAPPY28");
    mKeyMap.emplace(0x2dc,"TRIGGER_HAPPY29");
    mKeyMap.emplace(0x2dd,"TRIGGER_HAPPY30");
    mKeyMap.emplace(0x2de,"TRIGGER_HAPPY31");
    mKeyMap.emplace(0x2df,"TRIGGER_HAPPY32");
    mKeyMap.emplace(0x2e0,"TRIGGER_HAPPY33");
    mKeyMap.emplace(0x2e1,"TRIGGER_HAPPY34");
    mKeyMap.emplace(0x2e2,"TRIGGER_HAPPY35");
    mKeyMap.emplace(0x2e3,"TRIGGER_HAPPY36");
    mKeyMap.emplace(0x2e4,"TRIGGER_HAPPY37");
    mKeyMap.emplace(0x2e5,"TRIGGER_HAPPY38");
    mKeyMap.emplace(0x2e6,"TRIGGER_HAPPY39");
    mKeyMap.emplace(0x2e7,"TRIGGER_HAPPY40");
}