--lua
local key = {
mouse_1 = 0x01, -- VK_LBUTTON Left mouse button
mouse_2 = 0x02, -- VK_RBUTTON Right mouse button
--0x03 -- VK_CANCEL Control-break processing
mouse_middle = 0x04, -- VK_MBUTTON Middle mouse button (three-button mouse)
mouse_4 = 0x05, -- VK_XBUTTON1 X1 mouse button
mouse_5 = 0x06, -- VK_XBUTTON2 X2 mouse button
--0x07 -- Undefined
backspace = 0x08, -- VK_BACK BACKSPACE key
tab = 0x09, -- VK_TAB TAB key
--0x0A-0B -- Reserved
--0x0C -- VK_CLEAR CLEAR key
enter = 0x0D, -- VK_RETURN ENTER key
--0x0E-0F -- Undefined
shift = 0x10, -- VK_SHIFT SHIFT key
ctrl = 0x11, -- VK_CONTROL CTRL key
alt = 0x12, -- VK_MENU ALT key
pause = 0x13, -- VK_PAUSE PAUSE key
caps_lock = 0x14, -- VK_CAPITAL CAPS LOCK key
--0x15 -- VK_KANA IME Kana mode
--0x15 -- VK_HANGUEL IME Hanguel mode (maintained for compatibility; use VK_HANGUL)
--0x15 -- VK_HANGUL IME Hangul mode
--0x16 -- Undefined
--0x17 -- VK_JUNJA IME Junja mode
--0x18 -- VK_FINAL IME final mode
--0x19 -- VK_HANJA IME Hanja mode
--0x19 -- VK_KANJI IME Kanji mode
--0x1A -- Undefined
esc = 0x1B, -- VK_ESCAPE ESC key
escape = 0x1B, -- VK_ESCAPE ESC key
--0x1C -- VK_CONVERT IME convert
--0x1D -- VK_NONCONVERT IME nonconvert
--0x1E -- VK_ACCEPT IME accept
--0x1F -- VK_MODECHANGE IME mode change request
spacebar = 0x20, -- VK_SPACE SPACEBAR
page_up = 0x21, -- VK_PRIOR PAGE UP key
page_down = 0x22, -- VK_NEXT PAGE DOWN key
["end"] = 0x23, -- VK_END END key
_end = 0x23, -- VK_END END key
home = 0x24, -- VK_HOME HOME key
left = 0x25, -- VK_LEFT LEFT ARROW key
up = 0x26, -- VK_UP UP ARROW key
right = 0x27, -- VK_RIGHT RIGHT ARROW key
down = 0x28, -- VK_DOWN DOWN ARROW key
--0x29 -- VK_SELECT SELECT key
--0x2A -- VK_PRINT PRINT key
--0x2B -- VK_EXECUTE EXECUTE key
print_screen = 0x2C, -- VK_SNAPSHOT PRINT SCREEN key
insert = 0x2D, -- VK_INSERT INS key
delete = 0x2E, -- VK_DELETE DEL key
--0x2F -- VK_HELP HELP key
["0"] = 0x30, -- 0 key
["1"] = 0x31, -- 1 key
["2"] = 0x32, -- 2 key
["3"] = 0x33, -- 3 key
["4"] = 0x34, -- 4 key
["5"] = 0x35, -- 5 key
["6"] = 0x36, -- 6 key
["7"] = 0x37, -- 7 key
["8"] = 0x38, -- 8 key
["9"] = 0x39, -- 9 key
--0x3A-40 -- Undefined
a = 0x41, -- A key
b = 0x42, -- B key
c = 0x43, -- C key
d = 0x44, -- D key
e = 0x45, -- E key
f = 0x46, -- F key
g = 0x47, -- G key
h = 0x48, -- H key
i = 0x49, -- I key
j = 0x4A, -- J key
k = 0x4B, -- K key
l = 0x4C, -- L key
m = 0x4D, -- M key
n = 0x4E, -- N key
o = 0x4F, -- O key
p = 0x50, -- P key
q = 0x51, -- Q key
r = 0x52, -- R key
s = 0x53, -- S key
t = 0x54, -- T key
u = 0x55, -- U key
v = 0x56, -- V key
w = 0x57, -- W key
x = 0x58, -- X key
y = 0x59, -- Y key
z = 0x5A, -- Z key
A = 0x41, -- A key
B = 0x42, -- B key
C = 0x43, -- C key
D = 0x44, -- D key
E = 0x45, -- E key
F = 0x46, -- F key
G = 0x47, -- G key
H = 0x48, -- H key
I = 0x49, -- I key
J = 0x4A, -- J key
K = 0x4B, -- K key
L = 0x4C, -- L key
M = 0x4D, -- M key
N = 0x4E, -- N key
O = 0x4F, -- O key
P = 0x50, -- P key
Q = 0x51, -- Q key
R = 0x52, -- R key
S = 0x53, -- S key
T = 0x54, -- T key
U = 0x55, -- U key
V = 0x56, -- V key
W = 0x57, -- W key
X = 0x58, -- X key
Y = 0x59, -- Y key
Z = 0x5A, -- Z key
win = 0x5B, -- VK_LWIN Left Windows key (Natural keyboard)
--0x5C -- VK_RWIN Right Windows key (Natural keyboard)
--0x5D -- VK_APPS Applications key (Natural keyboard)
--0x5E -- Reserved
sleep = 0x5F, -- VK_SLEEP Computer Sleep key
num_0 = 0x60, -- VK_NUMPAD0 Numeric keypad 0 key
num_1 = 0x61, -- VK_NUMPAD1 Numeric keypad 1 key
num_2 = 0x62, -- VK_NUMPAD2 Numeric keypad 2 key
num_3 = 0x63, -- VK_NUMPAD3 Numeric keypad 3 key
num_4 = 0x64, -- VK_NUMPAD4 Numeric keypad 4 key
num_5 = 0x65, -- VK_NUMPAD5 Numeric keypad 5 key
num_6 = 0x66, -- VK_NUMPAD6 Numeric keypad 6 key
num_7 = 0x67, -- VK_NUMPAD7 Numeric keypad 7 key
num_8 = 0x68, -- VK_NUMPAD8 Numeric keypad 8 key
num_9 = 0x69, -- VK_NUMPAD9 Numeric keypad 9 key
["num_*"] = 0x6A,
num_multiply = 0x6A, -- VK_MULTIPLY Multiply key
["num_+"] = 0x6B,
num_plus = 0x6B, -- VK_ADD Add key
--0x6C -- VK_SEPARATOR Separator key
["num_-"] = 0x6D,
num_minus = 0x6D, -- VK_SUBTRACT Subtract key
["num_."] = 0x6E,
num_del = 0x6E, -- VK_DECIMAL Decimal key
["num_/"] = 0x6F,
num_devide = 0x6F,
num_slash = 0x6F, -- VK_DIVIDE Divide key
F1 = 0x70, -- VK_F1 F1 key
F2 = 0x71, -- VK_F2 F2 key
F3 = 0x72, -- VK_F3 F3 key
F4 = 0x73, -- VK_F4 F4 key
F5 = 0x74, -- VK_F5 F5 key
F6 = 0x75, -- VK_F6 F6 key
F7 = 0x76, -- VK_F7 F7 key
F8 = 0x77, -- VK_F8 F8 key
F9 = 0x78, -- VK_F9 F9 key
F10 = 0x79, -- VK_F10 F10 key
F11 = 0x7A, -- VK_F11 F11 key
F12 = 0x7B, -- VK_F12 F12 key
F13 = 0x7C, -- VK_F13 F13 key
F14 = 0x7D, -- VK_F14 F14 key
F15 = 0x7E, -- VK_F15 F15 key
F16 = 0x7F, -- VK_F16 F16 key
F17 = 0x80, -- VK_F17 F17 key
F18 = 0x81, -- VK_F18 F18 key
F19 = 0x82, -- VK_F19 F19 key
F20 = 0x83, -- VK_F20 F20 key
F21 = 0x84, -- VK_F21 F21 key
F22 = 0x85, -- VK_F22 F22 key
F23 = 0x86, -- VK_F23 F23 key
F24 = 0x87, -- VK_F24 F24 key
f1 = 0x70, -- VK_F1 F1 key
f2 = 0x71, -- VK_F2 F2 key
f3 = 0x72, -- VK_F3 F3 key
f4 = 0x73, -- VK_F4 F4 key
f5 = 0x74, -- VK_F5 F5 key
f6 = 0x75, -- VK_F6 F6 key
f7 = 0x76, -- VK_F7 F7 key
f8 = 0x77, -- VK_F8 F8 key
f9 = 0x78, -- VK_F9 F9 key
f10 = 0x79, -- VK_F10 F10 key
f11 = 0x7A, -- VK_F11 F11 key
f12 = 0x7B, -- VK_F12 F12 key
f13 = 0x7C, -- VK_F13 F13 key
f14 = 0x7D, -- VK_F14 F14 key
f15 = 0x7E, -- VK_F15 F15 key
f16 = 0x7F, -- VK_F16 F16 key
f17 = 0x80, -- VK_F17 F17 key
f18 = 0x81, -- VK_F18 F18 key
f19 = 0x82, -- VK_F19 F19 key
f20 = 0x83, -- VK_F20 F20 key
f21 = 0x84, -- VK_F21 F21 key
f22 = 0x85, -- VK_F22 F22 key
f23 = 0x86, -- VK_F23 F23 key
f24 = 0x87, -- VK_F24 F24 key
--0x88-8F -- Unassigned
num_lock = 0x90, -- VK_NUMLOCK NUM LOCK key
scroll_lock = 0x91, -- VK_SCROLL SCROLL LOCK key
--0x92-96 -- OEM specific
--0x97-9F -- Unassigned
shift_left = 0xA0, -- VK_LSHIFT Left SHIFT key
shift_right = 0xA1, -- VK_RSHIFT Right SHIFT key
ctrl_left = 0xA2, -- VK_LCONTROL Left CONTROL key
ctrl_right = 0xA3, -- VK_RCONTROL Right CONTROL key
menu_left = 0xA4, -- VK_LMENU Left MENU key
menu_right = 0xA5, -- VK_RMENU Right MENU key
browser_back = 0xA6, -- VK_BROWSER_BACK Browser Back key
browser_forward = 0xA7, -- VK_BROWSER_FORWARD Browser Forward key
browser_refresh = 0xA8, -- VK_BROWSER_REFRESH Browser Refresh key
browser_stop = 0xA9, -- VK_BROWSER_STOP Browser Stop key
browser_search = 0xAA, -- VK_BROWSER_SEARCH Browser Search key
browser_favorites = 0xAB, -- VK_BROWSER_FAVORITES Browser Favorites key
browser_home = 0xAC, -- VK_BROWSER_HOME Browser Start and Home key
mute = 0xAD, -- VK_VOLUME_MUTE Volume Mute key
volume_down = 0xAE, -- VK_VOLUME_DOWN Volume Down key
volume_up = 0xAF, -- VK_VOLUME_UP Volume Up key
media_next = 0xB0, -- VK_MEDIA_NEXT_TRACK Next Track key
media_prev = 0xB1, -- VK_MEDIA_PREV_TRACK Previous Track key
media_stop = 0xB2, -- VK_MEDIA_STOP Stop Media key
media_play = 0xB3, -- VK_MEDIA_PLAY_PAUSE Play/Pause Media key
media_pasue = 0xB3, -- VK_MEDIA_PLAY_PAUSE Play/Pause Media key
launch_mail = 0xB4, -- VK_LAUNCH_MAIL Start Mail key
launch_media = 0xB5, -- VK_LAUNCH_MEDIA_SELECT Select Media key
launch_app_1 = 0xB6, -- VK_LAUNCH_APP1 Start Application 1 key
launch_app_2 = 0xB6, -- VK_LAUNCH_APP1 Start Application 2 key
--0xB8-B9 -- Reserved
[";"] = 0xBA, -- VK_OEM_1 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ';:' key
[":"] = 0xBA, -- VK_OEM_1 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ';:' key
["+"] = 0xBB, -- VK_OEM_PLUS For any country/region, the '+' key
[","] = 0xBC, -- VK_OEM_COMMA For any country/region, the ',' key
["-"] = 0xBD, -- VK_OEM_MINUS For any country/region, the '-' key
["."] = 0xBE, -- VK_OEM_PERIOD For any country/region, the '.' key
["/"] = 0xBF, -- VK_OEM_2 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '/?' key
["?"] = 0xBF, -- VK_OEM_2 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '/?' key
["`"] = 0xC0, -- VK_OEM_3 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '`~' key
["~"] = 0xC0, -- VK_OEM_3 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '`~' key
--0xC1-D7 -- Reserved
--0xD8-DA -- Unassigned
["["] = 0xDB, -- VK_OEM_4 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '[{' key
["{"] = 0xDB, -- VK_OEM_4 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '[{' key
["\\"] = 0xDC, -- VK_OEM_5 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '\|' key
["|"] = 0xDC, -- VK_OEM_5 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the '\|' key
["]"] = 0xDD, -- VK_OEM_6 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ']}' key
["}"] = 0xDD, -- VK_OEM_6 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the ']}' key
["'"] = 0xDE, -- VK_OEM_7 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the 'single-quote/double-quote' key
['"'] = 0xDE, -- VK_OEM_7 Used for miscellaneous characters; it can vary by keyboard. For the US standard keyboard, the 'single-quote/double-quote' key
--0xDF -- VK_OEM_8 Used for miscellaneous characters; it can vary by keyboard.
--0xDF -- VK_OEM_8 Used for miscellaneous characters; it can vary by keyboard.
--0xE0 -- Reserved
--0xE1 -- OEM specific
--0xE2 -- VK_OEM_102 Either the angle bracket key or the backslash key on the RT 102-key keyboard
--0xE3-E4 -- OEM specific
--0xE5 -- VK_PROCESSKEY IME PROCESS key
--0xE6 -- OEM specific
--0xE7 -- VK_PACKET Used to pass Unicode characters as if they were keystrokes. The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Remark in KEYBDINPUT, SendInput, WM_KEYDOWN, and WM_KEYUP
--0xE8 -- Unassigned
--0xE9-F5 -- OEM specific
--0xF6 -- VK_ATTN Attn key
--0xF7 -- VK_CRSEL CrSel key
--0xF8 -- VK_EXSEL ExSel key
--0xF9 -- VK_EREOF Erase EOF key
play = 0xFA, -- VK_PLAY Play key
zoom = 0xFB, -- VK_ZOOM Zoom key
--0xFC -- VK_NONAME Reserved
--0xFD -- VK_PA1 PA1 key
--0xFE -- VK_OEM_CLEAR Clear key
}
return key