Index: remoting/client/plugin/chromoting_instance.cc |
diff --git a/remoting/client/plugin/chromoting_instance.cc b/remoting/client/plugin/chromoting_instance.cc |
index a3544aa9fcbbbd5c0942a44d58875e7a3ca13983..13e36ee4d45bbf88b3d0207690a62434e4fc194b 100644 |
--- a/remoting/client/plugin/chromoting_instance.cc |
+++ b/remoting/client/plugin/chromoting_instance.cc |
@@ -643,8 +643,8 @@ void ChromotingInstance::HandleConnect(const base::DictionaryValue& data) { |
VLOG(0) << "Connecting to " << host_jid |
<< ". Local jid: " << local_jid << "."; |
-#if defined(OS_NACL) |
std::string key_filter; |
+#if defined(OS_NACL) |
if (!data.GetString("keyFilter", &key_filter)) { |
NOTREACHED(); |
normalizing_input_filter_.reset(new protocol::InputFilter(&key_mapper_)); |
@@ -661,12 +661,19 @@ void ChromotingInstance::HandleConnect(const base::DictionaryValue& data) { |
#elif defined(OS_MACOSX) |
normalizing_input_filter_.reset(new NormalizingInputFilterMac(&key_mapper_)); |
#elif defined(OS_CHROMEOS) |
+ key_filter = "cros"; |
normalizing_input_filter_.reset(new NormalizingInputFilterCros(&key_mapper_)); |
#else |
normalizing_input_filter_.reset(new protocol::InputFilter(&key_mapper_)); |
#endif |
input_handler_.set_input_stub(normalizing_input_filter_.get()); |
+ // Enable stuck modifier key detection on platforms other than ChromeOS. |
+ // ChromeOS doesn't set modifier flags for "rewritten" keyboard events |
+ // such as Alt+Backspace, which causes ReleaseAllIfModifiersStuck to |
+ // incorrectly release all keys, so don't enable it on that platform. |
+ input_handler_.set_detect_stuck_modifiers(key_filter != "cros"); |
+ |
// PPB_VideoDecoder is not always enabled because it's broken in some versions |
// of Chrome. See crbug.com/447403 . |
bool enable_video_decode_renderer = false; |