@csegames/camelot-unchained
Version:
Camelot Unchained Client Library
474 lines (300 loc) • 15.1 kB
text/typescript
import js from './keyCodes';
import vk from './VK_KeyCodes';
export function getVirtualKeyCode(jsCode: number) {
switch (jsCode) {
case js.KEY_Backspace: return vk.VK_BACK;
case js.KEY_Tab: return vk.VK_TAB;
case js.KEY_Enter: return vk.VK_RETURN;
case js.KEY_Shift: return vk.VK_SHIFT;
case js.KEY_Ctrl: return vk.VK_CONTROL;
case js.KEY_Alt: return vk.VK_MENU;
case js.KEY_PauseBreak: return vk.VK_PAUSE;
case js.KEY_CapsLock: return vk.VK_CAPITAL;
case js.KEY_Escape: return vk.VK_ESCAPE;
case js.KEY_Spacebar: return vk.VK_SPACE;
case js.KEY_PageUp: return vk.VK_PRIOR;
case js.KEY_PageDown: return vk.VK_NEXT;
case js.KEY_End: return vk.VK_END;
case js.KEY_Home: return vk.VK_HOME;
case js.KEY_LeftArrow: return vk.VK_LEFT;
case js.KEY_UpArrow: return vk.VK_UP;
case js.KEY_RightArrow: return vk.VK_RIGHT;
case js.KEY_DownArrow: return vk.VK_DOWN;
case js.KEY_PrintScrn: return vk.VK_PRINT;
case js.KEY_Insert: return vk.VK_INSERT;
case js.KEY_Delete: return vk.VK_DELETE;
case js.KEY_Zero: return vk.VK_0;
case js.KEY_One: return vk.VK_1;
case js.KEY_Two: return vk.VK_2;
case js.KEY_Three: return vk.VK_3;
case js.KEY_Four: return vk.VK_4;
case js.KEY_Five: return vk.VK_5;
case js.KEY_Six: return vk.VK_6;
case js.KEY_Seven: return vk.VK_7;
case js.KEY_Eight: return vk.VK_8;
case js.KEY_Nine: return vk.VK_9;
case js.KEY_a: return vk.VK_A;
case js.KEY_b: return vk.VK_B;
case js.KEY_c: return vk.VK_C;
case js.KEY_d: return vk.VK_D;
case js.KEY_e: return vk.VK_E;
case js.KEY_f: return vk.VK_F;
case js.KEY_g: return vk.VK_G;
case js.KEY_h: return vk.VK_H;
case js.KEY_i: return vk.VK_I;
case js.KEY_j: return vk.VK_J;
case js.KEY_k: return vk.VK_K;
case js.KEY_l: return vk.VK_L;
case js.KEY_m: return vk.VK_M;
case js.KEY_n: return vk.VK_N;
case js.KEY_o: return vk.VK_O;
case js.KEY_p: return vk.VK_P;
case js.KEY_q: return vk.VK_Q;
case js.KEY_r: return vk.VK_R;
case js.KEY_s: return vk.VK_S;
case js.KEY_t: return vk.VK_T;
case js.KEY_u: return vk.VK_U;
case js.KEY_v: return vk.VK_V;
case js.KEY_w: return vk.VK_W;
case js.KEY_x: return vk.VK_X;
case js.KEY_y: return vk.VK_Y;
case js.KEY_z: return vk.VK_Z;
case js.KEY_LeftWindowKey: return vk.VK_LWIN;
case js.KEY_RightWindowKey: return vk.VK_RWIN;
case js.KEY_SelectKey: return vk.VK_SELECT;
case js.KEY_Numpad0: return vk.VK_NUMPAD0;
case js.KEY_Numpad1: return vk.VK_NUMPAD1;
case js.KEY_Numpad2: return vk.VK_NUMPAD2;
case js.KEY_Numpad3: return vk.VK_NUMPAD3;
case js.KEY_Numpad4: return vk.VK_NUMPAD4;
case js.KEY_Numpad5: return vk.VK_NUMPAD5;
case js.KEY_Numpad6: return vk.VK_NUMPAD6;
case js.KEY_Numpad7: return vk.VK_NUMPAD7;
case js.KEY_Numpad8: return vk.VK_NUMPAD8;
case js.KEY_Numpad9: return vk.VK_NUMPAD9;
case js.KEY_Multiply: return vk.VK_MULTIPLY;
case js.KEY_NumpadPlus: return vk.VK_ADD;
case js.KEY_NumpadMinus: return vk.VK_SUBTRACT;
case js.KEY_DecimalPoint: return vk.VK_DECIMAL;
case js.KEY_Divide: return vk.VK_DIVIDE;
case js.KEY_F1: return vk.VK_F1;
case js.KEY_F2: return vk.VK_F2;
case js.KEY_F3: return vk.VK_F3;
case js.KEY_F4: return vk.VK_F4;
case js.KEY_F5: return vk.VK_F5;
case js.KEY_F6: return vk.VK_F6;
case js.KEY_F7: return vk.VK_F7;
case js.KEY_F8: return vk.VK_F8;
case js.KEY_F9: return vk.VK_F9;
case js.KEY_F10: return vk.VK_F10;
case js.KEY_F11: return vk.VK_F11;
case js.KEY_F12: return vk.VK_F12;
case js.KEY_NumLock: return vk.VK_NUMLOCK;
case js.KEY_ScrollLock: return vk.VK_SCROLL;
case js.KEY_Semicolon: return vk.VK_OEM_1;
case js.KEY_Equals: return vk.VK_OEM_PLUS;
case js.KEY_Comma: return vk.VK_OEM_COMMA;
case js.KEY_LessThan: return vk.VK_OEM_COMMA;
case js.KEY_Minus: return vk.VK_OEM_MINUS;
case js.KEY_Period: return vk.VK_OEM_PERIOD;
case js.KEY_GreaterThan: return vk.VK_OEM_PERIOD;
case js.KEY_ForwardSlash: return vk.VK_OEM_2;
case js.KEY_QuestionMark: return vk.VK_OEM_2;
case js.KEY_GraveAccent: return vk.VK_OEM_3;
case js.KEY_Tilde: return vk.VK_OEM_3;
case js.KEY_OpenCurlyBracket: return vk.VK_OEM_4;
case js.KEY_OpenSquareBracket: return vk.VK_OEM_4;
case js.KEY_BackSlash: return vk.VK_OEM_5;
case js.KEY_VerticalPipe: return vk.VK_OEM_5;
case js.KEY_CloseCurlyBracket: return vk.VK_OEM_6;
case js.KEY_CloseSquareBracket: return vk.VK_OEM_6;
case js.KEY_Quote: return vk.VK_OEM_7;
case js.KEY_CommandFF: return vk.VK_OEM_7;
}
return 0;
}
export function getJSKeyCode(vkCode: number) {
switch (vkCode) {
case vk.VK_LBUTTON: return 0; // Left mouse button
case vk.VK_RBUTTON: return 0; // Right mouse button
case vk.VK_CANCEL: return js.KEY_PauseBreak; // Control-break processing
case vk.VK_MBUTTON: return 0; // Middle mouse button (three-button mouse)
case vk.VK_XBUTTON1: return 0; // X1 mouse button
case vk.VK_XBUTTON2: return 0; // X2 mouse button
case vk.VK_BACK: return js.KEY_Backspace; // BACKSPACE key
case vk.VK_TAB: return js.KEY_Tab; // TAB key
case vk.VK_CLEAR: return js.KEY_NumLock; // CLEAR key
case vk.VK_RETURN: return js.KEY_Enter; // ENTER key
case vk.VK_SHIFT: return js.KEY_Shift; // SHIFT key
case vk.VK_CONTROL: return js.KEY_Ctrl; // CTRL key
case vk.VK_MENU: return js.KEY_Alt; // ALT key
case vk.VK_PAUSE: return js.KEY_PauseBreak; // PAUSE key
case vk.VK_CAPITAL: return js.KEY_CapsLock; // CAPS LOCK key
case vk.VK_KANA: return 0; // IME Kana mode
case vk.VK_JUNJA: return 0; // IME Junja mode
case vk.VK_FINAL: return 0; // IME final mode
case vk.VK_HANJA: return 0; // IME Hanja mode
case vk.VK_KANJI: return 0; // IME Kanji mode
case vk.VK_ESCAPE: return js.KEY_Escape; // ESC key
case vk.VK_CONVERT: return 0; // IME convert
case vk.VK_NONCONVERT: return 0; // IME nonconvert
case vk.VK_ACCEPT: return 0; // IME accept
case vk.VK_MODECHANGE: return 0; // IME mode change request
case vk.VK_SPACE: return js.KEY_Spacebar; // SPACEBAR
case vk.VK_PRIOR: return js.KEY_PageUp; // PAGE UP key
case vk.VK_NEXT: return js.KEY_PageDown; // PAGE DOWN key
case vk.VK_END: return js.KEY_End; // END key
case vk.VK_HOME: return js.KEY_Home; // HOME key
case vk.VK_LEFT: return js.KEY_LeftArrow; // LEFT ARROW key
case vk.VK_UP: return js.KEY_UpArrow; // UP ARROW key
case vk.VK_RIGHT: return js.KEY_RightArrow; // RIGHT ARROW key
case vk.VK_DOWN: return js.KEY_DownArrow; // DOWN ARROW key
case vk.VK_SELECT: return js.KEY_SelectKey; // SELECT key
case vk.VK_PRINT: return js.KEY_PrintScrn; // PRINT key
case vk.VK_EXECUTE: return 0; // EXECUTE key
case vk.VK_SNAPSHOT: return js.KEY_PrintScrn; // PRINT SCREEN key
case vk.VK_INSERT: return js.KEY_Insert; // INS key
case vk.VK_DELETE: return js.KEY_Delete; // DEL key
case vk.VK_HELP: return 0; // HELP key
case vk.VK_0: return js.KEY_Zero;
case vk.VK_1: return js.KEY_One;
case vk.VK_2: return js.KEY_Two;
case vk.VK_3: return js.KEY_Three;
case vk.VK_4: return js.KEY_Four;
case vk.VK_5: return js.KEY_Five;
case vk.VK_6: return js.KEY_Six;
case vk.VK_7: return js.KEY_Seven;
case vk.VK_8: return js.KEY_Eight;
case vk.VK_9: return js.KEY_Nine;
case vk.VK_A: return js.KEY_a;
case vk.VK_B: return js.KEY_b;
case vk.VK_C: return js.KEY_c;
case vk.VK_D: return js.KEY_d;
case vk.VK_E: return js.KEY_e;
case vk.VK_F: return js.KEY_f;
case vk.VK_G: return js.KEY_g;
case vk.VK_H: return js.KEY_h;
case vk.VK_I: return js.KEY_i;
case vk.VK_J: return js.KEY_j;
case vk.VK_K: return js.KEY_k;
case vk.VK_L: return js.KEY_l;
case vk.VK_M: return js.KEY_m;
case vk.VK_N: return js.KEY_n;
case vk.VK_O: return js.KEY_o;
case vk.VK_P: return js.KEY_p;
case vk.VK_Q: return js.KEY_q;
case vk.VK_R: return js.KEY_r;
case vk.VK_S: return js.KEY_s;
case vk.VK_T: return js.KEY_t;
case vk.VK_U: return js.KEY_u;
case vk.VK_V: return js.KEY_v;
case vk.VK_W: return js.KEY_w;
case vk.VK_X: return js.KEY_x;
case vk.VK_Y: return js.KEY_y;
case vk.VK_Z: return js.KEY_z;
case vk.VK_LWIN: return js.KEY_LeftWindowKey; // Left Windows key (Natural keyboard)
case vk.VK_RWIN: return js.KEY_RightWindowKey; // Right Windows key (Natural keyboard)
case vk.VK_APPS: return 0; // Applications key (Natural keyboard)
case vk.VK_SLEEP: return 0; // Computer Sleep key
case vk.VK_NUMPAD0: return js.KEY_Numpad0; // Numeric keypad 0 key
case vk.VK_NUMPAD1: return js.KEY_Numpad1; // Numeric keypad 1 key
case vk.VK_NUMPAD2: return js.KEY_Numpad2; // Numeric keypad 2 key
case vk.VK_NUMPAD3: return js.KEY_Numpad3; // Numeric keypad 3 key
case vk.VK_NUMPAD4: return js.KEY_Numpad4; // Numeric keypad 4 key
case vk.VK_NUMPAD5: return js.KEY_Numpad5; // Numeric keypad 5 key
case vk.VK_NUMPAD6: return js.KEY_Numpad6; // Numeric keypad 6 key
case vk.VK_NUMPAD7: return js.KEY_Numpad7; // Numeric keypad 7 key
case vk.VK_NUMPAD8: return js.KEY_Numpad8; // Numeric keypad 8 key
case vk.VK_NUMPAD9: return js.KEY_Numpad9; // Numeric keypad 9 key
case vk.VK_MULTIPLY: return js.KEY_Multiply; // Multiply key
case vk.VK_ADD: return js.KEY_NumpadPlus; // Add key
case vk.VK_SEPARATOR: return 0; // Separator key
case vk.VK_SUBTRACT: return js.KEY_NumpadMinus; // Subtract key
case vk.VK_DECIMAL: return js.KEY_DecimalPoint; // Decimal key
case vk.VK_DIVIDE: return js.KEY_Divide; // Divide key
case vk.VK_F1: return js.KEY_F1; // F1 key
case vk.VK_F2: return js.KEY_F2; // F2 key
case vk.VK_F3: return js.KEY_F3; // F3 key
case vk.VK_F4: return js.KEY_F4; // F4 key
case vk.VK_F5: return js.KEY_F5; // F5 key
case vk.VK_F6: return js.KEY_F6; // F6 key
case vk.VK_F7: return js.KEY_F7; // F7 key
case vk.VK_F8: return js.KEY_F8; // F8 key
case vk.VK_F9: return js.KEY_F9; // F9 key
case vk.VK_F10: return js.KEY_F10; // F10 key
case vk.VK_F11: return js.KEY_F11; // F11 key
case vk.VK_F12: return js.KEY_F12; // F12 key
case vk.VK_F13: return 0; // F13 key
case vk.VK_F14: return 0; // F14 key
case vk.VK_F15: return 0; // F15 key
case vk.VK_F16: return 0; // F16 key
case vk.VK_F17: return 0; // F17 key
case vk.VK_F18: return 0; // F18 key
case vk.VK_F19: return 0; // F19 key
case vk.VK_F20: return 0; // F20 key
case vk.VK_F21: return 0; // F21 key
case vk.VK_F22: return 0; // F22 key
case vk.VK_F23: return 0; // F23 key
case vk.VK_F24: return 0; // F24 key
case vk.VK_NUMLOCK: return js.KEY_NumLock; // NUM LOCK key
case vk.VK_SCROLL: return js.KEY_ScrollLock; // SCROLL LOCK key
case vk.VK_LSHIFT: return js.KEY_Shift; // Left SHIFT key
case vk.VK_RSHIFT: return js.KEY_Shift; // Right SHIFT key
case vk.VK_LCONTROL: return js.KEY_Ctrl; // Left CONTROL key
case vk.VK_RCONTROL: return js.KEY_Ctrl; // Right CONTROL key
case vk.VK_LMENU: return js.KEY_Alt; // Left MENU key
case vk.VK_RMENU: return js.KEY_Alt; // Right MENU key
case vk.VK_BROWSER_BACK: return 0; // Browser Back key
case vk.VK_BROWSER_FORWARD: return 0; // Browser Forward key
case vk.VK_BROWSER_REFRESH: return 0; // Browser Refresh key
case vk.VK_BROWSER_STOP: return 0; // Browser Stop key
case vk.VK_BROWSER_SEARCH: return 0; // Browser Search key
case vk.VK_BROWSER_FAVORITES: return 0; // Browser Favorites key
case vk.VK_BROWSER_HOME: return 0; // Browser Start and Home key
case vk.VK_VOLUME_MUTE: return 0; // Volume Mute key
case vk.VK_VOLUME_DOWN: return 0; // Volume Down key
case vk.VK_VOLUME_UP: return 0; // Volume Up key
case vk.VK_MEDIA_NEXT_TRACK: return 0; // Next Track key
case vk.VK_MEDIA_PREV_TRACK: return 0; // Previous Track key
case vk.VK_MEDIA_STOP: return 0; // Stop Media key
case vk.VK_MEDIA_PLAY_PAUSE: return 0; // Play/Pause Media key
case vk.VK_LAUNCH_MAIL: return 0; // Start Mail key
case vk.VK_LAUNCH_MEDIA_SELECT: return 0; // Select Media key
case vk.VK_LAUNCH_APP1: return 0; // Start Application 1 key
case vk.VK_LAUNCH_APP2: return 0; // Start Application 2 key
case vk.VK_OEM_1: return js.KEY_Semicolon; // Used for miscellaneous characters; it can vary by keyboard.
// For the US standard keyboard, the ';:' key
case vk.VK_OEM_PLUS: return js.KEY_Equals; // For any country/region, the '+' key
case vk.VK_OEM_COMMA: return js.KEY_Comma; // For any country/region, the ',' key
case vk.VK_OEM_MINUS: return js.KEY_Minus; // For any country/region, the '-' key
case vk.VK_OEM_PERIOD: return js.KEY_Period; // For any country/region, the '.' key
case vk.VK_OEM_2: return js.KEY_ForwardSlash; // Used for miscellaneous characters; it can vary by keyboard.
// For the US standard keyboard, the '/?' key
case vk.VK_OEM_3: return js.KEY_GraveAccent; // Used for miscellaneous characters; it can vary by keyboard.
// For the US standard keyboard, the '`~' key
case vk.VK_OEM_4: return js.KEY_OpenSquareBracket; // Used for miscellaneous characters; it can vary by keyboard.
// For the US standard keyboard, the '[{' key
case vk.VK_OEM_5: return js.KEY_BackSlash; // Used for miscellaneous characters; it can vary by keyboard.
// For the US standard keyboard, the '\|' key
case vk.VK_OEM_6: return js.KEY_CloseSquareBracket; // Used for miscellaneous characters; it can vary by keyboard.
// For the US standard keyboard, the ']}' key
case vk.VK_OEM_7: return js.KEY_Quote; // Used for miscellaneous characters; it can vary by keyboard.
// For the US standard keyboard, the 'single-quote/double-quote' key
case vk.VK_OEM_8: return 0; // Used for miscellaneous characters; it can vary by keyboard.
case vk.VK_OEM_102: return js.KEY_BackSlash;
// Either the angle bracket key or the backslash key on the RT 102-key keyboard
case vk.VK_PROCESSKEY: return 0; // IME PROCESS key
case vk.VK_PACKET: return 0; // case vk.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
case vk.VK_CRSEL: return 0; // CrSel key
case vk.VK_EXSEL: return 0; // ExSel key
case vk.VK_EREOF: return 0; // Erase EOF key
case vk.VK_PLAY: return 0; // Play key
case vk.VK_ZOOM: return 0; // Zoom key
case vk.VK_NONAME: return 0; // Reserved
case vk.VK_PA1: return 0; // PA1 key
case vk.VK_OEM_CLEAR: return 0; // Clear key
}
return 0;
}