#include #include #include #include #include #include static void activate (GApplication *app) { GdkEventKey event; GdkDisplay *dpy; GdkKeymap *kmap; GdkKeymapKey *keys; gint n_keys; guint keyval = GDK_KEY_o; dpy = gdk_display_get_default (); kmap = gdk_keymap_get_for_display (dpy); gdk_keymap_get_entries_for_keyval (kmap, keyval, &keys, &n_keys); memset (&event, 0, sizeof (event)); event.type = GDK_KEY_PRESS; event.window = NULL; event.send_event = 0; event.time = GDK_CURRENT_TIME; event.state = 0; event.keyval = keyval; event.length = 1; event.string = strdup ("o"); event.hardware_keycode = keys->keycode; event.group = keys->group; event.is_modifier = 0; gdk_display_put_event (dpy, (GdkEvent *) (&event)); event.type = GDK_KEY_RELEASE; gdk_display_put_event (dpy, (GdkEvent *) (&event)); while (gtk_events_pending ()) { gtk_main_iteration (); } } int main (int argc, char **argv) { GtkApplication *app; app = gtk_application_new ("com.anarchean.linuxrc", G_APPLICATION_FLAGS_NONE); g_signal_connect (app, "activate", G_CALLBACK (activate), NULL); return g_application_run (G_APPLICATION (app), argc, argv); }