blob: 2e7c06d5b64d023e02566081525ac2c7f1b9defd [file] [log] [blame]
/*
* 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");
}