| // 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_LINUX_FL_KEY_EMBEDDER_RESPONDER_PRIVATE_H_ |
| #define FLUTTER_SHELL_PLATFORM_LINUX_FL_KEY_EMBEDDER_RESPONDER_PRIVATE_H_ |
| |
| #include <gdk/gdk.h> |
| |
| #include "flutter/shell/platform/linux/fl_key_responder.h" |
| #include "flutter/shell/platform/linux/fl_keyboard_manager.h" |
| #include "flutter/shell/platform/linux/public/flutter_linux/fl_binary_messenger.h" |
| #include "flutter/shell/platform/linux/public/flutter_linux/fl_value.h" |
| |
| /** |
| * FlKeyEmbedderCheckedKey: |
| * |
| * The information for a key that #FlKeyEmbedderResponder should keep state |
| * synchronous on. For every record of #FlKeyEmbedderCheckedKey, the responder |
| * will check the #GdkEvent::state and the internal state, and synchronize |
| * events if they don't match. |
| * |
| * #FlKeyEmbedderCheckedKey can synchronize pressing states (such as |
| * whether ControlLeft is pressed) or lock states (such as whether CapsLock |
| * is enabled). |
| * |
| * #FlKeyEmbedderCheckedKey has a "primary key". For pressing states, the |
| * primary key is the left of the modifiers. For lock states, the primary |
| * key is the key. |
| * |
| * #FlKeyEmbedderCheckedKey may also have a "secondary key". It is only |
| * available to pressing states, which is the right of the modifiers. |
| */ |
| typedef struct { |
| // The physical key for the primary key. |
| uint64_t primary_physical_key; |
| // The logical key for the primary key. |
| uint64_t primary_logical_key; |
| // The logical key for the secondary key. |
| uint64_t secondary_logical_key; |
| // Whether this key is CapsLock. CapsLock uses a different event model in GDK |
| // and needs special treatment. |
| bool is_caps_lock; |
| } FlKeyEmbedderCheckedKey; |
| |
| #endif // FLUTTER_SHELL_PLATFORM_LINUX_FL_KEY_EMBEDDER_RESPONDER_PRIVATE_H_ |