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

Side by Side Diff: remoting/host/input_injector_x11.cc

Issue 1403583003: Use standard DOM code definitions instead of custom. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Reviewer feedback. Created 5 years, 2 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 "remoting/host/input_injector.h" 5 #include "remoting/host/input_injector.h"
6 6
7 #include <X11/extensions/XInput.h> 7 #include <X11/extensions/XInput.h>
8 #include <X11/extensions/XTest.h> 8 #include <X11/extensions/XTest.h>
9 #include <X11/Xlib.h> 9 #include <X11/Xlib.h>
10 #include <X11/XKBlib.h> 10 #include <X11/XKBlib.h>
11 #undef Status // Xlib.h #defines this, which breaks protobuf headers. 11 #undef Status // Xlib.h #defines this, which breaks protobuf headers.
12 12
13 #include <set> 13 #include <set>
14 14
15 #include "base/basictypes.h" 15 #include "base/basictypes.h"
16 #include "base/bind.h" 16 #include "base/bind.h"
17 #include "base/compiler_specific.h" 17 #include "base/compiler_specific.h"
18 #include "base/location.h" 18 #include "base/location.h"
19 #include "base/single_thread_task_runner.h" 19 #include "base/single_thread_task_runner.h"
20 #include "base/strings/utf_string_conversion_utils.h" 20 #include "base/strings/utf_string_conversion_utils.h"
21 #include "remoting/base/logging.h" 21 #include "remoting/base/logging.h"
22 #if defined(OS_CHROMEOS) 22 #if defined(OS_CHROMEOS)
23 #include "remoting/host/chromeos/point_transformer.h" 23 #include "remoting/host/chromeos/point_transformer.h"
24 #endif 24 #endif
25 #include "remoting/host/clipboard.h" 25 #include "remoting/host/clipboard.h"
26 #include "remoting/host/linux/unicode_to_keysym.h" 26 #include "remoting/host/linux/unicode_to_keysym.h"
27 #include "remoting/proto/internal.pb.h" 27 #include "remoting/proto/internal.pb.h"
28 #include "remoting/protocol/usb_key_codes.h"
29 #include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h" 28 #include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h"
29 #include "ui/events/keycodes/dom/dom_code.h"
30 #include "ui/events/keycodes/dom/keycode_converter.h" 30 #include "ui/events/keycodes/dom/keycode_converter.h"
31 31
32 namespace remoting { 32 namespace remoting {
33 33
34 namespace { 34 namespace {
35 35
36 using protocol::ClipboardEvent; 36 using protocol::ClipboardEvent;
37 using protocol::KeyEvent; 37 using protocol::KeyEvent;
38 using protocol::TextEvent; 38 using protocol::TextEvent;
39 using protocol::MouseEvent; 39 using protocol::MouseEvent;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 for (std::vector<uint32_t>::iterator it = keysyms.begin(); 82 for (std::vector<uint32_t>::iterator it = keysyms.begin();
83 it != keysyms.end(); ++it) { 83 it != keysyms.end(); ++it) {
84 if (FindKeycodeForKeySym(display, *it, keycode, modifiers)) { 84 if (FindKeycodeForKeySym(display, *it, keycode, modifiers)) {
85 return true; 85 return true;
86 } 86 }
87 } 87 }
88 88
89 return false; 89 return false;
90 } 90 }
91 91
92 bool IsModifierKey(int usb_keycode) { 92 bool IsModifierKey(ui::DomCode dom_code) {
93 return usb_keycode == kUsbLeftControl || 93 return dom_code == ui::DomCode::CONTROL_LEFT ||
94 usb_keycode == kUsbLeftShift || 94 dom_code == ui::DomCode::SHIFT_LEFT ||
95 usb_keycode == kUsbLeftAlt || 95 dom_code == ui::DomCode::ALT_LEFT ||
96 usb_keycode == kUsbLeftOs || 96 dom_code == ui::DomCode::OS_LEFT ||
97 usb_keycode == kUsbRightControl || 97 dom_code == ui::DomCode::CONTROL_RIGHT ||
98 usb_keycode == kUsbRightShift || 98 dom_code == ui::DomCode::SHIFT_RIGHT ||
99 usb_keycode == kUsbRightAlt || 99 dom_code == ui::DomCode::ALT_RIGHT ||
100 usb_keycode == kUsbRightOs; 100 dom_code == ui::DomCode::OS_RIGHT;
101 } 101 }
102 102
103 // Pixel-to-wheel-ticks conversion ratio used by GTK. 103 // Pixel-to-wheel-ticks conversion ratio used by GTK.
104 // From third_party/WebKit/Source/web/gtk/WebInputEventFactory.cpp . 104 // From third_party/WebKit/Source/web/gtk/WebInputEventFactory.cpp .
105 const float kWheelTicksPerPixel = 3.0f / 160.0f; 105 const float kWheelTicksPerPixel = 3.0f / 160.0f;
106 106
107 // A class to generate events on X11. 107 // A class to generate events on X11.
108 class InputInjectorX11 : public InputInjector { 108 class InputInjectorX11 : public InputInjector {
109 public: 109 public:
110 explicit InputInjectorX11( 110 explicit InputInjectorX11(
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 VLOG(3) << "Converting USB keycode: " << std::hex << event.usb_keycode() 307 VLOG(3) << "Converting USB keycode: " << std::hex << event.usb_keycode()
308 << " to keycode: " << keycode << std::dec; 308 << " to keycode: " << keycode << std::dec;
309 309
310 // Ignore events which can't be mapped. 310 // Ignore events which can't be mapped.
311 if (keycode == ui::KeycodeConverter::InvalidNativeKeycode()) 311 if (keycode == ui::KeycodeConverter::InvalidNativeKeycode())
312 return; 312 return;
313 313
314 if (event.pressed()) { 314 if (event.pressed()) {
315 if (pressed_keys_.find(keycode) != pressed_keys_.end()) { 315 if (pressed_keys_.find(keycode) != pressed_keys_.end()) {
316 // Ignore repeats for modifier keys. 316 // Ignore repeats for modifier keys.
317 if (IsModifierKey(event.usb_keycode())) 317 if (IsModifierKey(static_cast<ui::DomCode>(event.usb_keycode())))
318 return; 318 return;
319 // Key is already held down, so lift the key up to ensure this repeated 319 // Key is already held down, so lift the key up to ensure this repeated
320 // press takes effect. 320 // press takes effect.
321 XTestFakeKeyEvent(display_, keycode, False, CurrentTime); 321 XTestFakeKeyEvent(display_, keycode, False, CurrentTime);
322 } 322 }
323 323
324 if (pressed_keys_.empty()) { 324 if (pressed_keys_.empty()) {
325 // Disable auto-repeat, if necessary, to avoid triggering auto-repeat 325 // Disable auto-repeat, if necessary, to avoid triggering auto-repeat
326 // if network congestion delays the key-up event from the client. 326 // if network congestion delays the key-up event from the client.
327 saved_auto_repeat_enabled_ = IsAutoRepeatEnabled(); 327 saved_auto_repeat_enabled_ = IsAutoRepeatEnabled();
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
655 return nullptr; 655 return nullptr;
656 return injector.Pass(); 656 return injector.Pass();
657 } 657 }
658 658
659 // static 659 // static
660 bool InputInjector::SupportsTouchEvents() { 660 bool InputInjector::SupportsTouchEvents() {
661 return false; 661 return false;
662 } 662 }
663 663
664 } // namespace remoting 664 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/client/normalizing_input_filter_mac_unittest.cc ('k') | remoting/host/win/session_input_injector.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698