Support::KeyMap.new({
0x01 => :VK_LBUTTON,
0x02 => :VK_RBUTTON,
0x03 => :VK_CANCEL,
0x04 => :VK_MBUTTON,
0x05 => :VK_XBUTTON1,
0x06 => :VK_XBUTTON2,
[0x07, 0x0A..0x0B, 0x0E..0x0F, 0x16, 0x1A,
0x3A..0x40, 0x5E, 0x88..0x8F, 0x97..0x9F,
0xB8..0xB9, 0xC1..0xD7, 0xD8..0xDA, 0xE0, 0xE8] => :VK_UNASSIGNED,
0x08 => :VK_BACK,
0x09 => :VK_TAB,
0x0C => :VK_CLEAR,
0x0D => :VK_RETURN,
0x10 => :VK_SHIFT,
0x11 => :VK_CONTROL,
0x12 => :VK_MENU,
0x13 => :VK_PAUSE,
0x14 => :VK_CAPITAL,
0x15 => :VK_KANA,
0x15 => :VK_HANGUEL,
0x15 => :VK_HANGUL,
0x17 => :VK_JUNJA,
0x18 => :VK_FINAL,
0x19 => :VK_HANJA,
0x19 => :VK_KANJI,
0x1B => :VK_ESCAPE,
0x1C => :VK_CONVERT,
0x1D => :VK_NONCONVERT,
0x1E => :VK_ACCEPT,
0x1F => :VK_MODECHANGE,
0x20 => :VK_SPACE,
0x21 => :VK_PRIOR,
0x22 => :VK_NEXT,
0x23 => :VK_END,
0x24 => :VK_HOME,
0x25 => :VK_LEFT,
0x26 => :VK_UP,
0x27 => :VK_RIGHT,
0x28 => :VK_DOWN,
0x29 => :VK_SELECT,
0x2A => :VK_PRINT,
0x2B => :VK_EXECUTE,
0x2C => :VK_SNAPSHOT,
0x2D => :VK_INSERT,
0x2E => :VK_DELETE,
0x2F => :VK_HELP,
0x30 => :VK_0,
0x31 => :VK_1,
0x32 => :VK_2,
0x33 => :VK_3,
0x34 => :VK_4,
0x35 => :VK_5,
0x36 => :VK_6,
0x37 => :VK_7,
0x38 => :VK_8,
0x39 => :VK_9,
0x41 => :VK_A,
0x42 => :VK_B,
0x43 => :VK_C,
0x44 => :VK_D,
0x45 => :VK_E,
0x46 => :VK_F,
0x47 => :VK_G,
0x48 => :VK_H,
0x49 => :VK_I,
0x4A => :VK_J,
0x4B => :VK_K,
0x4C => :VK_L,
0x4D => :VK_M,
0x4E => :VK_N,
0x4F => :VK_O,
0x50 => :VK_P,
0x51 => :VK_Q,
0x52 => :VK_R,
0x53 => :VK_S,
0x54 => :VK_T,
0x55 => :VK_U,
0x56 => :VK_V,
0x57 => :VK_W,
0x58 => :VK_X,
0x59 => :VK_Y,
0x5A => :VK_Z,
0x5B => :VK_LWIN,
0x5C => :VK_RWIN,
0x5D => :VK_APPS,
0x5F => :VK_SLEEP,
0x60 => :VK_NUMPAD0,
0x61 => :VK_NUMPAD1,
0x62 => :VK_NUMPAD2,
0x63 => :VK_NUMPAD3,
0x64 => :VK_NUMPAD4,
0x65 => :VK_NUMPAD5,
0x66 => :VK_NUMPAD6,
0x67 => :VK_NUMPAD7,
0x68 => :VK_NUMPAD8,
0x69 => :VK_NUMPAD9,
0x6A => :VK_MULTIPLY,
0x6B => :VK_ADD,
0x6C => :VK_SEPARATOR,
0x6D => :VK_SUBTRACT,
0x6E => :VK_DECIMAL,
0x6F => :VK_DIVIDE,
0x70 => :VK_F1,
0x71 => :VK_F2,
0x72 => :VK_F3,
0x73 => :VK_F4,
0x74 => :VK_F5,
0x75 => :VK_F6,
0x76 => :VK_F7,
0x77 => :VK_F8,
0x78 => :VK_F9,
0x79 => :VK_F10,
0x7A => :VK_F11,
0x7B => :VK_F12,
0x7C => :VK_F13,
0x7D => :VK_F14,
0x7E => :VK_F15,
0x7F => :VK_F16,
0x80 => :VK_F17,
0x81 => :VK_F18,
0x82 => :VK_F19,
0x83 => :VK_F20,
0x84 => :VK_F21,
0x85 => :VK_F22,
0x86 => :VK_F23,
0x87 => :VK_F24,
0x90 => :VK_NUMLOCK,
0x91 => :VK_SCROLL,
[0x92..0x96, 0xE3..0xE4, 0xE9..0xF5] => :VK_OEM,
0xA0 => :VK_LSHIFT,
0xA1 => :VK_RSHIFT,
0xA2 => :VK_LCONTROL,
0xA3 => :VK_RCONTROL,
0xA4 => :VK_LMENU,
0xA5 => :VK_RMENU,
0xA6 => :VK_BROWSER_BACK,
0xA7 => :VK_BROWSER_FORWARD,
0xA8 => :VK_BROWSER_REFRESH,
0xA9 => :VK_BROWSER_STOP,
0xAA => :VK_BROWSER_SEARCH,
0xAB => :VK_BROWSER_FAVORITES,
0xAC => :VK_BROWSER_HOME,
0xAD => :VK_VOLUME_MUTE,
0xAE => :VK_VOLUME_DOWN,
0xAF => :VK_VOLUME_UP,
0xB0 => :VK_MEDIA_NEXT_TRACK,
0xB1 => :VK_MEDIA_PREV_TRACK,
0xB2 => :VK_MEDIA_STOP,
0xB3 => :VK_MEDIA_PLAY_PAUSE,
0xB4 => :VK_LAUNCH_MAIL,
0xB5 => :VK_LAUNCH_MEDIA_SELECT,
0xB6 => :VK_LAUNCH_APP1,
0xB7 => :VK_LAUNCH_APP2,
0xBA => :VK_OEM_1,
0xBB => :VK_OEM_PLUS,
0xBC => :VK_OEM_COMMA,
0xBD => :VK_OEM_MINUS,
0xBE => :VK_OEM_PERIOD,
0xBF => :VK_OEM_2,
0xC0 => :VK_OEM_3,
0xDB => :VK_OEM_4,
0xDC => :VK_OEM_5,
0xDD => :VK_OEM_6,
0xDE => :VK_OEM_7,
0xDF => :VK_OEM_8,
0xE1 => :VK_OEM,
0xE2 => :VK_OEM_102,
0xE5 => :VK_PROCESSKEY,
0xE6 => :VK_OEM,
0xE7 => :VK_PACKET,
0xF6 => :VK_ATTN,
0xF7 => :VK_CRSEL,
0xF8 => :VK_EXSEL,
0xF9 => :VK_EREOF,
0xFA => :VK_PLAY,
0xFB => :VK_ZOOM,
0xFC => :VK_NONAME,
0xFD => :VK_PA1,
0xFE => :VK_OEM_CLEAR,
0xF2 => :VK_OEM_COPY,
0xF3 => :VK_OEM_AUTO,
0xF4 => :VK_OEM_ENLW,
0xF5 => :VK_OEM_BACKTAB
})