Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(56)

Side by Side Diff: trunk/src/chrome/browser/chromeos/events/event_rewriter.h

Issue 341923006: Revert 278342 "Convert sticky keys to a chromeos::EventRewriter ..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #ifndef CHROME_BROWSER_CHROMEOS_EVENTS_EVENT_REWRITER_H_ 5 #ifndef CHROME_BROWSER_CHROMEOS_EVENTS_EVENT_REWRITER_H_
6 #define CHROME_BROWSER_CHROMEOS_EVENTS_EVENT_REWRITER_H_ 6 #define CHROME_BROWSER_CHROMEOS_EVENTS_EVENT_REWRITER_H_
7 7
8 #include <map> 8 #include <map>
9 #include <set> 9 #include <set>
10 #include <string> 10 #include <string>
11 11
12 #include "base/compiler_specific.h" 12 #include "base/compiler_specific.h"
13 #include "base/containers/hash_tables.h" 13 #include "base/containers/hash_tables.h"
14 #include "base/memory/scoped_ptr.h" 14 #include "base/memory/scoped_ptr.h"
15 #include "ui/events/event.h" 15 #include "ui/events/event.h"
16 #include "ui/events/event_rewriter.h" 16 #include "ui/events/event_rewriter.h"
17 17
18 #if defined(USE_X11) 18 #if defined(USE_X11)
19 #include "chrome/browser/chromeos/device_hierarchy_observer.h" 19 #include "chrome/browser/chromeos/device_hierarchy_observer.h"
20 #include "ui/events/platform/platform_event_observer.h" 20 #include "ui/events/platform/platform_event_observer.h"
21 typedef union _XEvent XEvent; 21 typedef union _XEvent XEvent;
22 #endif 22 #endif
23 23
24 class PrefService; 24 class PrefService;
25 25
26 namespace ash {
27 class StickyKeysController;
28 }
29
30 namespace chromeos { 26 namespace chromeos {
31 namespace input_method { 27 namespace input_method {
32 class ImeKeyboard; 28 class ImeKeyboard;
33 } 29 }
34 30
35 // EventRewriter makes various changes to keyboard-related events, 31 // EventRewriter makes various changes to keyboard-related events,
36 // including KeyEvents and some other events with keyboard modifier flags: 32 // including KeyEvents and some other events with keyboard modifier flags:
37 // - maps modifiers keys (Control, Alt, Search, Caps, Diamond) according 33 // - maps modifiers keys (Control, Alt, Search, Caps, Diamond) according
38 // to user preferences; 34 // to user preferences;
39 // - maps Command to Control on Apple keyboards; 35 // - maps Command to Control on Apple keyboards;
40 // - converts numeric pad editing keys to their numeric forms; 36 // - converts numeric pad editing keys to their numeric forms;
41 // - converts top-row function keys to special keys where necessary; 37 // - converts top-row function keys to special keys where necessary;
42 // - handles various key combinations like Search+Backspace -> Delete 38 // - handles various key combinations like Search+Backspace -> Delete
43 // and Search+number to Fnumber; 39 // and Search+number to Fnumber;
44 // - handles key/pointer combinations like Alt+Button1 -> Button3. 40 // - handles key/pointer combinations like Alt+Button1 -> Button3.
45 class EventRewriter 41 class EventRewriter
46 : 42 :
47 #if defined(USE_X11) 43 #if defined(USE_X11)
48 public DeviceHierarchyObserver, 44 public DeviceHierarchyObserver,
49 public ui::PlatformEventObserver, 45 public ui::PlatformEventObserver,
50 #endif 46 #endif
51 public ui::EventRewriter { 47 public ui::EventRewriter {
52 public: 48 public:
53 enum DeviceType { 49 enum DeviceType {
54 kDeviceUnknown = 0, 50 kDeviceUnknown = 0,
55 kDeviceAppleKeyboard, 51 kDeviceAppleKeyboard,
56 }; 52 };
57 53
58 // Does not take ownership of the |sticky_keys_controller|, which may also 54 EventRewriter();
59 // be NULL (for testing without ash), in which case sticky key operations
60 // don't happen.
61 explicit EventRewriter(ash::StickyKeysController* sticky_keys_controller);
62 virtual ~EventRewriter(); 55 virtual ~EventRewriter();
63 56
64 // Calls DeviceAddedInternal. 57 // Calls DeviceAddedInternal.
65 DeviceType DeviceAddedForTesting(int device_id, 58 DeviceType DeviceAddedForTesting(int device_id,
66 const std::string& device_name); 59 const std::string& device_name);
67 60
68 // Calls RewriteLocatedEvent(). 61 // Calls RewriteLocatedEvent().
69 void RewriteLocatedEventForTesting(const ui::Event& event, int* flags); 62 void RewriteLocatedEventForTesting(const ui::Event& event, int* flags);
70 63
71 #if defined(USE_X11) 64 #if defined(USE_X11)
(...skipping 26 matching lines...) Expand all
98 virtual void WillProcessEvent(const ui::PlatformEvent& event) OVERRIDE; 91 virtual void WillProcessEvent(const ui::PlatformEvent& event) OVERRIDE;
99 virtual void DidProcessEvent(const ui::PlatformEvent& event) OVERRIDE; 92 virtual void DidProcessEvent(const ui::PlatformEvent& event) OVERRIDE;
100 93
101 // DeviceHierarchyObserver: 94 // DeviceHierarchyObserver:
102 virtual void DeviceHierarchyChanged() OVERRIDE; 95 virtual void DeviceHierarchyChanged() OVERRIDE;
103 virtual void DeviceAdded(int device_id) OVERRIDE; 96 virtual void DeviceAdded(int device_id) OVERRIDE;
104 virtual void DeviceRemoved(int device_id) OVERRIDE; 97 virtual void DeviceRemoved(int device_id) OVERRIDE;
105 #endif 98 #endif
106 99
107 private: 100 private:
108 // Things that keyboard-related rewriter phases can change about an Event. 101 // Things that internal rewriter phases can change about an Event.
109 struct MutableKeyState { 102 struct MutableKeyState {
110 int flags; 103 int flags;
111 ui::KeyboardCode key_code; 104 ui::KeyboardCode key_code;
112 }; 105 };
113 106
114 // Tables of direct remappings for |RewriteWithKeyboardRemappingsByKeyCode()|. 107 // Tables of direct remappings for |RewriteWithKeyboardRemappingsByKeyCode()|.
115 struct KeyboardRemapping { 108 struct KeyboardRemapping {
116 ui::KeyboardCode input_key_code; 109 ui::KeyboardCode input_key_code;
117 int input_flags; 110 int input_flags;
118 ui::KeyboardCode output_key_code; 111 ui::KeyboardCode output_key_code;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 // Rewrite a particular kind of event. 150 // Rewrite a particular kind of event.
158 ui::EventRewriteStatus RewriteKeyEvent( 151 ui::EventRewriteStatus RewriteKeyEvent(
159 const ui::KeyEvent& key_event, 152 const ui::KeyEvent& key_event,
160 scoped_ptr<ui::Event>* rewritten_event); 153 scoped_ptr<ui::Event>* rewritten_event);
161 ui::EventRewriteStatus RewriteMouseEvent( 154 ui::EventRewriteStatus RewriteMouseEvent(
162 const ui::MouseEvent& mouse_event, 155 const ui::MouseEvent& mouse_event,
163 scoped_ptr<ui::Event>* rewritten_event); 156 scoped_ptr<ui::Event>* rewritten_event);
164 ui::EventRewriteStatus RewriteTouchEvent( 157 ui::EventRewriteStatus RewriteTouchEvent(
165 const ui::TouchEvent& touch_event, 158 const ui::TouchEvent& touch_event,
166 scoped_ptr<ui::Event>* rewritten_event); 159 scoped_ptr<ui::Event>* rewritten_event);
167 ui::EventRewriteStatus RewriteScrollEvent(
168 const ui::ScrollEvent& scroll_event,
169 scoped_ptr<ui::Event>* rewritten_event);
170 160
171 // Rewriter phases. These can inspect the original |event|, but operate using 161 // Rewriter phases. These can inspect the original |event|, but operate using
172 // the current |state|, which may have been modified by previous phases. 162 // the current |state|, which may have been modified by previous phases.
173 void RewriteModifierKeys(const ui::KeyEvent& event, MutableKeyState* state); 163 void RewriteModifierKeys(const ui::KeyEvent& event, MutableKeyState* state);
174 void RewriteNumPadKeys(const ui::KeyEvent& event, MutableKeyState* state); 164 void RewriteNumPadKeys(const ui::KeyEvent& event, MutableKeyState* state);
175 void RewriteExtendedKeys(const ui::KeyEvent& event, MutableKeyState* state); 165 void RewriteExtendedKeys(const ui::KeyEvent& event, MutableKeyState* state);
176 void RewriteFunctionKeys(const ui::KeyEvent& event, MutableKeyState* state); 166 void RewriteFunctionKeys(const ui::KeyEvent& event, MutableKeyState* state);
177 void RewriteLocatedEvent(const ui::Event& event, int* flags); 167 void RewriteLocatedEvent(const ui::Event& event, int* flags);
178 168
179 // A set of device IDs whose press event has been rewritten. 169 // A set of device IDs whose press event has been rewritten.
180 std::set<int> pressed_device_ids_; 170 std::set<int> pressed_device_ids_;
181 171
182 std::map<int, DeviceType> device_id_to_type_; 172 std::map<int, DeviceType> device_id_to_type_;
183 int last_device_id_; 173 int last_device_id_;
184 174
185 chromeos::input_method::ImeKeyboard* ime_keyboard_for_testing_; 175 chromeos::input_method::ImeKeyboard* ime_keyboard_for_testing_;
186 const PrefService* pref_service_for_testing_; 176 const PrefService* pref_service_for_testing_;
187 177
188 // The sticky keys controller is not owned here;
189 // at time of writing it is a singleton in ash::Shell>
190 ash::StickyKeysController* sticky_keys_controller_;
191
192 DISALLOW_COPY_AND_ASSIGN(EventRewriter); 178 DISALLOW_COPY_AND_ASSIGN(EventRewriter);
193 }; 179 };
194 180
195 } // namespace chromeos 181 } // namespace chromeos
196 182
197 #endif // CHROME_BROWSER_CHROMEOS_EVENTS_EVENT_REWRITER_H_ 183 #endif // CHROME_BROWSER_CHROMEOS_EVENTS_EVENT_REWRITER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698