OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #include "chrome/browser/ui/cocoa/accelerators_cocoa.h" | 5 #include "chrome/browser/ui/cocoa/accelerators_cocoa.h" |
6 | 6 |
7 #import <Cocoa/Cocoa.h> | 7 #import <Cocoa/Cocoa.h> |
8 | 8 |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/memory/singleton.h" | 10 #include "base/memory/singleton.h" |
(...skipping 18 matching lines...) Expand all Loading... |
29 {NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_OEM_1}, | 29 {NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_OEM_1}, |
30 {NSCommandKeyMask, ui::VKEY_OEM_COMMA}, | 30 {NSCommandKeyMask, ui::VKEY_OEM_COMMA}, |
31 {NSCommandKeyMask | NSControlKeyMask, ui::VKEY_SPACE}, | 31 {NSCommandKeyMask | NSControlKeyMask, ui::VKEY_SPACE}, |
32 }; | 32 }; |
33 | 33 |
34 const struct AcceleratorMapping { | 34 const struct AcceleratorMapping { |
35 int command_id; | 35 int command_id; |
36 NSUInteger modifiers; // The Cocoa modifiers. | 36 NSUInteger modifiers; // The Cocoa modifiers. |
37 ui::KeyboardCode key_code; // The key used for cross-platform compatibility. | 37 ui::KeyboardCode key_code; // The key used for cross-platform compatibility. |
38 } kAcceleratorMap[] = { | 38 } kAcceleratorMap[] = { |
39 // Accelerators used in the toolbar menu. | 39 // Accelerators used in the toolbar menu. |
40 {IDC_CLEAR_BROWSING_DATA, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_BACK}, | 40 {IDC_CLEAR_BROWSING_DATA, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_BACK}, |
41 {IDC_COPY, NSCommandKeyMask, ui::VKEY_C}, | 41 {IDC_COPY, NSCommandKeyMask, ui::VKEY_C}, |
42 {IDC_CUT, NSCommandKeyMask, ui::VKEY_X}, | 42 {IDC_CUT, NSCommandKeyMask, ui::VKEY_X}, |
43 {IDC_DEV_TOOLS, NSCommandKeyMask | NSAlternateKeyMask, ui::VKEY_I}, | 43 {IDC_DEV_TOOLS, NSCommandKeyMask | NSAlternateKeyMask, ui::VKEY_I}, |
44 {IDC_DEV_TOOLS_CONSOLE, NSCommandKeyMask | NSAlternateKeyMask, ui::VKEY_J}, | 44 {IDC_DEV_TOOLS_CONSOLE, NSCommandKeyMask | NSAlternateKeyMask, ui::VKEY_J}, |
45 {IDC_FIND, NSCommandKeyMask, ui::VKEY_F}, | 45 {IDC_FIND, NSCommandKeyMask, ui::VKEY_F}, |
46 {IDC_FULLSCREEN, NSCommandKeyMask | NSControlKeyMask, ui::VKEY_F}, | 46 {IDC_FULLSCREEN, NSCommandKeyMask | NSControlKeyMask, ui::VKEY_F}, |
47 {IDC_NEW_INCOGNITO_WINDOW, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_N}, | 47 {IDC_NEW_INCOGNITO_WINDOW, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_N}, |
48 {IDC_NEW_TAB, NSCommandKeyMask, ui::VKEY_T}, | 48 {IDC_NEW_TAB, NSCommandKeyMask, ui::VKEY_T}, |
49 {IDC_NEW_WINDOW, NSCommandKeyMask, ui::VKEY_N}, | 49 {IDC_NEW_WINDOW, NSCommandKeyMask, ui::VKEY_N}, |
50 {IDC_PASTE, NSCommandKeyMask, ui::VKEY_V}, | 50 {IDC_PASTE, NSCommandKeyMask, ui::VKEY_V}, |
51 {IDC_PRINT, NSCommandKeyMask, ui::VKEY_P}, | 51 {IDC_PRINT, NSCommandKeyMask, ui::VKEY_P}, |
52 {IDC_RESTORE_TAB, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_T}, | 52 {IDC_RESTORE_TAB, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_T}, |
53 {IDC_SAVE_PAGE, NSCommandKeyMask, ui::VKEY_S}, | 53 {IDC_SAVE_PAGE, NSCommandKeyMask, ui::VKEY_S}, |
54 {IDC_SHOW_BOOKMARK_BAR, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_B}, | 54 {IDC_SHOW_BOOKMARK_BAR, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_B}, |
55 {IDC_SHOW_BOOKMARK_MANAGER, NSCommandKeyMask | NSAlternateKeyMask, | 55 {IDC_SHOW_BOOKMARK_MANAGER, |
56 ui::VKEY_B}, | 56 NSCommandKeyMask | NSAlternateKeyMask, |
57 {IDC_BOOKMARK_PAGE, NSCommandKeyMask, ui::VKEY_D}, | 57 ui::VKEY_B}, |
58 {IDC_SHOW_DOWNLOADS, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_J}, | 58 {IDC_BOOKMARK_PAGE, NSCommandKeyMask, ui::VKEY_D}, |
59 {IDC_SHOW_HISTORY, NSCommandKeyMask, ui::VKEY_Y}, | 59 {IDC_SHOW_DOWNLOADS, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_J}, |
60 {IDC_VIEW_SOURCE, NSCommandKeyMask | NSAlternateKeyMask, ui::VKEY_U}, | 60 {IDC_SHOW_HISTORY, NSCommandKeyMask, ui::VKEY_Y}, |
61 {IDC_ZOOM_MINUS, NSCommandKeyMask, ui::VKEY_OEM_MINUS}, | 61 {IDC_VIEW_SOURCE, NSCommandKeyMask | NSAlternateKeyMask, ui::VKEY_U}, |
62 {IDC_ZOOM_PLUS, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_OEM_PLUS}, | 62 {IDC_ZOOM_MINUS, NSCommandKeyMask, ui::VKEY_OEM_MINUS}, |
| 63 {IDC_ZOOM_PLUS, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_OEM_PLUS}, |
63 | 64 |
64 // Accelerators used in MainMenu.xib, but not the toolbar menu. | 65 // Accelerators used in MainMenu.xib, but not the toolbar menu. |
65 {IDC_HIDE_APP, NSCommandKeyMask, ui::VKEY_H}, | 66 {IDC_HIDE_APP, NSCommandKeyMask, ui::VKEY_H}, |
66 {IDC_EXIT, NSCommandKeyMask, ui::VKEY_Q}, | 67 {IDC_EXIT, NSCommandKeyMask, ui::VKEY_Q}, |
67 {IDC_OPEN_FILE, NSCommandKeyMask, ui::VKEY_O}, | 68 {IDC_OPEN_FILE, NSCommandKeyMask, ui::VKEY_O}, |
68 {IDC_FOCUS_LOCATION, NSCommandKeyMask, ui::VKEY_L}, | 69 {IDC_FOCUS_LOCATION, NSCommandKeyMask, ui::VKEY_L}, |
69 {IDC_CLOSE_WINDOW, NSCommandKeyMask, ui::VKEY_W}, | 70 {IDC_CLOSE_WINDOW, NSCommandKeyMask, ui::VKEY_W}, |
70 {IDC_EMAIL_PAGE_LOCATION, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_I}, | 71 {IDC_EMAIL_PAGE_LOCATION, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_I}, |
71 #if !defined(DISABLE_BASIC_PRINTING) | 72 #if defined(ENABLE_BASIC_PRINTING) |
72 {IDC_BASIC_PRINT, NSCommandKeyMask | NSAlternateKeyMask, ui::VKEY_P}, | 73 {IDC_BASIC_PRINT, NSCommandKeyMask | NSAlternateKeyMask, ui::VKEY_P}, |
73 #endif // !DISABLE_BASIC_PRINTING | 74 #endif // ENABLE_BASIC_PRINTING |
74 {IDC_CONTENT_CONTEXT_UNDO, NSCommandKeyMask, ui::VKEY_Z}, | 75 {IDC_CONTENT_CONTEXT_UNDO, NSCommandKeyMask, ui::VKEY_Z}, |
75 {IDC_CONTENT_CONTEXT_REDO, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_Z}, | 76 {IDC_CONTENT_CONTEXT_REDO, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_Z}, |
76 {IDC_CONTENT_CONTEXT_CUT, NSCommandKeyMask, ui::VKEY_X}, | 77 {IDC_CONTENT_CONTEXT_CUT, NSCommandKeyMask, ui::VKEY_X}, |
77 {IDC_CONTENT_CONTEXT_COPY, NSCommandKeyMask, ui::VKEY_C}, | 78 {IDC_CONTENT_CONTEXT_COPY, NSCommandKeyMask, ui::VKEY_C}, |
78 {IDC_CONTENT_CONTEXT_PASTE, NSCommandKeyMask, ui::VKEY_V}, | 79 {IDC_CONTENT_CONTEXT_PASTE, NSCommandKeyMask, ui::VKEY_V}, |
79 {IDC_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE, | 80 {IDC_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE, |
80 NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_V}, | 81 NSCommandKeyMask | NSShiftKeyMask, |
81 {IDC_CONTENT_CONTEXT_SELECTALL, NSCommandKeyMask, ui::VKEY_A}, | 82 ui::VKEY_V}, |
82 {IDC_FOCUS_SEARCH, NSCommandKeyMask | NSAlternateKeyMask, ui::VKEY_F}, | 83 {IDC_CONTENT_CONTEXT_SELECTALL, NSCommandKeyMask, ui::VKEY_A}, |
83 {IDC_FIND_NEXT, NSCommandKeyMask, ui::VKEY_G}, | 84 {IDC_FOCUS_SEARCH, NSCommandKeyMask | NSAlternateKeyMask, ui::VKEY_F}, |
84 {IDC_FIND_PREVIOUS, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_G}, | 85 {IDC_FIND_NEXT, NSCommandKeyMask, ui::VKEY_G}, |
85 {IDC_ZOOM_PLUS, NSCommandKeyMask, ui::VKEY_OEM_PLUS}, | 86 {IDC_FIND_PREVIOUS, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_G}, |
86 {IDC_ZOOM_MINUS, NSCommandKeyMask, ui::VKEY_OEM_MINUS}, | 87 {IDC_ZOOM_PLUS, NSCommandKeyMask, ui::VKEY_OEM_PLUS}, |
87 {IDC_STOP, NSCommandKeyMask, ui::VKEY_OEM_PERIOD}, | 88 {IDC_ZOOM_MINUS, NSCommandKeyMask, ui::VKEY_OEM_MINUS}, |
88 {IDC_RELOAD, NSCommandKeyMask, ui::VKEY_R}, | 89 {IDC_STOP, NSCommandKeyMask, ui::VKEY_OEM_PERIOD}, |
89 {IDC_RELOAD_IGNORING_CACHE, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_R}, | 90 {IDC_RELOAD, NSCommandKeyMask, ui::VKEY_R}, |
90 {IDC_PRESENTATION_MODE, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_F}, | 91 {IDC_RELOAD_IGNORING_CACHE, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_R}, |
91 {IDC_ZOOM_NORMAL, NSCommandKeyMask, ui::VKEY_0}, | 92 {IDC_PRESENTATION_MODE, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_F}, |
92 {IDC_HOME, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_H}, | 93 {IDC_ZOOM_NORMAL, NSCommandKeyMask, ui::VKEY_0}, |
93 {IDC_BACK, NSCommandKeyMask, ui::VKEY_OEM_4}, | 94 {IDC_HOME, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_H}, |
94 {IDC_FORWARD, NSCommandKeyMask, ui::VKEY_OEM_6}, | 95 {IDC_BACK, NSCommandKeyMask, ui::VKEY_OEM_4}, |
95 {IDC_BOOKMARK_ALL_TABS, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_D}, | 96 {IDC_FORWARD, NSCommandKeyMask, ui::VKEY_OEM_6}, |
96 {IDC_MINIMIZE_WINDOW, NSCommandKeyMask, ui::VKEY_M}, | 97 {IDC_BOOKMARK_ALL_TABS, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_D}, |
97 {IDC_SELECT_NEXT_TAB, NSCommandKeyMask | NSAlternateKeyMask, ui::VKEY_RIGHT}, | 98 {IDC_MINIMIZE_WINDOW, NSCommandKeyMask, ui::VKEY_M}, |
98 {IDC_SELECT_PREVIOUS_TAB, NSCommandKeyMask | NSAlternateKeyMask, | 99 {IDC_SELECT_NEXT_TAB, |
99 ui::VKEY_LEFT}, | 100 NSCommandKeyMask | NSAlternateKeyMask, |
100 {IDC_HELP_PAGE_VIA_MENU, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_OEM_2}, | 101 ui::VKEY_RIGHT}, |
| 102 {IDC_SELECT_PREVIOUS_TAB, |
| 103 NSCommandKeyMask | NSAlternateKeyMask, |
| 104 ui::VKEY_LEFT}, |
| 105 {IDC_HELP_PAGE_VIA_MENU, NSCommandKeyMask | NSShiftKeyMask, ui::VKEY_OEM_2}, |
101 }; | 106 }; |
102 | 107 |
103 // Create a Cocoa platform accelerator given a cross platform |key_code| and | 108 // Create a Cocoa platform accelerator given a cross platform |key_code| and |
104 // the |cocoa_modifiers|. | 109 // the |cocoa_modifiers|. |
105 scoped_ptr<ui::PlatformAccelerator> PlatformAcceleratorFromKeyCode( | 110 scoped_ptr<ui::PlatformAccelerator> PlatformAcceleratorFromKeyCode( |
106 ui::KeyboardCode key_code, | 111 ui::KeyboardCode key_code, |
107 NSUInteger cocoa_modifiers) { | 112 NSUInteger cocoa_modifiers) { |
108 unichar character; | 113 unichar character; |
109 unichar char_no_modifiers; | 114 unichar char_no_modifiers; |
110 int result = ui::MacKeyCodeForWindowsKeyCode( | 115 int result = ui::MacKeyCodeForWindowsKeyCode( |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 NSUInteger mask = platform_accelerator->modifier_mask(); | 190 NSUInteger mask = platform_accelerator->modifier_mask(); |
186 BOOL maskEqual = | 191 BOOL maskEqual = |
187 (mask == modifiers) || ((mask & (~NSShiftKeyMask)) == modifiers); | 192 (mask == modifiers) || ((mask & (~NSShiftKeyMask)) == modifiers); |
188 NSString* string = [NSString stringWithFormat:@"%C", character]; | 193 NSString* string = [NSString stringWithFormat:@"%C", character]; |
189 if ([string isEqual:key_equivalent] && maskEqual) | 194 if ([string isEqual:key_equivalent] && maskEqual) |
190 return &*it; | 195 return &*it; |
191 } | 196 } |
192 | 197 |
193 return NULL; | 198 return NULL; |
194 } | 199 } |
OLD | NEW |