Chromium Code Reviews| Index: ash/common/key_event_watcher.h |
| diff --git a/ash/common/key_event_watcher.h b/ash/common/key_event_watcher.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..865d0912f9b9576726740201db86e7cec8893350 |
| --- /dev/null |
| +++ b/ash/common/key_event_watcher.h |
| @@ -0,0 +1,48 @@ |
| +// Copyright 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef ASH_COMMON_KEY_EVENT_WATCHER_H_ |
| +#define ASH_COMMON_KEY_EVENT_WATCHER_H_ |
| + |
| +#include <map> |
| + |
| +#include "ash/ash_export.h" |
| +#include "base/callback.h" |
| +#include "base/macros.h" |
| +#include "ui/base/accelerators/accelerator.h" |
| + |
| +namespace ui { |
| +class KeyEvent; |
| +} |
| + |
| +namespace ash { |
| + |
| +// This class watches the key event given in the form of accelerator |
| +// and calls the registered callback. |
| +class ASH_EXPORT KeyEventWatcher { |
|
James Cook
2016/09/22 21:17:16
I like how this only listens for the keys it cares
|
| + public: |
| + using KeyEventCallback = base::Callback<void(const ui::KeyEvent&)>; |
| + |
| + KeyEventWatcher(); |
| + virtual ~KeyEventWatcher(); |
| + |
| + // Add a callback that is called when the accelerator |accel| is |
| + // pressed. |
|
James Cook
2016/09/22 21:17:16
Document that the key event will be consumed if a
oshima
2016/09/23 09:37:19
Done.
|
| + void AddKeyEventCallback(const ui::Accelerator& accel, |
| + const KeyEventCallback& callback); |
| + |
| + protected: |
| + // Finds and calls the registered callback whose accelerator matches |
| + // the |event|. Returns false if no accelerator is matched. |
| + bool HandleKeyEvent(const ui::KeyEvent& event); |
| + |
| + private: |
| + std::map<ui::Accelerator, KeyEventCallback> callback_map_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(KeyEventWatcher); |
| +}; |
| + |
| +} // namespace ash |
| + |
| +#endif // ASH_COMMON_KEY_EVENT_WATCHER_H_ |