Index: remoting/host/input_injector_x11.cc |
diff --git a/remoting/host/input_injector_x11.cc b/remoting/host/input_injector_x11.cc |
index 1852e9fabc50ab43f2b8ca516d3e752f3674eb7c..55690da30319b8511e4c5b33fe732d50e8e43db4 100644 |
--- a/remoting/host/input_injector_x11.cc |
+++ b/remoting/host/input_injector_x11.cc |
@@ -327,6 +327,14 @@ void InputInjectorX11::Core::InjectTextEvent(const TextEvent& event) { |
return; |
} |
+ // Release all keys before injecting text event. This is necessary to avoid |
+ // any interference with the currently pressed keys. E.g. if Shift is pressed |
+ // when TextEvent is received. |
+ for (int key : pressed_keys_) { |
+ XTestFakeKeyEvent(display_, key, False, CurrentTime); |
+ } |
+ pressed_keys_.clear(); |
+ |
const std::string text = event.text(); |
for (int32 index = 0; index < static_cast<int32>(text.size()); ++index) { |
uint32_t code_point; |