Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(386)

Side by Side Diff: ui/events/keycodes/keyboard_code_conversion_mac.mm

Issue 809773006: MacViews: Intercept events for Menus (after AppKit has interpreted keystrokes) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@20141205-MacViews-AcceleratedWidget-PLUS-AddingLayers-fromcl-PLUS-bringup
Patch Set: A few more cleanups Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "ui/events/keycodes/keyboard_code_conversion_mac.h" 5 #import "ui/events/keycodes/keyboard_code_conversion_mac.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #import <Carbon/Carbon.h> 9 #import <Carbon/Carbon.h>
10 10
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 { VKEY_PLAY /* 0xFA */, -1, 0 }, 196 { VKEY_PLAY /* 0xFA */, -1, 0 },
197 { VKEY_ZOOM /* 0xFB */, -1, 0 }, 197 { VKEY_ZOOM /* 0xFB */, -1, 0 },
198 { VKEY_NONAME /* 0xFC */, -1, 0 }, 198 { VKEY_NONAME /* 0xFC */, -1, 0 },
199 { VKEY_PA1 /* 0xFD */, -1, 0 }, 199 { VKEY_PA1 /* 0xFD */, -1, 0 },
200 { VKEY_OEM_CLEAR /* 0xFE */, kVK_ANSI_KeypadClear, kClearCharCode } 200 { VKEY_OEM_CLEAR /* 0xFE */, kVK_ANSI_KeypadClear, kClearCharCode }
201 }; 201 };
202 202
203 // A convenient array for getting symbol characters on the number keys. 203 // A convenient array for getting symbol characters on the number keys.
204 const char kShiftCharsForNumberKeys[] = ")!@#$%^&*("; 204 const char kShiftCharsForNumberKeys[] = ")!@#$%^&*(";
205 205
206 // Translates from character code to keyboard code.
207 KeyboardCode KeyboardCodeFromCharCode(unichar charCode) {
208 switch (charCode) {
209 case 8: case 0x7F: return VKEY_BACK;
210 case 9: return VKEY_TAB;
211 case 0xD: case 3: return VKEY_RETURN;
212 case 0x1B: return VKEY_ESCAPE;
213 case ' ': return VKEY_SPACE;
214 case NSHomeFunctionKey: return VKEY_HOME;
215 case NSEndFunctionKey: return VKEY_END;
216 case NSPageUpFunctionKey: return VKEY_PRIOR;
217 case NSPageDownFunctionKey: return VKEY_NEXT;
218 case NSUpArrowFunctionKey: return VKEY_UP;
219 case NSDownArrowFunctionKey: return VKEY_DOWN;
220 case NSLeftArrowFunctionKey: return VKEY_LEFT;
221 case NSRightArrowFunctionKey: return VKEY_RIGHT;
222 case NSDeleteFunctionKey: return VKEY_DELETE;
223
224 case '0': case ')': return VKEY_0;
225 case '1': case '!': return VKEY_1;
226 case '2': case '@': return VKEY_2;
227 case '3': case '#': return VKEY_3;
228 case '4': case '$': return VKEY_4;
229 case '5': case '%': return VKEY_5;
230 case '6': case '^': return VKEY_6;
231 case '7': case '&': return VKEY_7;
232 case '8': case '*': return VKEY_8;
233 case '9': case '(': return VKEY_9;
234
235 case 'a': case 'A': return VKEY_A;
236 case 'b': case 'B': return VKEY_B;
237 case 'c': case 'C': return VKEY_C;
238 case 'd': case 'D': return VKEY_D;
239 case 'e': case 'E': return VKEY_E;
240 case 'f': case 'F': return VKEY_F;
241 case 'g': case 'G': return VKEY_G;
242 case 'h': case 'H': return VKEY_H;
243 case 'i': case 'I': return VKEY_I;
244 case 'j': case 'J': return VKEY_J;
245 case 'k': case 'K': return VKEY_K;
246 case 'l': case 'L': return VKEY_L;
247 case 'm': case 'M': return VKEY_M;
248 case 'n': case 'N': return VKEY_N;
249 case 'o': case 'O': return VKEY_O;
250 case 'p': case 'P': return VKEY_P;
251 case 'q': case 'Q': return VKEY_Q;
252 case 'r': case 'R': return VKEY_R;
253 case 's': case 'S': return VKEY_S;
254 case 't': case 'T': return VKEY_T;
255 case 'u': case 'U': return VKEY_U;
256 case 'v': case 'V': return VKEY_V;
257 case 'w': case 'W': return VKEY_W;
258 case 'x': case 'X': return VKEY_X;
259 case 'y': case 'Y': return VKEY_Y;
260 case 'z': case 'Z': return VKEY_Z;
261
262 case NSPauseFunctionKey: return VKEY_PAUSE;
263 case NSSelectFunctionKey: return VKEY_SELECT;
264 case NSPrintFunctionKey: return VKEY_PRINT;
265 case NSExecuteFunctionKey: return VKEY_EXECUTE;
266 case NSPrintScreenFunctionKey: return VKEY_SNAPSHOT;
267 case NSInsertFunctionKey: return VKEY_INSERT;
268 case NSHelpFunctionKey: return VKEY_INSERT;
269
270 case NSF1FunctionKey: return VKEY_F1;
271 case NSF2FunctionKey: return VKEY_F2;
272 case NSF3FunctionKey: return VKEY_F3;
273 case NSF4FunctionKey: return VKEY_F4;
274 case NSF5FunctionKey: return VKEY_F5;
275 case NSF6FunctionKey: return VKEY_F6;
276 case NSF7FunctionKey: return VKEY_F7;
277 case NSF8FunctionKey: return VKEY_F8;
278 case NSF9FunctionKey: return VKEY_F9;
279 case NSF10FunctionKey: return VKEY_F10;
280 case NSF11FunctionKey: return VKEY_F11;
281 case NSF12FunctionKey: return VKEY_F12;
282 case NSF13FunctionKey: return VKEY_F13;
283 case NSF14FunctionKey: return VKEY_F14;
284 case NSF15FunctionKey: return VKEY_F15;
285 case NSF16FunctionKey: return VKEY_F16;
286 case NSF17FunctionKey: return VKEY_F17;
287 case NSF18FunctionKey: return VKEY_F18;
288 case NSF19FunctionKey: return VKEY_F19;
289 case NSF20FunctionKey: return VKEY_F20;
290
291 case NSF21FunctionKey: return VKEY_F21;
292 case NSF22FunctionKey: return VKEY_F22;
293 case NSF23FunctionKey: return VKEY_F23;
294 case NSF24FunctionKey: return VKEY_F24;
295 case NSScrollLockFunctionKey: return VKEY_SCROLL;
296
297 // U.S. Specific mappings. Mileage may vary.
298 case ';': case ':': return VKEY_OEM_1;
299 case '=': case '+': return VKEY_OEM_PLUS;
300 case ',': case '<': return VKEY_OEM_COMMA;
301 case '-': case '_': return VKEY_OEM_MINUS;
302 case '.': case '>': return VKEY_OEM_PERIOD;
303 case '/': case '?': return VKEY_OEM_2;
304 case '`': case '~': return VKEY_OEM_3;
305 case '[': case '{': return VKEY_OEM_4;
306 case '\\': case '|': return VKEY_OEM_5;
307 case ']': case '}': return VKEY_OEM_6;
308 case '\'': case '"': return VKEY_OEM_7;
309 }
310
311 return VKEY_UNKNOWN;
312 }
313
314 KeyboardCode KeyboardCodeFromKeyCode(unsigned short keyCode) { 206 KeyboardCode KeyboardCodeFromKeyCode(unsigned short keyCode) {
315 static const KeyboardCode kKeyboardCodes[] = { 207 static const KeyboardCode kKeyboardCodes[] = {
316 /* 0 */ VKEY_A, 208 /* 0 */ VKEY_A,
317 /* 1 */ VKEY_S, 209 /* 1 */ VKEY_S,
318 /* 2 */ VKEY_D, 210 /* 2 */ VKEY_D,
319 /* 3 */ VKEY_F, 211 /* 3 */ VKEY_F,
320 /* 4 */ VKEY_H, 212 /* 4 */ VKEY_H,
321 /* 5 */ VKEY_G, 213 /* 5 */ VKEY_G,
322 /* 6 */ VKEY_Z, 214 /* 6 */ VKEY_Z,
323 /* 7 */ VKEY_X, 215 /* 7 */ VKEY_X,
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 default: 411 default:
520 break; 412 break;
521 } 413 }
522 } 414 }
523 } 415 }
524 416
525 // TODO(suzhe): Support characters for Option key bindings. 417 // TODO(suzhe): Support characters for Option key bindings.
526 return macKeycode; 418 return macKeycode;
527 } 419 }
528 420
421 // Translates from character code to keyboard code.
422 KeyboardCode KeyboardCodeFromCharCode(unichar charCode) {
423 switch (charCode) {
424 case 8: case 0x7F: return VKEY_BACK;
425 case 9: return VKEY_TAB;
426 case 0xD: case 3: return VKEY_RETURN;
427 case 0x1B: return VKEY_ESCAPE;
428 case ' ': return VKEY_SPACE;
429 case NSHomeFunctionKey: return VKEY_HOME;
430 case NSEndFunctionKey: return VKEY_END;
431 case NSPageUpFunctionKey: return VKEY_PRIOR;
432 case NSPageDownFunctionKey: return VKEY_NEXT;
433 case NSUpArrowFunctionKey: return VKEY_UP;
434 case NSDownArrowFunctionKey: return VKEY_DOWN;
435 case NSLeftArrowFunctionKey: return VKEY_LEFT;
436 case NSRightArrowFunctionKey: return VKEY_RIGHT;
437 case NSDeleteFunctionKey: return VKEY_DELETE;
438
439 case '0': case ')': return VKEY_0;
440 case '1': case '!': return VKEY_1;
441 case '2': case '@': return VKEY_2;
442 case '3': case '#': return VKEY_3;
443 case '4': case '$': return VKEY_4;
444 case '5': case '%': return VKEY_5;
445 case '6': case '^': return VKEY_6;
446 case '7': case '&': return VKEY_7;
447 case '8': case '*': return VKEY_8;
448 case '9': case '(': return VKEY_9;
449
450 case 'a': case 'A': return VKEY_A;
451 case 'b': case 'B': return VKEY_B;
452 case 'c': case 'C': return VKEY_C;
453 case 'd': case 'D': return VKEY_D;
454 case 'e': case 'E': return VKEY_E;
455 case 'f': case 'F': return VKEY_F;
456 case 'g': case 'G': return VKEY_G;
457 case 'h': case 'H': return VKEY_H;
458 case 'i': case 'I': return VKEY_I;
459 case 'j': case 'J': return VKEY_J;
460 case 'k': case 'K': return VKEY_K;
461 case 'l': case 'L': return VKEY_L;
462 case 'm': case 'M': return VKEY_M;
463 case 'n': case 'N': return VKEY_N;
464 case 'o': case 'O': return VKEY_O;
465 case 'p': case 'P': return VKEY_P;
466 case 'q': case 'Q': return VKEY_Q;
467 case 'r': case 'R': return VKEY_R;
468 case 's': case 'S': return VKEY_S;
469 case 't': case 'T': return VKEY_T;
470 case 'u': case 'U': return VKEY_U;
471 case 'v': case 'V': return VKEY_V;
472 case 'w': case 'W': return VKEY_W;
473 case 'x': case 'X': return VKEY_X;
474 case 'y': case 'Y': return VKEY_Y;
475 case 'z': case 'Z': return VKEY_Z;
476
477 case NSPauseFunctionKey: return VKEY_PAUSE;
478 case NSSelectFunctionKey: return VKEY_SELECT;
479 case NSPrintFunctionKey: return VKEY_PRINT;
480 case NSExecuteFunctionKey: return VKEY_EXECUTE;
481 case NSPrintScreenFunctionKey: return VKEY_SNAPSHOT;
482 case NSInsertFunctionKey: return VKEY_INSERT;
483 case NSHelpFunctionKey: return VKEY_INSERT;
484
485 case NSF1FunctionKey: return VKEY_F1;
486 case NSF2FunctionKey: return VKEY_F2;
487 case NSF3FunctionKey: return VKEY_F3;
488 case NSF4FunctionKey: return VKEY_F4;
489 case NSF5FunctionKey: return VKEY_F5;
490 case NSF6FunctionKey: return VKEY_F6;
491 case NSF7FunctionKey: return VKEY_F7;
492 case NSF8FunctionKey: return VKEY_F8;
493 case NSF9FunctionKey: return VKEY_F9;
494 case NSF10FunctionKey: return VKEY_F10;
495 case NSF11FunctionKey: return VKEY_F11;
496 case NSF12FunctionKey: return VKEY_F12;
497 case NSF13FunctionKey: return VKEY_F13;
498 case NSF14FunctionKey: return VKEY_F14;
499 case NSF15FunctionKey: return VKEY_F15;
500 case NSF16FunctionKey: return VKEY_F16;
501 case NSF17FunctionKey: return VKEY_F17;
502 case NSF18FunctionKey: return VKEY_F18;
503 case NSF19FunctionKey: return VKEY_F19;
504 case NSF20FunctionKey: return VKEY_F20;
505
506 case NSF21FunctionKey: return VKEY_F21;
507 case NSF22FunctionKey: return VKEY_F22;
508 case NSF23FunctionKey: return VKEY_F23;
509 case NSF24FunctionKey: return VKEY_F24;
510 case NSScrollLockFunctionKey: return VKEY_SCROLL;
511
512 // U.S. Specific mappings. Mileage may vary.
513 case ';': case ':': return VKEY_OEM_1;
514 case '=': case '+': return VKEY_OEM_PLUS;
515 case ',': case '<': return VKEY_OEM_COMMA;
516 case '-': case '_': return VKEY_OEM_MINUS;
517 case '.': case '>': return VKEY_OEM_PERIOD;
518 case '/': case '?': return VKEY_OEM_2;
519 case '`': case '~': return VKEY_OEM_3;
520 case '[': case '{': return VKEY_OEM_4;
521 case '\\': case '|': return VKEY_OEM_5;
522 case ']': case '}': return VKEY_OEM_6;
523 case '\'': case '"': return VKEY_OEM_7;
524 }
525
526 return VKEY_UNKNOWN;
527 }
528
529 KeyboardCode KeyboardCodeFromNSEvent(NSEvent* event) { 529 KeyboardCode KeyboardCodeFromNSEvent(NSEvent* event) {
530 KeyboardCode code = VKEY_UNKNOWN; 530 KeyboardCode code = VKEY_UNKNOWN;
531 531
532 if ([event type] == NSKeyDown || [event type] == NSKeyUp) { 532 if ([event type] == NSKeyDown || [event type] == NSKeyUp) {
533 NSString* characters = [event characters]; 533 NSString* characters = [event characters];
534 if ([characters length] > 0) 534 if ([characters length] > 0)
535 code = KeyboardCodeFromCharCode([characters characterAtIndex:0]); 535 code = KeyboardCodeFromCharCode([characters characterAtIndex:0]);
536 if (code) 536 if (code)
537 return code; 537 return code;
538 538
539 characters = [event charactersIgnoringModifiers]; 539 characters = [event charactersIgnoringModifiers];
540 if ([characters length] > 0) 540 if ([characters length] > 0)
541 code = KeyboardCodeFromCharCode([characters characterAtIndex:0]); 541 code = KeyboardCodeFromCharCode([characters characterAtIndex:0]);
542 if (code) 542 if (code)
543 return code; 543 return code;
544 } 544 }
545 return KeyboardCodeFromKeyCode([event keyCode]); 545 return KeyboardCodeFromKeyCode([event keyCode]);
546 } 546 }
547 547
548 DomCode CodeFromNSEvent(NSEvent* event) { 548 DomCode CodeFromNSEvent(NSEvent* event) {
549 return ui::KeycodeConverter::NativeKeycodeToDomCode([event keyCode]); 549 return ui::KeycodeConverter::NativeKeycodeToDomCode([event keyCode]);
550 } 550 }
551 551
552 } // namespace ui 552 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/keycodes/keyboard_code_conversion_mac.h ('k') | ui/events/test/cocoa_test_event_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698