accelerator_table.cc revision d0247b1b59f9c528cb6df88b4f2b9afaf80d181e
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/views/accelerator_table.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/app/chrome_command_ids.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/base/accelerators/accelerator.h" 10d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ui/events/event_constants.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(USE_ASH) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/accelerators/accelerator_table.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chrome { 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NOTE: Keep this list in the same (mostly-alphabetical) order as 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the Windows accelerators in ../../app/chrome_dll.rc. 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Do not use Ctrl-Alt as a shortcut modifier, as it is used by i18n keyboards: 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://blogs.msdn.com/b/oldnewthing/archive/2004/03/29/101121.aspx 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const AcceleratorMapping kAcceleratorMap[] = { 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_LEFT, ui::EF_ALT_DOWN, IDC_BACK }, 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_BACK, ui::EF_NONE, IDC_BACK }, 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_D, ui::EF_CONTROL_DOWN, IDC_BOOKMARK_PAGE }, 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_D, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_BOOKMARK_ALL_TABS }, 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_W, ui::EF_CONTROL_DOWN, IDC_CLOSE_TAB }, 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_W, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, IDC_CLOSE_WINDOW }, 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_F, ui::EF_CONTROL_DOWN, IDC_FIND }, 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_G, ui::EF_CONTROL_DOWN, IDC_FIND_NEXT }, 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_G, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, IDC_FIND_PREVIOUS }, 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_D, ui::EF_ALT_DOWN, IDC_FOCUS_LOCATION }, 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_L, ui::EF_CONTROL_DOWN, IDC_FOCUS_LOCATION }, 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_K, ui::EF_CONTROL_DOWN, IDC_FOCUS_SEARCH }, 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_E, ui::EF_CONTROL_DOWN, IDC_FOCUS_SEARCH }, 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_T, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, IDC_FOCUS_TOOLBAR }, 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_B, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, IDC_FOCUS_BOOKMARKS }, 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { ui::VKEY_A, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, IDC_FOCUS_INFOBARS }, 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_RIGHT, ui::EF_ALT_DOWN, IDC_FORWARD }, 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_BACK, ui::EF_SHIFT_DOWN, IDC_FORWARD }, 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_I, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, IDC_DEV_TOOLS }, 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_F12, ui::EF_NONE, IDC_DEV_TOOLS_TOGGLE }, 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_J, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_DEV_TOOLS_CONSOLE }, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_C, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_DEV_TOOLS_INSPECT }, 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_P, ui::EF_CONTROL_DOWN, IDC_PRINT}, 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_P, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, IDC_ADVANCED_PRINT}, 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_R, ui::EF_CONTROL_DOWN, IDC_RELOAD }, 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_R, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_RELOAD_IGNORING_CACHE }, 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_HOME, ui::EF_ALT_DOWN, IDC_HOME }, 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_S, ui::EF_CONTROL_DOWN, IDC_SAVE_PAGE }, 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_9, ui::EF_CONTROL_DOWN, IDC_SELECT_LAST_TAB }, 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_NUMPAD9, ui::EF_CONTROL_DOWN, IDC_SELECT_LAST_TAB }, 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_TAB, ui::EF_CONTROL_DOWN, IDC_SELECT_NEXT_TAB }, 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_NEXT, ui::EF_CONTROL_DOWN, IDC_SELECT_NEXT_TAB }, 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_TAB, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_SELECT_PREVIOUS_TAB }, 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_PRIOR, ui::EF_CONTROL_DOWN, IDC_SELECT_PREVIOUS_TAB }, 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_1, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_0 }, 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_NUMPAD1, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_0 }, 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_2, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_1 }, 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_NUMPAD2, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_1 }, 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_3, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_2 }, 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_NUMPAD3, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_2 }, 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_4, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_3 }, 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_NUMPAD4, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_3 }, 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_5, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_4 }, 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_NUMPAD5, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_4 }, 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_6, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_5 }, 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_NUMPAD6, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_5 }, 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_7, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_6 }, 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_NUMPAD7, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_6 }, 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_8, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_7 }, 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_NUMPAD8, ui::EF_CONTROL_DOWN, IDC_SELECT_TAB_7 }, 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_B, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_SHOW_BOOKMARK_BAR }, 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_O, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_SHOW_BOOKMARK_MANAGER }, 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_J, ui::EF_CONTROL_DOWN, IDC_SHOW_DOWNLOADS }, 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_H, ui::EF_CONTROL_DOWN, IDC_SHOW_HISTORY }, 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_F, ui::EF_ALT_DOWN, IDC_SHOW_APP_MENU}, 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_E, ui::EF_ALT_DOWN, IDC_SHOW_APP_MENU}, 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_ESCAPE, ui::EF_NONE, IDC_STOP }, 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_OEM_PERIOD, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_TOGGLE_SPEECH_INPUT }, 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_U, ui::EF_CONTROL_DOWN, IDC_VIEW_SOURCE }, 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_OEM_MINUS, ui::EF_CONTROL_DOWN, IDC_ZOOM_MINUS }, 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_SUBTRACT, ui::EF_CONTROL_DOWN, IDC_ZOOM_MINUS }, 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_0, ui::EF_CONTROL_DOWN, IDC_ZOOM_NORMAL }, 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_NUMPAD0, ui::EF_CONTROL_DOWN, IDC_ZOOM_NORMAL }, 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_OEM_PLUS, ui::EF_CONTROL_DOWN, IDC_ZOOM_PLUS }, 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_ADD, ui::EF_CONTROL_DOWN, IDC_ZOOM_PLUS }, 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { ui::VKEY_F1, ui::EF_NONE, IDC_HELP_PAGE_VIA_KEYBOARD }, 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { ui::VKEY_F3, ui::EF_NONE, IDC_FIND_NEXT }, 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { ui::VKEY_F3, ui::EF_SHIFT_DOWN, IDC_FIND_PREVIOUS }, 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { ui::VKEY_F4, ui::EF_CONTROL_DOWN, IDC_CLOSE_TAB }, 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { ui::VKEY_F4, ui::EF_ALT_DOWN, IDC_CLOSE_WINDOW }, 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { ui::VKEY_F5, ui::EF_NONE, IDC_RELOAD }, 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { ui::VKEY_F5, ui::EF_CONTROL_DOWN, IDC_RELOAD_IGNORING_CACHE }, 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { ui::VKEY_F5, ui::EF_SHIFT_DOWN, IDC_RELOAD_IGNORING_CACHE }, 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { ui::VKEY_F6, ui::EF_NONE, IDC_FOCUS_NEXT_PANE }, 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { ui::VKEY_F6, ui::EF_SHIFT_DOWN, IDC_FOCUS_PREVIOUS_PANE }, 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { ui::VKEY_F10, ui::EF_NONE, IDC_FOCUS_MENU_BAR }, 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { ui::VKEY_F11, ui::EF_NONE, IDC_FULLSCREEN }, 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Platform-specific key maps. 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // On Chrome OS, VKEY_BROWSER_SEARCH is handled in Ash. 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_BROWSER_BACK, ui::EF_NONE, IDC_BACK }, 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_BACK, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_CLEAR_BROWSING_DATA }, 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_BROWSER_FORWARD, ui::EF_NONE, IDC_FORWARD }, 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_OEM_2, ui::EF_CONTROL_DOWN, IDC_HELP_PAGE_VIA_KEYBOARD }, 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_OEM_2, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_HELP_PAGE_VIA_KEYBOARD }, 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_BROWSER_HOME, ui::EF_NONE, IDC_HOME }, 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_BROWSER_REFRESH, ui::EF_NONE, IDC_RELOAD }, 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { ui::VKEY_BROWSER_REFRESH, ui::EF_CONTROL_DOWN, IDC_RELOAD_IGNORING_CACHE }, 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { ui::VKEY_BROWSER_REFRESH, ui::EF_SHIFT_DOWN, IDC_RELOAD_IGNORING_CACHE }, 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_BROWSER_FAVORITES, ui::EF_NONE, IDC_SHOW_BOOKMARK_MANAGER }, 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_BROWSER_STOP, ui::EF_NONE, IDC_STOP }, 12658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // Not implemented inside Ash to allow web pages to capture the key. 12758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) { ui::VKEY_M, ui::EF_CONTROL_DOWN, IDC_MINIMIZE_WINDOW }, 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else // OS_CHROMEOS 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_DELETE, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_CLEAR_BROWSING_DATA }, 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_LMENU, ui::EF_NONE, IDC_FOCUS_MENU_BAR }, 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_MENU, ui::EF_NONE, IDC_FOCUS_MENU_BAR }, 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_RMENU, ui::EF_NONE, IDC_FOCUS_MENU_BAR }, 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // On Windows, all VKEY_BROWSER_* keys except VKEY_BROWSER_SEARCH are handled 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // via WM_APPCOMMAND. 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_BROWSER_SEARCH, ui::EF_NONE, IDC_FOCUS_SEARCH }, 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_M, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, IDC_SHOW_AVATAR_MENU}, 138c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // On ChromeOS, these keys are assigned to change UI scale. 139c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { ui::VKEY_OEM_PLUS, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, IDC_ZOOM_PLUS }, 140c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { ui::VKEY_OEM_MINUS, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, 141c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IDC_ZOOM_MINUS }, 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // OS_CHROMEOS 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(OS_CHROMEOS) 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // For each entry here add an entry into kChromeCmdId2AshActionId below 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // if Ash has a corresponding accelerator. 14658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_I, ui::EF_SHIFT_DOWN | ui::EF_ALT_DOWN, IDC_FEEDBACK }, 14858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_Q, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, IDC_EXIT }, 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_N, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_NEW_INCOGNITO_WINDOW }, 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_T, ui::EF_CONTROL_DOWN, IDC_NEW_TAB }, 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_N, ui::EF_CONTROL_DOWN, IDC_NEW_WINDOW }, 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_O, ui::EF_CONTROL_DOWN, IDC_OPEN_FILE }, 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_T, ui::EF_SHIFT_DOWN | ui::EF_CONTROL_DOWN, IDC_RESTORE_TAB }, 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { ui::VKEY_ESCAPE, ui::EF_SHIFT_DOWN, IDC_TASK_MANAGER }, 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const size_t kAcceleratorMapLength = arraysize(kAcceleratorMap); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(USE_ASH) 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Below we map Chrome command ids to Ash action ids for commands that have 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// an shortcut that is handled by Ash (instead of Chrome). Adding entries 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// here will show shortcut text on menus. See comment above. 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)struct ChromeCmdId2AshActionId { 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const int chrome_cmd_id; 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const ash::AcceleratorAction ash_action_id; 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const ChromeCmdId2AshActionId kChromeCmdId2AshActionId[] = { 17058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD) 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { IDC_FEEDBACK, ash::OPEN_FEEDBACK_PAGE }, 17258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { IDC_EXIT, ash::EXIT }, 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { IDC_NEW_INCOGNITO_WINDOW, ash::NEW_INCOGNITO_WINDOW }, 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { IDC_NEW_TAB, ash::NEW_TAB }, 1762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { IDC_NEW_WINDOW, ash::NEW_WINDOW }, 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_CHROMEOS) 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { IDC_OPEN_FILE, ash::OPEN_FILE_DIALOG }, 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { IDC_RESTORE_TAB, ash::RESTORE_TAB }, 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) { IDC_TASK_MANAGER, ash::SHOW_TASK_MANAGER }, 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const size_t kChromeCmdId2AshActionIdLength = 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) arraysize(kChromeCmdId2AshActionId); 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // defined(USE_ASH) 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)std::vector<AcceleratorMapping> GetAcceleratorList() { 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return std::vector<AcceleratorMapping>( 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) kAcceleratorMap, kAcceleratorMap + kAcceleratorMapLength); 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool GetAshAcceleratorForCommandId(int command_id, 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) HostDesktopType host_desktop_type, 1962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ui::Accelerator* accelerator) { 1972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(USE_ASH) 1982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (host_desktop_type != chrome::HOST_DESKTOP_TYPE_ASH) 1992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return false; 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t i = 0; i < kChromeCmdId2AshActionIdLength; ++i) { 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (command_id == kChromeCmdId2AshActionId[i].chrome_cmd_id) { 2022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (size_t j = 0; j < ash::kAcceleratorDataLength; ++j) { 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (kChromeCmdId2AshActionId[i].ash_action_id == 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ash::kAcceleratorData[j].action) { 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *accelerator = ui::Accelerator(ash::kAcceleratorData[j].keycode, 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ash::kAcceleratorData[j].modifiers); 2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return true; 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // defined(USE_ASH) 2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return false; 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool GetStandardAcceleratorForCommandId(int command_id, 2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ui::Accelerator* accelerator) { 2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // The standard Ctrl-X, Ctrl-V and Ctrl-C are not defined as accelerators 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // anywhere else. 2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) switch (command_id) { 2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case IDC_CUT: 2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *accelerator = ui::Accelerator(ui::VKEY_X, ui::EF_CONTROL_DOWN); 2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return true; 2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case IDC_COPY: 2252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *accelerator = ui::Accelerator(ui::VKEY_C, ui::EF_CONTROL_DOWN); 2262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return true; 2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case IDC_PASTE: 2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) *accelerator = ui::Accelerator(ui::VKEY_V, ui::EF_CONTROL_DOWN); 2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return true; 2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return false; 2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chrome 235