#include "flutter/shell/platform/linux/fl_key_embedder_responder.h"#include <gtk/gtk.h>#include <cinttypes>#include "flutter/shell/platform/embedder/embedder.h"#include "flutter/shell/platform/linux/fl_key_mapping.h"Go to the source code of this file.
Classes | |
| struct | _FlKeyEmbedderResponder |
Functions | |
| static uint64_t | lookup_hash_table (GHashTable *table, uint64_t key) |
| static gboolean | hash_table_find_equal_value (gpointer key, gpointer value, gpointer user_data) |
| static uint64_t | reverse_lookup_hash_table (GHashTable *table, uint64_t value) |
| static uint64_t | to_lower (uint64_t n) |
| static void | fl_key_embedder_responder_dispose (GObject *object) |
| static void | fl_key_embedder_responder_class_init (FlKeyEmbedderResponderClass *klass) |
| static void | fl_key_embedder_responder_init (FlKeyEmbedderResponder *self) |
| FlKeyEmbedderResponder * | fl_key_embedder_responder_new (FlEngine *engine) |
| static uint64_t | apply_id_plane (uint64_t logical_id, uint64_t plane) |
| static uint64_t | event_to_physical_key (FlKeyEvent *event) |
| static uint64_t | event_to_logical_key (FlKeyEvent *event) |
| static uint64_t | event_to_timestamp (FlKeyEvent *event) |
| static char * | event_to_character (FlKeyEvent *event) |
| static void | synthesize_simple_event (FlKeyEmbedderResponder *self, FlutterKeyEventType type, uint64_t physical, uint64_t logical, double timestamp) |
| static void | update_pressing_state (FlKeyEmbedderResponder *self, uint64_t physical_key, uint64_t logical_key) |
| static void | possibly_update_lock_bit (FlKeyEmbedderResponder *self, uint64_t logical_key, bool is_down) |
| static void | update_mapping_record (FlKeyEmbedderResponder *self, uint64_t physical_key, uint64_t logical_key) |
| static void | synchronize_pressed_states (FlKeyEmbedderResponder *self, guint state, double timestamp) |
| static int | find_stage_by_record (bool is_down, bool is_enabled) |
| static int | find_stage_by_self_event (int stage_by_record, bool is_down_event, bool is_state_on, bool reverse_state_logic) |
| static int | find_stage_by_others_event (int stage_by_record, bool is_state_on) |
| static void | update_caps_lock_state_logic_inferrence (FlKeyEmbedderResponder *self, bool is_down_event, bool enabled_by_state, int stage_by_record) |
| static void | synchronize_lock_states (FlKeyEmbedderResponder *self, guint state, double timestamp, bool is_down, uint64_t event_logical_key) |
| static uint64_t | corrected_modifier_physical_key (GHashTable *modifier_bit_to_checked_keys, uint64_t physical_key_from_event, uint64_t logical_key) |
| static void | fl_key_embedder_responder_handle_event_impl (FlKeyEmbedderResponder *responder, FlKeyEvent *event, uint64_t specified_logical_key, GTask *task) |
| void | fl_key_embedder_responder_handle_event (FlKeyEmbedderResponder *self, FlKeyEvent *event, uint64_t specified_logical_key, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) |
| gboolean | fl_key_embedder_responder_handle_event_finish (FlKeyEmbedderResponder *self, GAsyncResult *result, gboolean *handled, GError **error) |
| void | fl_key_embedder_responder_sync_modifiers_if_needed (FlKeyEmbedderResponder *self, guint state, double event_time) |
| GHashTable * | fl_key_embedder_responder_get_pressed_state (FlKeyEmbedderResponder *self) |
Variables | |
| constexpr uint64_t | kMicrosecondsPerMillisecond = 1000 |
| static const FlutterKeyEvent | kEmptyEvent |
|
static |
Definition at line 217 of file fl_key_embedder_responder.cc.
References kValueMask.
Referenced by event_to_logical_key(), and event_to_physical_key().
|
static |
Definition at line 603 of file fl_key_embedder_responder.cc.
References FlKeyEmbedderCheckedKey::primary_logical_key, FlKeyEmbedderCheckedKey::primary_physical_key, FlKeyEmbedderCheckedKey::secondary_logical_key, and value.
Referenced by fl_key_embedder_responder_handle_event_impl().
|
static |
Definition at line 250 of file fl_key_embedder_responder.cc.
References fl_key_event_get_keyval().
Referenced by fl_key_embedder_responder_handle_event_impl().
|
static |
Definition at line 229 of file fl_key_embedder_responder.cc.
References apply_id_plane(), fl_key_event_get_keyval(), gtk_keyval_to_logical_key_map, kGtkPlane, kUnicodePlane, and to_lower().
Referenced by fl_key_embedder_responder_handle_event_impl().
|
static |
Definition at line 221 of file fl_key_embedder_responder.cc.
References apply_id_plane(), fl_key_event_get_keycode(), kGtkPlane, and xkb_to_physical_key_map.
Referenced by fl_key_embedder_responder_handle_event_impl().
|
static |
Definition at line 243 of file fl_key_embedder_responder.cc.
References fl_key_event_get_time(), and kMicrosecondsPerMillisecond.
Referenced by fl_key_embedder_responder_handle_event_impl().
|
static |
Definition at line 450 of file fl_key_embedder_responder.cc.
Referenced by synchronize_lock_states().
|
static |
Definition at line 423 of file fl_key_embedder_responder.cc.
References is_enabled().
Referenced by synchronize_lock_states().
|
static |
Definition at line 435 of file fl_key_embedder_responder.cc.
Referenced by synchronize_lock_states(), and update_caps_lock_state_logic_inferrence().
|
static |
Definition at line 152 of file fl_key_embedder_responder.cc.
References fl_key_embedder_responder_dispose().
|
static |
Definition at line 163 of file fl_key_embedder_responder.cc.
References self.
Referenced by fl_key_embedder_responder_class_init().
| GHashTable * fl_key_embedder_responder_get_pressed_state | ( | FlKeyEmbedderResponder * | responder | ) |
fl_key_embedder_responder_get_pressed_state: @responder: the #FlKeyEmbedderResponder self.
Returns the keyboard pressed state. The hash table contains one entry per pressed keys, mapping from the logical key to the physical key.
Definition at line 782 of file fl_key_embedder_responder.cc.
References self.
Referenced by fl_keyboard_manager_get_pressed_state().
| void fl_key_embedder_responder_handle_event | ( | FlKeyEmbedderResponder * | responder, |
| FlKeyEvent * | event, | ||
| uint64_t | specified_logical_key, | ||
| GCancellable * | cancellable, | ||
| GAsyncReadyCallback | callback, | ||
| gpointer | user_data | ||
| ) |
fl_key_embedder_responder_handle_event: @responder: the #FlKeyEmbedderResponder self. @event: the event to be handled. Must not be null. The object is managed by callee and must not be assumed available after this function. @specified_logical_key: @cancellable: (allow-none): a #GCancellable or NULL. @callback: (scope async): a #GAsyncReadyCallback to call when the view is added. @user_data: (closure): user data to pass to @callback.
Let the responder handle an event, expecting the responder to report whether to handle the event.
Definition at line 736 of file fl_key_embedder_responder.cc.
References callback, engine, fl_engine_send_key_event(), fl_key_embedder_responder_handle_event_impl(), g_autoptr(), kEmptyEvent, self, and user_data.
Referenced by fl_keyboard_manager_handle_event(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), and TEST().
| gboolean fl_key_embedder_responder_handle_event_finish | ( | FlKeyEmbedderResponder * | responder, |
| GAsyncResult * | result, | ||
| gboolean * | handled, | ||
| GError ** | error | ||
| ) |
fl_key_embedder_responder_handle_event_finish: @responder: an #FlKeyEmbedderResponder.
error is not NULL, *error must be initialized (typically NULL, but an error from a previous call using GLib error handling is explicitly valid).Completes request started with fl_key_embedder_responder_handle_event().
Returns TRUE on success.
Definition at line 756 of file fl_key_embedder_responder.cc.
References error, self, and TRUE.
Referenced by responder_handle_embedder_event_cb(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), and TEST().
|
static |
Definition at line 641 of file fl_key_embedder_responder.cc.
References FlutterKeyEvent::character, corrected_modifier_physical_key(), engine, event_to_character(), event_to_logical_key(), event_to_physical_key(), event_to_timestamp(), fl_engine_send_key_event(), fl_key_event_get_is_press(), fl_key_event_get_state(), g_autoptr(), kFlutterKeyEventTypeDown, kFlutterKeyEventTypeRepeat, kFlutterKeyEventTypeUp, FlutterKeyEvent::logical, lookup_hash_table(), FlutterKeyEvent::physical, possibly_update_lock_bit(), self, FlutterKeyEvent::struct_size, synchronize_lock_states(), synchronize_pressed_states(), FlutterKeyEvent::synthesized, FlutterKeyEvent::timestamp, TRUE, FlutterKeyEvent::type, update_mapping_record(), update_pressing_state(), and user_data.
Referenced by fl_key_embedder_responder_handle_event().
|
static |
Definition at line 158 of file fl_key_embedder_responder.cc.
References self.
| FlKeyEmbedderResponder * fl_key_embedder_responder_new | ( | FlEngine * | engine | ) |
FlKeyEmbedderResponder:
A #FlKeyResponder that handles events by sending the converted events through the embedder API.
This class communicates with the HardwareKeyboard API in the framework. fl_key_embedder_responder_new: @engine: The #FlEngine, whose the embedder API will be used to send the event.
Creates a new #FlKeyEmbedderResponder.
Returns: a new #FlKeyEmbedderResponder.
Definition at line 180 of file fl_key_embedder_responder.cc.
References engine, g_hash_table_insert(), initialize_lock_bit_to_checked_keys(), initialize_modifier_bit_to_checked_keys(), key, FlKeyEmbedderCheckedKey::primary_logical_key, self, uint64_to_gpointer(), and value.
Referenced by fl_keyboard_manager_new(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), and TEST().
| void fl_key_embedder_responder_sync_modifiers_if_needed | ( | FlKeyEmbedderResponder * | responder, |
| guint | state, | ||
| double | event_time | ||
| ) |
fl_key_embedder_responder_sync_modifiers_if_needed: @responder: the #FlKeyEmbedderResponder self. @state: the state of the modifiers mask. @event_time: the time attribute of the incoming GDK event.
If needed, synthesize modifier keys up and down event by comparing their current pressing states with the given modifiers mask.
Definition at line 773 of file fl_key_embedder_responder.cc.
References kMicrosecondsPerMillisecond, self, and synchronize_pressed_states().
Referenced by fl_keyboard_manager_sync_modifier_if_needed().
|
static |
Definition at line 35 of file fl_key_embedder_responder.cc.
References gpointer_to_uint64(), user_data, and value.
Referenced by reverse_lookup_hash_table().
|
static |
Definition at line 30 of file fl_key_embedder_responder.cc.
References gpointer_to_uint64(), key, and uint64_to_gpointer().
Referenced by fl_key_embedder_responder_handle_event_impl(), synchronize_lock_states(), synchronize_pressed_states(), and update_pressing_state().
|
static |
Definition at line 311 of file fl_key_embedder_responder.cc.
References self, and uint64_to_gpointer().
Referenced by fl_key_embedder_responder_handle_event_impl(), and synchronize_lock_states().
|
static |
Definition at line 47 of file fl_key_embedder_responder.cc.
References gpointer_to_uint64(), hash_table_find_equal_value(), uint64_to_gpointer(), and value.
Referenced by synchronize_pressed_states().
|
static |
Definition at line 503 of file fl_key_embedder_responder.cc.
References find_stage_by_others_event(), find_stage_by_record(), find_stage_by_self_event(), FlKeyEmbedderCheckedKey::is_caps_lock, key, kFlutterKeyEventTypeDown, kFlutterKeyEventTypeUp, lookup_hash_table(), possibly_update_lock_bit(), FlKeyEmbedderCheckedKey::primary_logical_key, FlKeyEmbedderCheckedKey::primary_physical_key, self, synthesize_simple_event(), type, update_caps_lock_state_logic_inferrence(), update_mapping_record(), update_pressing_state(), and value.
Referenced by fl_key_embedder_responder_handle_event_impl().
|
static |
Definition at line 333 of file fl_key_embedder_responder.cc.
References key, kFlutterKeyEventTypeDown, kFlutterKeyEventTypeUp, length, lookup_hash_table(), FlKeyEmbedderCheckedKey::primary_logical_key, FlKeyEmbedderCheckedKey::primary_physical_key, reverse_lookup_hash_table(), FlKeyEmbedderCheckedKey::secondary_logical_key, self, synthesize_simple_event(), update_mapping_record(), update_pressing_state(), and value.
Referenced by fl_key_embedder_responder_handle_event_impl(), and fl_key_embedder_responder_sync_modifiers_if_needed().
|
static |
Definition at line 264 of file fl_key_embedder_responder.cc.
References FlutterKeyEvent::character, engine, fl_engine_send_key_event(), g_autoptr(), FlutterKeyEvent::logical, FlutterKeyEvent::physical, self, FlutterKeyEvent::struct_size, FlutterKeyEvent::synthesized, FlutterKeyEvent::timestamp, type, and FlutterKeyEvent::type.
Referenced by synchronize_lock_states(), and synchronize_pressed_states().
|
static |
Definition at line 52 of file fl_key_embedder_responder.cc.
Referenced by event_to_logical_key().
|
static |
Definition at line 477 of file fl_key_embedder_responder.cc.
References find_stage_by_self_event(), and self.
Referenced by synchronize_lock_states().
|
static |
Definition at line 324 of file fl_key_embedder_responder.cc.
References g_hash_table_insert(), self, and uint64_to_gpointer().
Referenced by fl_key_embedder_responder_handle_event_impl(), synchronize_lock_states(), and synchronize_pressed_states().
|
static |
Definition at line 290 of file fl_key_embedder_responder.cc.
References g_hash_table_insert(), lookup_hash_table(), self, and uint64_to_gpointer().
Referenced by fl_key_embedder_responder_handle_event_impl(), synchronize_lock_states(), and synchronize_pressed_states().
|
static |
Definition at line 15 of file fl_key_embedder_responder.cc.
Referenced by fl_key_embedder_responder_handle_event().
|
constexpr |
Definition at line 13 of file fl_key_embedder_responder.cc.
Referenced by event_to_timestamp(), and fl_key_embedder_responder_sync_modifiers_if_needed().