blob: 3572813771fa6bdcb4d05617822cfe80d06bf4a4 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef FLUTTER_SHELL_PLATFORM_WINDOWS_KEYBOARD_HANDLER_BASE_H_
#define FLUTTER_SHELL_PLATFORM_WINDOWS_KEYBOARD_HANDLER_BASE_H_
#include <string>
namespace flutter {
// Interface for classes that handles keyboard input events.
//
// Keyboard handlers are added to |FlutterWindowsView| in a chain.
// When a key event arrives, |KeyboardHook| is called on each handler
// until the first one that returns true. Then the proper text hooks
// are called on each handler.
class KeyboardHandlerBase {
public:
using KeyEventCallback = std::function<void(bool)>;
virtual ~KeyboardHandlerBase() = default;
// A function for hooking into keyboard input.
virtual void KeyboardHook(int key,
int scancode,
int action,
char32_t character,
bool extended,
bool was_down,
KeyEventCallback callback) = 0;
// If needed, synthesize modifier keys events by comparing the
// given modifiers state to the known pressing state..
virtual void SyncModifiersIfNeeded(int modifiers_state) = 0;
// Returns the keyboard pressed state.
//
// Returns the keyboard pressed state. The map contains one entry per
// pressed keys, mapping from the logical key to the physical key.
virtual std::map<uint64_t, uint64_t> GetPressedState() = 0;
};
} // namespace flutter
#endif // FLUTTER_SHELL_PLATFORM_WINDOWS_KEYBOARD_HANDLER_BASE_H_