| Index: chrome/browser/chromeos/events/event_rewriter.h
|
| diff --git a/chrome/browser/chromeos/events/event_rewriter.h b/chrome/browser/chromeos/events/event_rewriter.h
|
| deleted file mode 100644
|
| index e887a2c8707df412425cbecf8e66d1db9970a359..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/chromeos/events/event_rewriter.h
|
| +++ /dev/null
|
| @@ -1,205 +0,0 @@
|
| -// Copyright 2014 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 CHROME_BROWSER_CHROMEOS_EVENTS_EVENT_REWRITER_H_
|
| -#define CHROME_BROWSER_CHROMEOS_EVENTS_EVENT_REWRITER_H_
|
| -
|
| -#include <map>
|
| -#include <memory>
|
| -#include <set>
|
| -#include <string>
|
| -
|
| -#include "base/compiler_specific.h"
|
| -#include "base/containers/hash_tables.h"
|
| -#include "base/macros.h"
|
| -#include "ui/events/event.h"
|
| -#include "ui/events/event_rewriter.h"
|
| -#include "ui/events/keycodes/dom/dom_key.h"
|
| -
|
| -class PrefService;
|
| -
|
| -namespace ui {
|
| -enum class DomCode;
|
| -};
|
| -
|
| -namespace chromeos {
|
| -namespace input_method {
|
| -class ImeKeyboard;
|
| -}
|
| -
|
| -// EventRewriter makes various changes to keyboard-related events,
|
| -// including KeyEvents and some other events with keyboard modifier flags:
|
| -// - maps certain non-character keys according to user preferences
|
| -// (Control, Alt, Search, Caps Lock, Escape, Backspace, Diamond);
|
| -// - maps Command to Control on Apple keyboards;
|
| -// - converts numeric pad editing keys to their numeric forms;
|
| -// - converts top-row function keys to special keys where necessary;
|
| -// - handles various key combinations like Search+Backspace -> Delete
|
| -// and Search+number to Fnumber;
|
| -// - handles key/pointer combinations like Alt+Button1 -> Button3.
|
| -class EventRewriter : public ui::EventRewriter {
|
| - public:
|
| - enum DeviceType {
|
| - kDeviceUnknown = 0,
|
| - kDeviceAppleKeyboard,
|
| - kDeviceHotrodRemote,
|
| - kDeviceVirtualCoreKeyboard, // X-server generated events.
|
| - };
|
| -
|
| - // Things that keyboard-related rewriter phases can change about an Event.
|
| - struct MutableKeyState {
|
| - int flags;
|
| - ui::DomCode code;
|
| - ui::DomKey::Base key;
|
| - ui::KeyboardCode key_code;
|
| - };
|
| -
|
| - // Does not take ownership of the |sticky_keys_controller|, which may also
|
| - // be NULL (for testing without ash), in which case sticky key operations
|
| - // don't happen.
|
| - explicit EventRewriter(ui::EventRewriter* sticky_keys_controller);
|
| - ~EventRewriter() override;
|
| -
|
| - // Calls KeyboardDeviceAddedInternal.
|
| - DeviceType KeyboardDeviceAddedForTesting(int device_id,
|
| - const std::string& device_name);
|
| -
|
| - // Calls RewriteMouseEvent().
|
| - void RewriteMouseButtonEventForTesting(
|
| - const ui::MouseEvent& event,
|
| - std::unique_ptr<ui::Event>* rewritten_event);
|
| -
|
| - const std::map<int, DeviceType>& device_id_to_type_for_testing() const {
|
| - return device_id_to_type_;
|
| - }
|
| - void set_last_keyboard_device_id_for_testing(int device_id) {
|
| - last_keyboard_device_id_ = device_id;
|
| - }
|
| - void set_pref_service_for_testing(const PrefService* pref_service) {
|
| - pref_service_for_testing_ = pref_service;
|
| - }
|
| - void set_ime_keyboard_for_testing(
|
| - chromeos::input_method::ImeKeyboard* ime_keyboard) {
|
| - ime_keyboard_for_testing_ = ime_keyboard;
|
| - }
|
| -
|
| - // EventRewriter overrides:
|
| - ui::EventRewriteStatus RewriteEvent(
|
| - const ui::Event& event,
|
| - std::unique_ptr<ui::Event>* rewritten_event) override;
|
| - ui::EventRewriteStatus NextDispatchEvent(
|
| - const ui::Event& last_event,
|
| - std::unique_ptr<ui::Event>* new_event) override;
|
| -
|
| - // Generate a new key event from an original key event and the replacement
|
| - // state determined by a key rewriter.
|
| - static void BuildRewrittenKeyEvent(
|
| - const ui::KeyEvent& key_event,
|
| - const MutableKeyState& state,
|
| - std::unique_ptr<ui::Event>* rewritten_event);
|
| -
|
| - private:
|
| - void DeviceKeyPressedOrReleased(int device_id);
|
| -
|
| - // Returns the PrefService that should be used.
|
| - const PrefService* GetPrefService() const;
|
| -
|
| - // Adds a device to |device_id_to_type_|.
|
| - DeviceType KeyboardDeviceAdded(int device_id);
|
| -
|
| - // Checks the type of the |device_name|, |vendor_id| and |product_id|, and
|
| - // inserts a new entry to |device_id_to_type_|.
|
| - DeviceType KeyboardDeviceAddedInternal(int device_id,
|
| - const std::string& device_name,
|
| - int vendor_id,
|
| - int product_id);
|
| -
|
| - // Returns true if |last_keyboard_device_id_| is Apple's.
|
| - bool IsAppleKeyboard() const;
|
| - // Returns true if |last_keyboard_device_id_| is Hotrod remote.
|
| - bool IsHotrodRemote() const;
|
| - // Returns true if |last_keyboard_device_id_| is of given |device_type|.
|
| - bool IsLastKeyboardOfType(DeviceType device_type) const;
|
| -
|
| - // Returns true if the target for |event| would prefer to receive raw function
|
| - // keys instead of having them rewritten into back, forward, brightness,
|
| - // volume, etc. or if the user has specified that they desire top-row keys to
|
| - // be treated as function keys globally.
|
| - bool TopRowKeysAreFunctionKeys(const ui::KeyEvent& event) const;
|
| -
|
| - // Given modifier flags |original_flags|, returns the remapped modifiers
|
| - // according to user preferences and/or event properties.
|
| - int GetRemappedModifierMasks(const PrefService& pref_service,
|
| - const ui::Event& event,
|
| - int original_flags) const;
|
| -
|
| - // Rewrite a particular kind of event.
|
| - ui::EventRewriteStatus RewriteKeyEvent(
|
| - const ui::KeyEvent& key_event,
|
| - std::unique_ptr<ui::Event>* rewritten_event);
|
| - ui::EventRewriteStatus RewriteMouseButtonEvent(
|
| - const ui::MouseEvent& mouse_event,
|
| - std::unique_ptr<ui::Event>* rewritten_event);
|
| - ui::EventRewriteStatus RewriteMouseWheelEvent(
|
| - const ui::MouseWheelEvent& mouse_event,
|
| - std::unique_ptr<ui::Event>* rewritten_event);
|
| - ui::EventRewriteStatus RewriteTouchEvent(
|
| - const ui::TouchEvent& touch_event,
|
| - std::unique_ptr<ui::Event>* rewritten_event);
|
| - ui::EventRewriteStatus RewriteScrollEvent(
|
| - const ui::ScrollEvent& scroll_event,
|
| - std::unique_ptr<ui::Event>* rewritten_event);
|
| -
|
| - // Rewriter phases. These can inspect the original |event|, but operate using
|
| - // the current |state|, which may have been modified by previous phases.
|
| - bool RewriteModifierKeys(const ui::KeyEvent& event, MutableKeyState* state);
|
| - void RewriteNumPadKeys(const ui::KeyEvent& event, MutableKeyState* state);
|
| - void RewriteExtendedKeys(const ui::KeyEvent& event, MutableKeyState* state);
|
| - void RewriteFunctionKeys(const ui::KeyEvent& event, MutableKeyState* state);
|
| - void RewriteLocatedEvent(const ui::Event& event, int* flags);
|
| - int RewriteModifierClick(const ui::MouseEvent& event, int* flags);
|
| -
|
| - // A set of device IDs whose press event has been rewritten.
|
| - // This is to ensure that press and release events are rewritten consistently.
|
| - std::set<int> pressed_device_ids_;
|
| -
|
| - std::map<int, DeviceType> device_id_to_type_;
|
| -
|
| - // The |source_device_id()| of the most recent keyboard event,
|
| - // used to interpret modifiers on pointer events.
|
| - int last_keyboard_device_id_;
|
| -
|
| - chromeos::input_method::ImeKeyboard* ime_keyboard_for_testing_;
|
| - const PrefService* pref_service_for_testing_;
|
| -
|
| - // The sticky keys controller is not owned here;
|
| - // at time of writing it is a singleton in ash::Shell.
|
| - ui::EventRewriter* const sticky_keys_controller_;
|
| -
|
| - // Some keyboard layouts have 'latching' keys, which either apply
|
| - // a modifier while held down (like normal modifiers), or, if no
|
| - // non-modifier is pressed while the latching key is down, apply the
|
| - // modifier to the next non-modifier keypress. Under Ozone the stateless
|
| - // layout model requires this to be handled explicitly. See crbug.com/518237
|
| - // Pragmatically this, like the Diamond key, is handled here in
|
| - // EventRewriter, but modifier state management is scattered between
|
| - // here, sticky keys, and the system layer (X11 or Ozone), and could
|
| - // do with refactoring.
|
| - // - |pressed_modifier_latches_| records the latching keys currently pressed.
|
| - // It also records the active modifier flags for non-modifier keys that are
|
| - // remapped to modifiers, e.g. Diamond/F15.
|
| - // - |latched_modifier_latches_| records the latching keys just released,
|
| - // to be applied to the next non-modifier key.
|
| - // - |used_modifier_latches_| records the latching keys applied to a non-
|
| - // modifier while pressed, so that they do not get applied after release.
|
| - int pressed_modifier_latches_;
|
| - int latched_modifier_latches_;
|
| - int used_modifier_latches_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(EventRewriter);
|
| -};
|
| -
|
| -} // namespace chromeos
|
| -
|
| -#endif // CHROME_BROWSER_CHROMEOS_EVENTS_EVENT_REWRITER_H_
|
|
|