| 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 |