1 /** 2 * @fileOverview some keycodes definition and utils from closure-library 3 * @author yiminghe@gmail.com 4 */ 5 KISSY.add("event/keycodes", function() { 6 var KeyCodes = { 7 MAC_ENTER: 3, 8 BACKSPACE: 8, 9 TAB: 9, 10 NUM_CENTER: 12, // NUMLOCK on FF/Safari Mac 11 ENTER: 13, 12 SHIFT: 16, 13 CTRL: 17, 14 ALT: 18, 15 PAUSE: 19, 16 CAPS_LOCK: 20, 17 ESC: 27, 18 SPACE: 32, 19 PAGE_UP: 33, // also NUM_NORTH_EAST 20 PAGE_DOWN: 34, // also NUM_SOUTH_EAST 21 END: 35, // also NUM_SOUTH_WEST 22 HOME: 36, // also NUM_NORTH_WEST 23 LEFT: 37, // also NUM_WEST 24 UP: 38, // also NUM_NORTH 25 RIGHT: 39, // also NUM_EAST 26 DOWN: 40, // also NUM_SOUTH 27 PRINT_SCREEN: 44, 28 INSERT: 45, // also NUM_INSERT 29 DELETE: 46, // also NUM_DELETE 30 ZERO: 48, 31 ONE: 49, 32 TWO: 50, 33 THREE: 51, 34 FOUR: 52, 35 FIVE: 53, 36 SIX: 54, 37 SEVEN: 55, 38 EIGHT: 56, 39 NINE: 57, 40 QUESTION_MARK: 63, // needs localization 41 A: 65, 42 B: 66, 43 C: 67, 44 D: 68, 45 E: 69, 46 F: 70, 47 G: 71, 48 H: 72, 49 I: 73, 50 J: 74, 51 K: 75, 52 L: 76, 53 M: 77, 54 N: 78, 55 O: 79, 56 P: 80, 57 Q: 81, 58 R: 82, 59 S: 83, 60 T: 84, 61 U: 85, 62 V: 86, 63 W: 87, 64 X: 88, 65 Y: 89, 66 Z: 90, 67 META: 91, // WIN_KEY_LEFT 68 WIN_KEY_RIGHT: 92, 69 CONTEXT_MENU: 93, 70 NUM_ZERO: 96, 71 NUM_ONE: 97, 72 NUM_TWO: 98, 73 NUM_THREE: 99, 74 NUM_FOUR: 100, 75 NUM_FIVE: 101, 76 NUM_SIX: 102, 77 NUM_SEVEN: 103, 78 NUM_EIGHT: 104, 79 NUM_NINE: 105, 80 NUM_MULTIPLY: 106, 81 NUM_PLUS: 107, 82 NUM_MINUS: 109, 83 NUM_PERIOD: 110, 84 NUM_DIVISION: 111, 85 F1: 112, 86 F2: 113, 87 F3: 114, 88 F4: 115, 89 F5: 116, 90 F6: 117, 91 F7: 118, 92 F8: 119, 93 F9: 120, 94 F10: 121, 95 F11: 122, 96 F12: 123, 97 NUMLOCK: 144, 98 SEMICOLON: 186, // needs localization 99 DASH: 189, // needs localization 100 EQUALS: 187, // needs localization 101 COMMA: 188, // needs localization 102 PERIOD: 190, // needs localization 103 SLASH: 191, // needs localization 104 APOSTROPHE: 192, // needs localization 105 SINGLE_QUOTE: 222, // needs localization 106 OPEN_SQUARE_BRACKET: 219, // needs localization 107 BACKSLASH: 220, // needs localization 108 CLOSE_SQUARE_BRACKET: 221, // needs localization 109 WIN_KEY: 224, 110 MAC_FF_META: 224, // Firefox (Gecko) fires this for the meta key instead of 91 111 WIN_IME: 229 112 }; 113 114 KeyCodes.isTextModifyingKeyEvent = function(e) { 115 if (e.altKey && !e.ctrlKey || 116 e.metaKey || 117 // Function keys don't generate text 118 e.keyCode >= KeyCodes.F1 && 119 e.keyCode <= KeyCodes.F12) { 120 return false; 121 } 122 123 // The following keys are quite harmless, even in combination with 124 // CTRL, ALT or SHIFT. 125 switch (e.keyCode) { 126 case KeyCodes.ALT: 127 case KeyCodes.CAPS_LOCK: 128 case KeyCodes.CONTEXT_MENU: 129 case KeyCodes.CTRL: 130 case KeyCodes.DOWN: 131 case KeyCodes.END: 132 case KeyCodes.ESC: 133 case KeyCodes.HOME: 134 case KeyCodes.INSERT: 135 case KeyCodes.LEFT: 136 case KeyCodes.MAC_FF_META: 137 case KeyCodes.META: 138 case KeyCodes.NUMLOCK: 139 case KeyCodes.NUM_CENTER: 140 case KeyCodes.PAGE_DOWN: 141 case KeyCodes.PAGE_UP: 142 case KeyCodes.PAUSE: 143 case KeyCodes.PHANTOM: 144 case KeyCodes.PRINT_SCREEN: 145 case KeyCodes.RIGHT: 146 case KeyCodes.SHIFT: 147 case KeyCodes.UP: 148 case KeyCodes.WIN_KEY: 149 case KeyCodes.WIN_KEY_RIGHT: 150 return false; 151 default: 152 return true; 153 } 154 }; 155 156 KeyCodes.isCharacterKey = function(keyCode) { 157 if (keyCode >= KeyCodes.ZERO && 158 keyCode <= KeyCodes.NINE) { 159 return true; 160 } 161 162 if (keyCode >= KeyCodes.NUM_ZERO && 163 keyCode <= KeyCodes.NUM_MULTIPLY) { 164 return true; 165 } 166 167 if (keyCode >= KeyCodes.A && 168 keyCode <= KeyCodes.Z) { 169 return true; 170 } 171 172 // Safari sends zero key code for non-latin characters. 173 if (goog.userAgent.WEBKIT && keyCode == 0) { 174 return true; 175 } 176 177 switch (keyCode) { 178 case KeyCodes.SPACE: 179 case KeyCodes.QUESTION_MARK: 180 case KeyCodes.NUM_PLUS: 181 case KeyCodes.NUM_MINUS: 182 case KeyCodes.NUM_PERIOD: 183 case KeyCodes.NUM_DIVISION: 184 case KeyCodes.SEMICOLON: 185 case KeyCodes.DASH: 186 case KeyCodes.EQUALS: 187 case KeyCodes.COMMA: 188 case KeyCodes.PERIOD: 189 case KeyCodes.SLASH: 190 case KeyCodes.APOSTROPHE: 191 case KeyCodes.SINGLE_QUOTE: 192 case KeyCodes.OPEN_SQUARE_BRACKET: 193 case KeyCodes.BACKSLASH: 194 case KeyCodes.CLOSE_SQUARE_BRACKET: 195 return true; 196 default: 197 return false; 198 } 199 }; 200 201 return KeyCodes; 202 203 });