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