GTK send keyboard event to gtk window

58 views Asked by At

I am trying to create a GTK window and send seval mouse events to it. My code currently is the following:

#include <webkit2/webkit2.h>
#include <gtk/gtk.h>

// ...

WebKitWebView *web_view (nullptr);
GtkWidget *main_window (nullptr);

gtk_init (&argc, &argv);

main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size (GTK_WINDOW (main_window),
                                 1000,
                                 1000);

web_view = WEBKIT_WEB_VIEW (webkit_web_view_new ());
gtk_container_add (GTK_CONTAINER (main_window), GTK_WIDGET (web_view));
g_signal_connect (main_window, "destroy", G_CALLBACK (destroyWindowCb),
                      NULL);
webkit_web_view_load_uri (web_view, "https://google.com");

gtk_widget_show_all (main_window);
gtk_main ();

I have tried to create key events like this: GdkEvent *event = gdk_event_new (GDK_KEY_PRESS); GdkEventKey *key_event = (GdkEventKey *)event;

 key_event->window           = gtk_widget_get_window (widget);
 key_event->send_event       = TRUE;
 key_event->time             = gtk_get_current_event_time ();
 key_event->state            = 0;
 key_event->keyval           = **GDK_KEY_Up;**
 key_event->length           = 0;
 key_event->string           = "";
 key_event->hardware_keycode = 0;
 key_event->group            = 0;
 key_event->is_modifier      = 0;

 GdkDevice *device = gdk_seat_get_keyboard (
  gdk_display_get_default_seat (gdk_display_get_default ()));

 gdk_event_set_device (event, device);
 gtk_main_do_event (event);
 gdk_event_free (event);

I also tried the following code:

gtk_test_widget_send_key (GTK_WIDGET (widget), GTK_ARROW_UP,
                                      (GdkModifierType)0);

However, this does not work. Any pointers?

0

There are 0 answers