OLD | NEW |
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 #include "chrome/browser/chromeos/events/event_rewriter.h" | 5 #include "chrome/browser/chromeos/events/event_rewriter.h" |
6 | 6 |
7 #include <X11/extensions/XInput2.h> | 7 #include <X11/extensions/XInput2.h> |
8 #include <X11/keysym.h> | 8 #include <X11/keysym.h> |
9 #include <X11/XF86keysym.h> | 9 #include <X11/XF86keysym.h> |
10 #include <X11/Xlib.h> | 10 #include <X11/Xlib.h> |
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 device_id_to_type_.find(device_id); | 186 device_id_to_type_.find(device_id); |
187 if (iter == device_id_to_type_.end()) { | 187 if (iter == device_id_to_type_.end()) { |
188 // |device_id| is unknown. This means the device was connected before | 188 // |device_id| is unknown. This means the device was connected before |
189 // booting the OS. Query the name of the device and add it to the map. | 189 // booting the OS. Query the name of the device and add it to the map. |
190 DeviceAdded(device_id); | 190 DeviceAdded(device_id); |
191 } | 191 } |
192 | 192 |
193 last_device_id_ = device_id; | 193 last_device_id_ = device_id; |
194 } | 194 } |
195 | 195 |
196 base::EventStatus EventRewriter::WillProcessEvent( | 196 void EventRewriter::WillProcessEvent(const base::NativeEvent& event) { |
197 const base::NativeEvent& event) { | |
198 XEvent* xevent = event; | 197 XEvent* xevent = event; |
199 if (xevent->type == KeyPress || xevent->type == KeyRelease) { | 198 if (xevent->type == KeyPress || xevent->type == KeyRelease) { |
200 Rewrite(xevent); | 199 Rewrite(xevent); |
201 } else if (xevent->type == GenericEvent) { | 200 } else if (xevent->type == GenericEvent) { |
202 XIDeviceEvent* xievent = static_cast<XIDeviceEvent*>(xevent->xcookie.data); | 201 XIDeviceEvent* xievent = static_cast<XIDeviceEvent*>(xevent->xcookie.data); |
203 if (xievent->evtype == XI_KeyPress || xievent->evtype == XI_KeyRelease) { | 202 if (xievent->evtype == XI_KeyPress || xievent->evtype == XI_KeyRelease) { |
204 if (xievent->deviceid == xievent->sourceid) | 203 if (xievent->deviceid == xievent->sourceid) |
205 DeviceKeyPressedOrReleased(xievent->deviceid); | 204 DeviceKeyPressedOrReleased(xievent->deviceid); |
206 } else { | 205 } else { |
207 RewriteLocatedEvent(xevent); | 206 RewriteLocatedEvent(xevent); |
208 } | 207 } |
209 } else if (xevent->type == MappingNotify) { | 208 } else if (xevent->type == MappingNotify) { |
210 if (xevent->xmapping.request == MappingModifier || | 209 if (xevent->xmapping.request == MappingModifier || |
211 xevent->xmapping.request == MappingKeyboard) { | 210 xevent->xmapping.request == MappingKeyboard) { |
212 RefreshKeycodes(); | 211 RefreshKeycodes(); |
213 } | 212 } |
214 } | 213 } |
215 return base::EVENT_CONTINUE; | |
216 } | 214 } |
217 | 215 |
218 void EventRewriter::DidProcessEvent(const base::NativeEvent& event) { | 216 void EventRewriter::DidProcessEvent(const base::NativeEvent& event) { |
219 } | 217 } |
220 | 218 |
221 void EventRewriter::DeviceHierarchyChanged() {} | 219 void EventRewriter::DeviceHierarchyChanged() {} |
222 | 220 |
223 void EventRewriter::DeviceAdded(int device_id) { | 221 void EventRewriter::DeviceAdded(int device_id) { |
224 DCHECK_NE(XIAllDevices, device_id); | 222 DCHECK_NE(XIAllDevices, device_id); |
225 DCHECK_NE(XIAllMasterDevices, device_id); | 223 DCHECK_NE(XIAllMasterDevices, device_id); |
(...skipping 667 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
893 VLOG(1) << "Apple keyboard '" << device_name << "' connected: " | 891 VLOG(1) << "Apple keyboard '" << device_name << "' connected: " |
894 << "id=" << device_id; | 892 << "id=" << device_id; |
895 } | 893 } |
896 // Always overwrite the existing device_id since the X server may reuse a | 894 // Always overwrite the existing device_id since the X server may reuse a |
897 // device id for an unattached device. | 895 // device id for an unattached device. |
898 device_id_to_type_[device_id] = type; | 896 device_id_to_type_[device_id] = type; |
899 return type; | 897 return type; |
900 } | 898 } |
901 | 899 |
902 } // namespace chromeos | 900 } // namespace chromeos |
OLD | NEW |