| 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 |