18 G_DEFINE_TYPE(FlKeyChannelResponder, fl_key_channel_responder, G_TYPE_OBJECT)
25 g_autoptr(GTask) task = G_TASK(
user_data);
27 gboolean handled = FALSE;
28 g_autoptr(GError)
error =
nullptr;
30 g_warning(
"Unable to retrieve framework response: %s",
error->message);
33 gboolean* return_value = g_new0(gboolean, 1);
34 *return_value = handled;
35 g_task_return_pointer(task, return_value, g_free);
40 FlKeyChannelResponder*
self = FL_KEY_CHANNEL_RESPONDER(
object);
42 g_clear_object(&self->channel);
44 G_OBJECT_CLASS(fl_key_channel_responder_parent_class)->dispose(
object);
49 FlKeyChannelResponderClass* klass) {
60 FlBinaryMessenger* messenger) {
61 g_return_val_if_fail(FL_IS_BINARY_MESSENGER(messenger),
nullptr);
63 FlKeyChannelResponder*
self = FL_KEY_CHANNEL_RESPONDER(
64 g_object_new(fl_key_channel_responder_get_type(),
nullptr));
73 uint64_t specified_logical_key,
74 GCancellable* cancellable,
75 GAsyncReadyCallback callback,
77 g_return_if_fail(event !=
nullptr);
78 g_return_if_fail(callback !=
nullptr);
84 int64_t unicode_scalar_values =
113 static bool shift_lock_pressed = FALSE;
114 static bool caps_lock_pressed = FALSE;
115 static bool num_lock_pressed = FALSE;
117 case GDK_KEY_Num_Lock:
120 case GDK_KEY_Caps_Lock:
123 case GDK_KEY_Shift_Lock:
130 state |= (shift_lock_pressed || caps_lock_pressed) ? GDK_LOCK_MASK : 0x0;
131 state |= num_lock_pressed ? GDK_MOD2_MASK : 0x0;
135 unicode_scalar_values, specified_logical_key,
nullptr,
handle_response,
136 g_task_new(
self, cancellable, callback,
user_data));
140 FlKeyChannelResponder*
self,
141 GAsyncResult* result,
144 g_return_val_if_fail(g_task_is_valid(result,
self), FALSE);
146 g_autofree gboolean* return_value =
147 static_cast<gboolean*
>(g_task_propagate_pointer(G_TASK(result),
error));
148 if (return_value ==
nullptr) {
152 *handled = *return_value;
G_DEFINE_TYPE(FlBasicMessageChannelResponseHandle, fl_basic_message_channel_response_handle, G_TYPE_OBJECT) static void fl_basic_message_channel_response_handle_dispose(GObject *object)
G_BEGIN_DECLS G_MODULE_EXPORT FlValue gpointer user_data
void fl_key_channel_responder_handle_event(FlKeyChannelResponder *self, FlKeyEvent *event, uint64_t specified_logical_key, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
gboolean fl_key_channel_responder_handle_event_finish(FlKeyChannelResponder *self, GAsyncResult *result, gboolean *handled, GError **error)
static void fl_key_channel_responder_init(FlKeyChannelResponder *self)
static void handle_response(GObject *object, GAsyncResult *result, gpointer user_data)
static void fl_key_channel_responder_class_init(FlKeyChannelResponderClass *klass)
FlKeyChannelResponder * fl_key_channel_responder_new(FlBinaryMessenger *messenger)
static void fl_key_channel_responder_dispose(GObject *object)
guint16 fl_key_event_get_keycode(FlKeyEvent *self)
gboolean fl_key_event_get_is_press(FlKeyEvent *self)
GdkModifierType fl_key_event_get_state(FlKeyEvent *self)
guint fl_key_event_get_keyval(FlKeyEvent *self)
FlKeyEventChannel * fl_key_event_channel_new(FlBinaryMessenger *messenger)
gboolean fl_key_event_channel_send_finish(GObject *object, GAsyncResult *result, gboolean *handled, GError **error)
void fl_key_event_channel_send(FlKeyEventChannel *self, FlKeyEventType type, int64_t scan_code, int64_t key_code, int64_t modifiers, int64_t unicode_scalar_values, int64_t specified_logical_key, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
@ FL_KEY_EVENT_TYPE_KEYDOWN
@ FL_KEY_EVENT_TYPE_KEYUP
const uint8_t uint32_t uint32_t GError ** error
FlKeyEventChannel * channel