OLD | NEW |
| (Empty) |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "remoting/protocol/input_filter.h" | |
6 | |
7 #include "remoting/proto/event.pb.h" | |
8 | |
9 namespace remoting { | |
10 | |
11 // NormalizingInputFilterCros addresses the problems generated by key rewritings | |
12 // such as Down->PageDown, 1->F1, etc, when keys are pressed in combination with | |
13 // the OSKey (aka Search). Rewriting OSKey+Down, for example, causes us to | |
14 // receive the following: | |
15 // | |
16 // keydown OSKey | |
17 // keydown PageDown | |
18 // keyup PageDown | |
19 // keyup OSKey | |
20 // | |
21 // The host system will therefore behave as if OSKey+PageDown were pressed, | |
22 // rather than PageDown alone. | |
23 class NormalizingInputFilterCros : public protocol::InputFilter { | |
24 public: | |
25 explicit NormalizingInputFilterCros(protocol::InputStub* input_stub); | |
26 ~NormalizingInputFilterCros() override; | |
27 | |
28 // InputFilter overrides. | |
29 void InjectKeyEvent(const protocol::KeyEvent& event) override; | |
30 void InjectMouseEvent(const protocol::MouseEvent& event) override; | |
31 | |
32 private: | |
33 void ProcessKeyDown(const protocol::KeyEvent& event); | |
34 void ProcessKeyUp(const protocol::KeyEvent& event); | |
35 | |
36 void SwitchRewritingKeyToModifying(); | |
37 | |
38 // Holds the keydown event for the most recent OSKey to have been pressed, | |
39 // while it is Rewriting, or we are not yet sure whether it is Normal, | |
40 // Rewriting or Modifying. The event is sent on if we switch to Modifying, or | |
41 // discarded if the OSKey is released while in Rewriting mode. | |
42 protocol::KeyEvent deferred_keydown_event_; | |
43 | |
44 // True while the |rewrite_keydown_event_| key is Rewriting, i.e. was followed | |
45 // by one or more Rewritten key events, and not by any Modified events. | |
46 bool deferred_key_is_rewriting_; | |
47 | |
48 // Stores the code of the OSKey while it is pressed for use as a Modifier. | |
49 uint32 modifying_key_; | |
50 | |
51 // True if the left Alt key is pressed. | |
52 bool left_alt_is_pressed_; | |
53 | |
54 // Previous mouse coordinates. | |
55 int previous_mouse_x_; | |
56 int previous_mouse_y_; | |
57 | |
58 DISALLOW_COPY_AND_ASSIGN(NormalizingInputFilterCros); | |
59 }; | |
60 | |
61 } // namespace remoting | |
OLD | NEW |