chromium/remoting/client/input/normalizing_input_filter_win.h

// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef REMOTING_CLIENT_INPUT_NORMALIZING_INPUT_FILTER_WIN_H_
#define REMOTING_CLIENT_INPUT_NORMALIZING_INPUT_FILTER_WIN_H_

#include "remoting/proto/event.pb.h"
#include "remoting/protocol/input_filter.h"

namespace remoting {

// NormalizingInputFilterWin works around a quirk in Windows' handling of the
// AltGr key.  When using a layout that treats RightAlt as AltGr, Windows
// generates the following for an AltGr keydown/keyup cycle:
//
//   keydown LeftControl
//   keydown RightAlt
//   keyup LeftControl
//   keyup RightAlt
//
// In a layout without AltGr the key will generate only RightAlt events.
//
// This filter captures LeftControl keydown events and defers them until
// some other event occurs; if the next event is a RightAlt keydown then
// the LeftControl is ignored and neither keydown nor keyup will be sent
// for it.
class NormalizingInputFilterWin : public protocol::InputFilter {};

}  // namespace remoting

#endif  // REMOTING_CLIENT_INPUT_NORMALIZING_INPUT_FILTER_WIN_H_