export default class KeyCode { /** * MAC_ENTER */ static MAC_ENTER = 3; /** * BACKSPACE */ static BACKSPACE = 8; /** * TAB */ static TAB = 9; /** * NUMLOCK on FF/Safari Mac */ static NUM_CENTER = 12; // NUMLOCK on FF/Safari Mac /** * ENTER */ static ENTER = 13; /** * SHIFT */ static SHIFT = 16; /** * CTRL */ static CTRL = 17; /** * ALT */ static ALT = 18; /** * PAUSE */ static PAUSE = 19; /** * CAPS_LOCK */ static CAPS_LOCK = 20; /** * ESC */ static ESC = 27; /** * SPACE */ static SPACE = 32; /** * PAGE_UP */ static PAGE_UP = 33; // also NUM_NORTH_EAST /** * PAGE_DOWN */ static PAGE_DOWN = 34; // also NUM_SOUTH_EAST /** * END */ static END = 35; // also NUM_SOUTH_WEST /** * HOME */ static HOME = 36; // also NUM_NORTH_WEST /** * LEFT */ static LEFT = 37; // also NUM_WEST /** * UP */ static UP = 38; // also NUM_NORTH /** * RIGHT */ static RIGHT = 39; // also NUM_EAST /** * DOWN */ static DOWN = 40; // also NUM_SOUTH /** * PRINT_SCREEN */ static PRINT_SCREEN = 44; /** * INSERT */ static INSERT = 45; // also NUM_INSERT /** * DELETE */ static DELETE = 46; // also NUM_DELETE /** * ZERO */ static ZERO = 48; /** * ONE */ static ONE = 49; /** * TWO */ static TWO = 50; /** * THREE */ static THREE = 51; /** * FOUR */ static FOUR = 52; /** * FIVE */ static FIVE = 53; /** * SIX */ static SIX = 54; /** * SEVEN */ static SEVEN = 55; /** * EIGHT */ static EIGHT = 56; /** * NINE */ static NINE = 57; /** * QUESTION_MARK */ static QUESTION_MARK = 63; // needs localization /** * A */ static A = 65; /** * B */ static B = 66; /** * C */ static C = 67; /** * D */ static D = 68; /** * E */ static E = 69; /** * F */ static F = 70; /** * G */ static G = 71; /** * H */ static H = 72; /** * I */ static I = 73; /** * J */ static J = 74; /** * K */ static K = 75; /** * L */ static L = 76; /** * M */ static M = 77; /** * N */ static N = 78; /** * O */ static O = 79; /** * P */ static P = 80; /** * Q */ static Q = 81; /** * R */ static R = 82; /** * S */ static S = 83; /** * T */ static T = 84; /** * U */ static U = 85; /** * V */ static V = 86; /** * W */ static W = 87; /** * X */ static X = 88; /** * Y */ static Y = 89; /** * Z */ static Z = 90; /** * META */ static META = 91; // WIN_KEY_LEFT /** * WIN_KEY_RIGHT */ static WIN_KEY_RIGHT = 92; /** * CONTEXT_MENU */ static CONTEXT_MENU = 93; /** * NUM_ZERO */ static NUM_ZERO = 96; /** * NUM_ONE */ static NUM_ONE = 97; /** * NUM_TWO */ static NUM_TWO = 98; /** * NUM_THREE */ static NUM_THREE = 99; /** * NUM_FOUR */ static NUM_FOUR = 100; /** * NUM_FIVE */ static NUM_FIVE = 101; /** * NUM_SIX */ static NUM_SIX = 102; /** * NUM_SEVEN */ static NUM_SEVEN = 103; /** * NUM_EIGHT */ static NUM_EIGHT = 104; /** * NUM_NINE */ static NUM_NINE = 105; /** * NUM_MULTIPLY */ static NUM_MULTIPLY = 106; /** * NUM_PLUS */ static NUM_PLUS = 107; /** * NUM_MINUS */ static NUM_MINUS = 109; /** * NUM_PERIOD */ static NUM_PERIOD = 110; /** * NUM_DIVISION */ static NUM_DIVISION = 111; /** * F1 */ static F1 = 112; /** * F2 */ static F2 = 113; /** * F3 */ static F3 = 114; /** * F4 */ static F4 = 115; /** * F5 */ static F5 = 116; /** * F6 */ static F6 = 117; /** * F7 */ static F7 = 118; /** * F8 */ static F8 = 119; /** * F9 */ static F9 = 120; /** * F10 */ static F10 = 121; /** * F11 */ static F11 = 122; /** * F12 */ static F12 = 123; /** * NUMLOCK */ static NUMLOCK = 144; /** * SEMICOLON */ static SEMICOLON = 186; // needs localization /** * DASH */ static DASH = 189; // needs localization /** * EQUALS */ static EQUALS = 187; // needs localization /** * COMMA */ static COMMA = 188; // needs localization /** * PERIOD */ static PERIOD = 190; // needs localization /** * SLASH */ static SLASH = 191; // needs localization /** * APOSTROPHE */ static APOSTROPHE = 192; // needs localization /** * SINGLE_QUOTE */ static SINGLE_QUOTE = 222; // needs localization /** * OPEN_SQUARE_BRACKET */ static OPEN_SQUARE_BRACKET = 219; // needs localization /** * BACKSLASH */ static BACKSLASH = 220; // needs localization /** * CLOSE_SQUARE_BRACKET */ static CLOSE_SQUARE_BRACKET = 221; // needs localization /** * WIN_KEY */ static WIN_KEY = 224; /** * MAC_FF_META */ static MAC_FF_META = 224; // Firefox (Gecko) fires this for the meta key instead of 91 /** * WIN_IME */ static WIN_IME = 229; /* whether text and modified key is entered at the same time. */ static isTextModifyingKeyEvent(e) { const keyCode = e.keyCode; if ( (e.altKey && !e.ctrlKey) || e.metaKey || // Function keys don't generate text (keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) ) { return false; } // The following keys are quite harmless, even in combination with // CTRL, ALT or SHIFT. switch (keyCode) { case KeyCode.ALT: case KeyCode.CAPS_LOCK: case KeyCode.CONTEXT_MENU: case KeyCode.CTRL: case KeyCode.DOWN: case KeyCode.END: case KeyCode.ESC: case KeyCode.HOME: case KeyCode.INSERT: case KeyCode.LEFT: case KeyCode.MAC_FF_META: case KeyCode.META: case KeyCode.NUMLOCK: case KeyCode.NUM_CENTER: case KeyCode.PAGE_DOWN: case KeyCode.PAGE_UP: case KeyCode.PAUSE: case KeyCode.PRINT_SCREEN: case KeyCode.RIGHT: case KeyCode.SHIFT: case KeyCode.UP: case KeyCode.WIN_KEY: case KeyCode.WIN_KEY_RIGHT: return false; default: return true; } } /* whether character is entered. */ static isCharacterKey(keyCode) { if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) { return true; } if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) { return true; } if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) { return true; } // Safari sends zero key code for non-latin characters. if ( keyCode === 0 && typeof window !== 'undefined' && window.navigator.userAgent.indexOf('WebKit') !== -1 ) { return true; } switch (keyCode) { case KeyCode.SPACE: case KeyCode.QUESTION_MARK: case KeyCode.NUM_PLUS: case KeyCode.NUM_MINUS: case KeyCode.NUM_PERIOD: case KeyCode.NUM_DIVISION: case KeyCode.SEMICOLON: case KeyCode.DASH: case KeyCode.EQUALS: case KeyCode.COMMA: case KeyCode.PERIOD: case KeyCode.SLASH: case KeyCode.APOSTROPHE: case KeyCode.SINGLE_QUOTE: case KeyCode.OPEN_SQUARE_BRACKET: case KeyCode.BACKSLASH: case KeyCode.CLOSE_SQUARE_BRACKET: return true; default: return false; } } }