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
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_UI_VIEWS_ACCELERATOR_TABLE_H_
6#define CHROME_BROWSER_UI_VIEWS_ACCELERATOR_TABLE_H_
7
8#include <vector>
9
10#include "chrome/browser/ui/host_desktop.h"
11#include "chrome/browser/ui/views/chrome_views_export.h"
12#include "ui/events/keycodes/keyboard_codes.h"
13
14namespace ui {
15class Accelerator;
16}
17
18// This contains the list of accelerators for the Aura implementation.
19namespace chrome {
20
21struct AcceleratorMapping {
22  ui::KeyboardCode keycode;
23  int modifiers;
24  int command_id;
25};
26
27// Returns a list of accelerator mapping information for accelerators
28// handled by Chrome but excluding accelerators handled by Ash.
29CHROME_VIEWS_EXPORT std::vector<AcceleratorMapping> GetAcceleratorList();
30
31// Returns true if the desktop host type indicates Ash and if the
32// command id has an associated accelerator which is handled by
33// Ash. If the return is true the accelerator is returned via the
34// second argument.
35CHROME_VIEWS_EXPORT bool GetAshAcceleratorForCommandId(
36    int command_id,
37    HostDesktopType host_desktop_type,
38    ui::Accelerator* accelerator);
39
40// Returns true if the command id has an associated standard
41// accelerator like cut, copy and paste. If the return is true the
42// accelerator is returned via the second argument.
43CHROME_VIEWS_EXPORT bool GetStandardAcceleratorForCommandId(
44    int command_id,
45    ui::Accelerator* accelerator);
46
47}  // namespace chrome
48
49#endif  // CHROME_BROWSER_UI_VIEWS_ACCELERATOR_TABLE_H_
50