Flutter Engine
fl_key_channel_responder.cc File Reference
#include "flutter/shell/platform/linux/fl_key_channel_responder.h"
#include <gtk/gtk.h>
#include <cinttypes>
#include "flutter/shell/platform/linux/public/flutter_linux/fl_basic_message_channel.h"
#include "flutter/shell/platform/linux/public/flutter_linux/fl_json_message_codec.h"

Go to the source code of this file.

Classes

struct  _FlKeyChannelUserData
 
struct  _FlKeyChannelResponder
 

Functions

 G_DECLARE_FINAL_TYPE (FlKeyChannelUserData, fl_key_channel_user_data, FL, KEY_CHANNEL_USER_DATA, GObject)
 
static void fl_key_channel_user_data_dispose (GObject *object)
 
static void fl_key_channel_user_data_class_init (FlKeyChannelUserDataClass *klass)
 
static void fl_key_channel_user_data_init (FlKeyChannelUserData *self)
 
static FlKeyChannelUserData * fl_key_channel_user_data_new (FlKeyChannelResponder *responder, FlKeyResponderAsyncCallback callback, gpointer user_data)
 
static void fl_key_channel_responder_iface_init (FlKeyResponderInterface *iface)
 
 G_DEFINE_TYPE_WITH_CODE (FlKeyChannelResponder, fl_key_channel_responder, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE(FL_TYPE_KEY_RESPONDER, fl_key_channel_responder_iface_init)) static void fl_key_channel_responder_handle_event(FlKeyResponder *responder
 
static void handle_response (GObject *object, GAsyncResult *result, gpointer user_data)
 
static void fl_key_channel_responder_dispose (GObject *object)
 
static void fl_key_channel_responder_class_init (FlKeyChannelResponderClass *klass)
 
static void fl_key_channel_responder_init (FlKeyChannelResponder *self)
 
FlKeyChannelResponder * fl_key_channel_responder_new (FlBinaryMessenger *messenger, FlKeyChannelResponderMock *mock)
 
static void fl_key_channel_responder_handle_event (FlKeyResponder *responder, FlKeyEvent *event, FlKeyResponderAsyncCallback callback, gpointer user_data)
 

Variables

static constexpr char kChannelName [] = "flutter/keyevent"
 
static constexpr char kTypeKey [] = "type"
 
static constexpr char kTypeValueUp [] = "keyup"
 
static constexpr char kTypeValueDown [] = "keydown"
 
static constexpr char kKeymapKey [] = "keymap"
 
static constexpr char kKeyCodeKey [] = "keyCode"
 
static constexpr char kScanCodeKey [] = "scanCode"
 
static constexpr char kModifiersKey [] = "modifiers"
 
static constexpr char kToolkitKey [] = "toolkit"
 
static constexpr char kUnicodeScalarValuesKey [] = "unicodeScalarValues"
 
static constexpr char kGtkToolkit [] = "gtk"
 
static constexpr char kLinuxKeymap [] = "linux"
 
FlKeyEventevent
 
FlKeyEvent FlKeyResponderAsyncCallback callback
 
FlKeyEvent FlKeyResponderAsyncCallback gpointer user_data
 

Function Documentation

◆ fl_key_channel_responder_class_init()

static void fl_key_channel_responder_class_init ( FlKeyChannelResponderClass *  klass)
static

Definition at line 171 of file fl_key_channel_responder.cc.

References fl_key_channel_responder_dispose().

172  {
173  G_OBJECT_CLASS(klass)->dispose = fl_key_channel_responder_dispose;
174 }
static void fl_key_channel_responder_dispose(GObject *object)

◆ fl_key_channel_responder_dispose()

static void fl_key_channel_responder_dispose ( GObject *  object)
static

Definition at line 162 of file fl_key_channel_responder.cc.

Referenced by fl_key_channel_responder_class_init().

162  {
163  FlKeyChannelResponder* self = FL_KEY_CHANNEL_RESPONDER(object);
164 
165  g_clear_object(&self->channel);
166 
167  G_OBJECT_CLASS(fl_key_channel_responder_parent_class)->dispose(object);
168 }

◆ fl_key_channel_responder_handle_event()

static void fl_key_channel_responder_handle_event ( FlKeyResponder *  responder,
FlKeyEvent event,
FlKeyResponderAsyncCallback  callback,
gpointer  user_data 
)
static

Definition at line 203 of file fl_key_channel_responder.cc.

References flutter::data, FALSE, fl_basic_message_channel_send(), fl_key_channel_user_data_new(), fl_value_new_int(), fl_value_new_map(), fl_value_new_string(), fl_value_set_string_take(), handle_response(), _FlKeyEvent::keyval, kGtkToolkit, kKeyCodeKey, kKeymapKey, kLinuxKeymap, kModifiersKey, kScanCodeKey, kToolkitKey, kTypeKey, kTypeValueDown, kTypeValueUp, kUnicodeScalarValuesKey, state, and type.

Referenced by fl_key_channel_responder_iface_init().

207  {
208  FlKeyChannelResponder* self = FL_KEY_CHANNEL_RESPONDER(responder);
209  g_return_if_fail(event != nullptr);
210  g_return_if_fail(callback != nullptr);
211 
212  const gchar* type = event->is_press ? kTypeValueDown : kTypeValueUp;
213  int64_t scan_code = event->keycode;
214  int64_t unicode_scarlar_values = gdk_keyval_to_unicode(event->keyval);
215 
216  // For most modifier keys, GTK keeps track of the "pressed" state of the
217  // modifier keys. Flutter uses this information to keep modifier keys from
218  // being "stuck" when a key-up event is lost because it happens after the app
219  // loses focus.
220  //
221  // For Lock keys (ShiftLock, CapsLock, NumLock), however, GTK keeps track of
222  // the state of the locks themselves, not the "pressed" state of the key.
223  //
224  // Since Flutter expects the "pressed" state of the modifier keys, the lock
225  // state for these keys is discarded here, and it is substituted for the
226  // pressed state of the key.
227  //
228  // This code has the flaw that if a key event is missed due to the app losing
229  // focus, then this state will still think the key is pressed when it isn't,
230  // but that is no worse than for "regular" keys until we implement the
231  // sync/cancel events on app focus changes.
232  //
233  // This is necessary to do here instead of in the framework because Flutter
234  // does modifier key syncing in the framework, and will turn on/off these keys
235  // as being "pressed" whenever the lock is on, which breaks a lot of
236  // interactions (for example, if shift-lock is on, tab traversal is broken).
237 
238  // Remove lock states from state mask.
239  guint state = event->state & ~(GDK_LOCK_MASK | GDK_MOD2_MASK);
240 
241  static bool shift_lock_pressed = FALSE;
242  static bool caps_lock_pressed = FALSE;
243  static bool num_lock_pressed = FALSE;
244  switch (event->keyval) {
245  case GDK_KEY_Num_Lock:
246  num_lock_pressed = event->is_press;
247  break;
248  case GDK_KEY_Caps_Lock:
249  caps_lock_pressed = event->is_press;
250  break;
251  case GDK_KEY_Shift_Lock:
252  shift_lock_pressed = event->is_press;
253  break;
254  }
255 
256  // Add back in the state matching the actual pressed state of the lock keys,
257  // not the lock states.
258  state |= (shift_lock_pressed || caps_lock_pressed) ? GDK_LOCK_MASK : 0x0;
259  state |= num_lock_pressed ? GDK_MOD2_MASK : 0x0;
260 
261  g_autoptr(FlValue) message = fl_value_new_map();
269  fl_value_new_int(event->keyval));
271  if (unicode_scarlar_values != 0) {
273  fl_value_new_int(unicode_scarlar_values));
274  }
275 
276  FlKeyChannelUserData* data =
278  // Send the message off to the framework for handling (or not).
279  fl_basic_message_channel_send(self->channel, message, nullptr,
280  handle_response, data);
281 }
static constexpr char kTypeValueUp[]
static constexpr char kKeymapKey[]
KeyCallType type
static constexpr char kToolkitKey[]
FlKeyEvent FlKeyResponderAsyncCallback gpointer user_data
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:40
static constexpr char kKeyCodeKey[]
G_MODULE_EXPORT FlValue * fl_value_new_map()
Definition: fl_value.cc:355
static constexpr char kUnicodeScalarValuesKey[]
static constexpr char kGtkToolkit[]
guint keyval
Definition: fl_key_event.h:39
static constexpr char kTypeValueDown[]
FlKeyEvent FlKeyResponderAsyncCallback callback
static constexpr char kLinuxKeymap[]
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot data
Definition: switches.h:41
static FlKeyChannelUserData * fl_key_channel_user_data_new(FlKeyChannelResponder *responder, FlKeyResponderAsyncCallback callback, gpointer user_data)
static void handle_response(GObject *object, GAsyncResult *result, gpointer user_data)
G_MODULE_EXPORT FlValue * fl_value_new_int(int64_t value)
Definition: fl_value.cc:251
G_MODULE_EXPORT FlValue * fl_value_new_string(const gchar *value)
Definition: fl_value.cc:265
G_MODULE_EXPORT void fl_basic_message_channel_send(FlBasicMessageChannel *self, FlValue *message, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
static constexpr char kScanCodeKey[]
static constexpr char kTypeKey[]
G_MODULE_EXPORT void fl_value_set_string_take(FlValue *self, const gchar *key, FlValue *value)
Definition: fl_value.cc:610
return FALSE
AtkStateType state
static constexpr char kModifiersKey[]

◆ fl_key_channel_responder_iface_init()

static void fl_key_channel_responder_iface_init ( FlKeyResponderInterface *  iface)
static

Definition at line 121 of file fl_key_channel_responder.cc.

References fl_key_channel_responder_handle_event().

122  {
123  iface->handle_event = fl_key_channel_responder_handle_event;
124 }
static void fl_key_channel_responder_handle_event(FlKeyResponder *responder, FlKeyEvent *event, FlKeyResponderAsyncCallback callback, gpointer user_data)

◆ fl_key_channel_responder_init()

static void fl_key_channel_responder_init ( FlKeyChannelResponder *  self)
static

Definition at line 177 of file fl_key_channel_responder.cc.

177 {}

◆ fl_key_channel_responder_new()

FlKeyChannelResponder* fl_key_channel_responder_new ( FlBinaryMessenger *  messenger,
FlKeyChannelResponderMock mock = nullptr 
)

FlKeyChannelResponder:

A #FlKeyResponder that handles events by sending the raw event data in JSON through the message channel.

This class communicates with the RawKeyboard API in the framework. fl_key_channel_responder_new: : the messenger that the message channel should be built on. : options to mock several functionalities. Only used in unittests.

Creates a new #FlKeyChannelResponder.

Returns: a new #FlKeyChannelResponder.

Definition at line 184 of file fl_key_channel_responder.cc.

References _FlKeyChannelResponderMock::channel_name, fl_basic_message_channel_new(), fl_json_message_codec_new(), and kChannelName.

Referenced by fl_view_init_keyboard(), TEST(), and test_lock_event().

186  {
187  g_return_val_if_fail(FL_IS_BINARY_MESSENGER(messenger), nullptr);
188 
189  FlKeyChannelResponder* self = FL_KEY_CHANNEL_RESPONDER(
190  g_object_new(fl_key_channel_responder_get_type(), nullptr));
191  self->mock = mock;
192 
193  g_autoptr(FlJsonMessageCodec) codec = fl_json_message_codec_new();
194  const char* channel_name =
195  mock == nullptr ? kChannelName : mock->channel_name;
196  self->channel = fl_basic_message_channel_new(messenger, channel_name,
197  FL_MESSAGE_CODEC(codec));
198 
199  return self;
200 }
G_MODULE_EXPORT FlBasicMessageChannel * fl_basic_message_channel_new(FlBinaryMessenger *messenger, const gchar *name, FlMessageCodec *codec)
G_MODULE_EXPORT FlJsonMessageCodec * fl_json_message_codec_new()
static constexpr char kChannelName[]

◆ fl_key_channel_user_data_class_init()

static void fl_key_channel_user_data_class_init ( FlKeyChannelUserDataClass *  klass)
static

Definition at line 67 of file fl_key_channel_responder.cc.

References fl_key_channel_user_data_dispose().

68  {
69  G_OBJECT_CLASS(klass)->dispose = fl_key_channel_user_data_dispose;
70 }
static void fl_key_channel_user_data_dispose(GObject *object)

◆ fl_key_channel_user_data_dispose()

static void fl_key_channel_user_data_dispose ( GObject *  object)
static

Definition at line 55 of file fl_key_channel_responder.cc.

Referenced by fl_key_channel_user_data_class_init().

55  {
56  g_return_if_fail(FL_IS_KEY_CHANNEL_USER_DATA(object));
57  FlKeyChannelUserData* self = FL_KEY_CHANNEL_USER_DATA(object);
58  if (self->responder != nullptr) {
59  g_object_remove_weak_pointer(
60  G_OBJECT(self->responder),
61  reinterpret_cast<gpointer*>(&(self->responder)));
62  self->responder = nullptr;
63  }
64 }

◆ fl_key_channel_user_data_init()

static void fl_key_channel_user_data_init ( FlKeyChannelUserData *  self)
static

Definition at line 73 of file fl_key_channel_responder.cc.

73 {}

◆ fl_key_channel_user_data_new()

static FlKeyChannelUserData* fl_key_channel_user_data_new ( FlKeyChannelResponder *  responder,
FlKeyResponderAsyncCallback  callback,
gpointer  user_data 
)
static

Definition at line 78 of file fl_key_channel_responder.cc.

References _FlKeyChannelUserData::callback, _FlKeyChannelUserData::responder, and _FlKeyChannelUserData::user_data.

Referenced by fl_key_channel_responder_handle_event().

81  {
82  FlKeyChannelUserData* self = FL_KEY_CHANNEL_USER_DATA(
83  g_object_new(fl_key_channel_user_data_get_type(), nullptr));
84 
85  self->responder = responder;
86  // Add a weak pointer so we can know if the key event responder disappeared
87  // while the framework was responding.
88  g_object_add_weak_pointer(G_OBJECT(responder),
89  reinterpret_cast<gpointer*>(&(self->responder)));
90  self->callback = callback;
91  self->user_data = user_data;
92  return self;
93 }
FlKeyEvent FlKeyResponderAsyncCallback gpointer user_data
FlKeyEvent FlKeyResponderAsyncCallback callback

◆ G_DECLARE_FINAL_TYPE()

G_DECLARE_FINAL_TYPE ( FlKeyChannelUserData  ,
fl_key_channel_user_data  ,
FL  ,
KEY_CHANNEL_USER_DATA  ,
GObject   
)

FlKeyChannelUserData: The user_data used when #FlKeyChannelResponder sends message through the channel.

◆ G_DEFINE_TYPE_WITH_CODE()

G_DEFINE_TYPE_WITH_CODE ( FlKeyChannelResponder  ,
fl_key_channel_responder  ,
G_TYPE_OBJECT  ,
G_IMPLEMENT_INTERFACE(FL_TYPE_KEY_RESPONDER, fl_key_channel_responder_iface_init  
)

◆ handle_response()

static void handle_response ( GObject *  object,
GAsyncResult *  result,
gpointer  user_data 
)
static

Definition at line 130 of file fl_key_channel_responder.cc.

References flutter::data, error, fl_basic_message_channel_send_finish(), fl_value_get_bool(), and fl_value_lookup_string().

Referenced by fl_key_channel_responder_handle_event().

132  {
133  g_autoptr(FlKeyChannelUserData) data = FL_KEY_CHANNEL_USER_DATA(user_data);
134 
135  // This is true if the weak pointer has been destroyed.
136  if (data->responder == nullptr) {
137  return;
138  }
139 
140  FlKeyChannelResponder* self = data->responder;
141 
142  g_autoptr(GError) error = nullptr;
143  FlBasicMessageChannel* messageChannel = FL_BASIC_MESSAGE_CHANNEL(object);
144  FlValue* message =
146  if (self->mock != nullptr && self->mock->value_converter != nullptr) {
147  message = self->mock->value_converter(message);
148  }
149  bool handled = false;
150  if (error != nullptr) {
151  g_warning("Unable to retrieve framework response: %s", error->message);
152  } else {
153  g_autoptr(FlValue) handled_value =
154  fl_value_lookup_string(message, "handled");
155  handled = fl_value_get_bool(handled_value);
156  }
157 
158  data->callback(handled, data->user_data);
159 }
const uint8_t uint32_t uint32_t GError ** error
FlKeyEvent FlKeyResponderAsyncCallback gpointer user_data
typedefG_BEGIN_DECLS struct _FlValue FlValue
Definition: fl_value.h:40
GAsyncResult * result
G_MODULE_EXPORT FlValue * fl_basic_message_channel_send_finish(FlBasicMessageChannel *self, GAsyncResult *result, GError **error)
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot data
Definition: switches.h:41
G_MODULE_EXPORT FlValue * fl_value_lookup_string(FlValue *self, const gchar *key)
Definition: fl_value.cc:770
G_MODULE_EXPORT bool fl_value_get_bool(FlValue *self)
Definition: fl_value.cc:621

Variable Documentation

◆ callback

Definition at line 117 of file fl_key_channel_responder.cc.

Referenced by flutter::GPUSurfaceVulkan::AcquireFrame(), flutter::testing::TestDartNativeResolver::AddNativeCallback(), flutter::DartServiceIsolate::AddServerStatusCallback(), fml::MessageLoopTaskQueues::AddTaskObserver(), flutter_runner::FlatlandConnection::AwaitVsync(), flutter_runner::GfxSessionConnection::AwaitVsync(), flutter_runner::FlatlandConnection::AwaitVsyncForSecondaryCallback(), flutter_runner::GfxSessionConnection::AwaitVsyncForSecondaryCallback(), flutter::PlatformMessageResponseDart::Complete(), flutter::PlatformMessageResponseDart::CompleteEmpty(), flutter::CopyToBitmap(), zircon::dart::HandleWaiter::Create(), flutter::ImageDecoder::Decode(), flutter_runner::testing::FakeSession::DisconnectSession(), flutter::EmbedderPlatformMessageResponse::EmbedderPlatformMessageResponse(), flutter::EmbedderSurfaceGL::EmbedderSurfaceGL(), flutter::testing::EmbedderTestCompositorGL::EmbedderTestCompositorGL(), flutter::testing::EmbedderTestCompositorMetal::EmbedderTestCompositorMetal(), flutter::testing::EmbedderTestCompositorSoftware::EmbedderTestCompositorSoftware(), flutter::EncodeImage(), fml::ExecuteAfterTaskObservers(), flutter_runner::testing::FakeFocuser::fail_request_focus(), flutter::VsyncWaiter::FireCallback(), flutter_runner::testing::FakeFlatland::FireOnFramePresentedEvent(), flutter::testing::EmbedderTestContext::FireRootSurfacePresentCallbackIfPresent(), flutter_runner::FlatlandConnection::FlatlandConnection(), FLTDefaultSettingsForBundle(), FlutterDesktopPluginRegistrarSetDestructionHandler(), FlutterEngineInitialize(), FlutterEnginePostCallbackOnAllNativeThreads(), FlutterEnginePostDartObject(), FlutterEnginePostRenderThreadTask(), FlutterEngineSendKeyEvent(), flutter_runner::FocusDelegate::FocusDelegate(), flutter_runner::GfxSessionConnection::get(), txt::FakeProvider::GetFontFamilyInfo(), flutter::testing::EmbedderTestContext::GetLogMessageCallbackHook(), flutter::SingleFrameCodec::getNextFrame(), flutter::Rasterizer::GetRasterThreadMerger(), flutter::FlutterMain::GetSettings(), flutter::testing::EmbedderTestContext::GetUpdateSemanticsCustomActionCallbackHook(), flutter::testing::EmbedderTestContext::GetUpdateSemanticsNodeCallbackHook(), flutter_runner::GfxSessionConnection::GfxSessionConnection(), flutter_runner::testing::FakeFlatland::graph(), FlutterKeyboardManager::handlePress:nextAction:, flutter::CanvasImage::height(), flutter_runner::AccessibilityBridge::HitTest(), FlutterChannelKeyResponder::initWithChannel:, TestKeyEvent::initWithEvent:callback:userData:, FlutterEngine::initWithName:, FlutterBasicMessageChannel::initWithName:binaryMessenger:codec:, FlutterMethodChannel::initWithName:binaryMessenger:codec:, FlutterEventChannel::initWithName:binaryMessenger:codec:taskQueue:, FlutterBinaryMessengerRelay::initWithParent:, VSyncClient::initWithTaskRunner:callback:, flutter::testing::InvokeAllCallbacks(), flutter::EmbedderLayers::InvokePresentCallback(), tonic::DartWeakPersistentValue::is_empty(), flutter::KeyboardKeyChannelHandler::KeyboardHook(), flutter::KeyboardKeyEmbedderHandler::KeyboardHook(), zircon::dart::Handle::koid(), main(), tonic::DartState::MessageEpilogue(), flutter::normalizeScancode(), flutter_runner::AccessibilityBridge::OnAccessibilityActionRequested(), ui::AXEventGenerator::OnAtomicUpdateFinished(), flutter_runner::PlatformView::OnKeyEvent(), flutter::testing::EmbedderTestCompositor::Present(), scenic::BaseView::PresentScene(), flutter::FlutterWindowsView::RegisterKeyboardHandlers(), FlutterViewControllerTestObjC::respondFalseForSendEvent:callback:userData:, FlutterEngine::run, tonic::DartMicrotaskQueue::RunMicrotasks(), flutter_runner::testing::FakeSession::SceneGraph(), flutter::Engine::ScheduleFrame(), send_on_channel(), FlutterViewControllerTest::sendMessage:reply:, flutter_runner_test::MockSemanticsManager::SendSemanticEvent(), FlutterViewController::setFlutterViewDidRenderCallback:, flutter::testing::EmbedderTestContextGL::SetGLGetFBOCallback(), flutter::testing::EmbedderTestContextGL::SetGLPresentCallback(), flutter::testing::EmbedderTestContext::SetLogMessageCallback(), fml::RasterThreadMerger::SetMergeUnmergeCallback(), flutter::Rasterizer::SetNextFrameCallback(), flutter::testing::EmbedderTestContext::SetPlatformMessageCallback(), flutter::testing::EmbedderConfigBuilder::SetPlatformMessageCallback(), flutter::testing::EmbedderTestCompositor::SetPlatformViewRendererCallback(), flutter::FlutterWindowsEngine::SetPluginRegistrarDestructionCallback(), scenic::BaseView::SetReleaseHandler(), tonic::DartState::SetReturnCodeCallback(), dart_runner::DartComponentControllerV2::SetUp(), flutter::testing::EmbedderTestContext::SetVsyncCallback(), flutter::DartIsolate::Shutdown(), FlutterEngine::shutDownEngine, flutter_runner::VulkanSurface::SignalWritesFinished(), flutter::testing::ShellTestPlatformViewVulkan::SimulateVSync(), flutter_embedder_test2::FlutterScenicEmbedderTests::TakeScreenshotUntil(), flutter_runner::TEST(), flutter::testing::TEST(), TEST(), flutter::testing::TEST_F(), flutter_runner_test::TEST_F(), FlutterViewControllerTestObjC::testFlagsChangedEventsArePropagatedIfNotHandled, FlutterViewControllerTestObjC::testKeyboardIsRestartedOnEngineRestart, FlutterViewControllerTestObjC::testKeyEventsAreNotPropagatedIfHandled, FlutterViewControllerTestObjC::testKeyEventsArePropagatedIfNotHandled, FlutterViewControllerTestObjC::testKeyEventsAreSentToFramework, FlutterViewControllerTestObjC::testPerformKeyEquivalentSynthesizesKeyUp, flutter_runner::testing::FakeTouchSource::UploadedResponses(), flutter::FlutterWindowsEngine::view(), flutter::VsyncWaiterIOS::VsyncWaiterIOS, flutter_runner::FocusDelegate::WatchLoop(), flutter_runner::PointerDelegate::WatchLoop(), flutter_runner::Engine::WriteProfileToTrace(), _FlutterTaskRunner::~_FlutterTaskRunner(), flutter::testing::EmbedderTestContextGL::~EmbedderTestContextGL(), and flutter::PlatformMessageResponseDart::~PlatformMessageResponseDart().

◆ event

FlKeyEvent* event

Definition at line 117 of file fl_key_channel_responder.cc.

Referenced by FlutterTouchInterceptingView::blockGesture, flutter_runner::testing::TouchEventBuilder::Build(), flutter::AccessibilityBridgeMacDelegate::CreateFlutterPlatformNodeDelegate(), scenic::EmbedderView::EmbedView(), ui::AXEventGenerator::end(), flutter::EventSink< T >::EndOfStream(), fl_engine_send_window_metrics_event(), fl_key_event_clone(), fl_key_event_new_from_gdk_event(), fl_view_plugin_registry_iface_init(), flutter_runner::VulkanSurface::FlushSessionAcquireAndReleaseEvents(), flutter_runner::VulkanSurface::GetAcquireFence(), flutter_runner::VulkanSurface::GetReleaseFence(), flutter_runner::VulkanSurface::GetSize(), GLFWCursorEnterCallback(), GLFWCursorPositionCallback(), GLFWcursorPositionCallbackAtPhase(), GLFWMouseButtonCallback(), GLFWScrollCallback(), GLFWwindowSizeCallback(), FlutterKeyboardManager::handleEvent:, flutter_runner::VulkanSurface::HasStableSizeHistory(), FlutterEngine::initWithName:, FlutterEventChannel::initWithName:binaryMessenger:codec:taskQueue:, FlutterUIPressProxy::initWithPress:withEvent:, FlutterSemanticsScrollView::initWithSemanticsObject:, DelayingGestureRecognizer::initWithTarget:action:forwardingRecognizer:, ForwardingGestureRecognizer::initWithTarget:platformViewsController:, FlutterTextInputPlugin::isFirstResponder, flutter::KeyEventHandler::KeyboardHook(), flutter::KeyboardKeyChannelHandler::KeyboardHook(), flutter::KeyboardKeyEmbedderHandler::KeyboardHook(), flutter_runner::testing::PlatformViewTests::MakeEvent(), flutter::testing::MockEmbedderApiForKeyboard(), flutter_runner::FlatlandConnection::NextContentId(), flutter::AccessibilityBridgeMacDelegate::OnAccessibilityEvent(), FlutterViewController::onPreEngineRestart, flutter::FlutterWindowsView::OnResetImeComposing(), scenic::BaseView::OnScenicEvent(), ui::AXEventGenerator::EventParams::operator==(), scenic::BaseView::PresentScene(), flutter::KeyboardKeyHandler::RedispatchedCount(), flutter::FlutterWindowsView::RegisterKeyboardHandlers(), flutter::ResetAnchor(), send_events_listen_cb(), flutter::FlutterWindowsView::SendInitialBounds(), SendPointerEventWithData(), SendWindowMetrics(), ui::AXEventGenerator::set_always_fire_load_complete(), FlutterViewController::setFlutterViewDidRenderCallback:, flutter::EventChannel< T >::SetStreamHandler(), TEST(), flutter::testing::TEST(), flutter::testing::TEST_F(), flutter_runner::testing::TEST_F(), FlutterViewControllerTestObjC::testKeyboardIsRestartedOnEngineRestart, text_input_im_filter_by_gtk(), flutter_runner::PointerDelegate::WatchLoop(), flutter::FlutterWindowsEngine::window_proc_delegate_manager(), and _FlutterTaskRunner::~_FlutterTaskRunner().

◆ kChannelName

constexpr char kChannelName[] = "flutter/keyevent"
static

Definition at line 13 of file fl_key_channel_responder.cc.

Referenced by fl_key_channel_responder_new().

◆ kGtkToolkit

constexpr char kGtkToolkit[] = "gtk"
static

Definition at line 24 of file fl_key_channel_responder.cc.

Referenced by fl_key_channel_responder_handle_event().

◆ kKeyCodeKey

constexpr char kKeyCodeKey[] = "keyCode"
static

Definition at line 18 of file fl_key_channel_responder.cc.

Referenced by fl_key_channel_responder_handle_event().

◆ kKeymapKey

constexpr char kKeymapKey[] = "keymap"
static

Definition at line 17 of file fl_key_channel_responder.cc.

Referenced by fl_key_channel_responder_handle_event().

◆ kLinuxKeymap

constexpr char kLinuxKeymap[] = "linux"
static

Definition at line 25 of file fl_key_channel_responder.cc.

Referenced by fl_key_channel_responder_handle_event().

◆ kModifiersKey

constexpr char kModifiersKey[] = "modifiers"
static

Definition at line 20 of file fl_key_channel_responder.cc.

Referenced by fl_key_channel_responder_handle_event().

◆ kScanCodeKey

constexpr char kScanCodeKey[] = "scanCode"
static

Definition at line 19 of file fl_key_channel_responder.cc.

Referenced by fl_key_channel_responder_handle_event().

◆ kToolkitKey

constexpr char kToolkitKey[] = "toolkit"
static

Definition at line 21 of file fl_key_channel_responder.cc.

Referenced by fl_key_channel_responder_handle_event().

◆ kTypeKey

constexpr char kTypeKey[] = "type"
static

Definition at line 14 of file fl_key_channel_responder.cc.

Referenced by fl_key_channel_responder_handle_event().

◆ kTypeValueDown

constexpr char kTypeValueDown[] = "keydown"
static

Definition at line 16 of file fl_key_channel_responder.cc.

Referenced by fl_key_channel_responder_handle_event().

◆ kTypeValueUp

constexpr char kTypeValueUp[] = "keyup"
static

Definition at line 15 of file fl_key_channel_responder.cc.

Referenced by fl_key_channel_responder_handle_event().

◆ kUnicodeScalarValuesKey

constexpr char kUnicodeScalarValuesKey[] = "unicodeScalarValues"
static

Definition at line 22 of file fl_key_channel_responder.cc.

Referenced by fl_key_channel_responder_handle_event().

◆ user_data

Definition at line 117 of file fl_key_channel_responder.cc.