Hi to everybody, i'm developing a gtkmm application on embedded system. and i need to build a GdkEventKey to simulate a keyboard when i receive characters from a serial line.
Before all, to try build a GdkEventKey i had write a simple test program with a simple Gtk::Window, a callback for key press event, a callback where i build the event and put them into the event loop after a timeout. Here the main: ======================================================== int main(int argc, char ** argv) { LOGGER.debug("gtestMain"); Gtk::Main _gtkMain(argc, argv); _testWin = new Gtk::Window(); Gdk::Event::set_show_events(true); _testWin->signal_key_press_event().connect(sigc::ptr_fun(onKeyPressedEvent), false); Glib::signal_timeout().connect(sigc::ptr_fun(onTimeout), 5000); LOGGER.info("Main before gtk event......"); _testWin->set_title("Frame Example"); _testWin->set_size_request(300, 200); _testWin->set_decorated(false); _testWin->set_has_frame(true); _testWin->set_position(Gtk::WIN_POS_CENTER_ALWAYS); _testWin->show(); Glib::RefPtr<Gdk::Window> f_rptr = _testWin->get_frame(); _gtkMain.run(); return 0; } Here the callback where i build the event after timeout: ======================================================== bool onTimeout() { LOGGER.debug("=====> Main::build fake GtkEventKey ===="); GdkEvent* event = NULL; event = gdk_event_new(GDK_KEY_PRESS); LOGGER.debug("Main == key PRESSED event"); event->key.send_event = 1; event->key.state = 0; event->key.length = 1; event->key.group = 0; event->key.time = time (NULL); event->key.keyval = 53; event->key.hardware_keycode = 14; event->key.string = gdk_keyval_name(53); Glib::RefPtr<Gdk::Window> f_rptr = _testWin->get_frame(); event->key.window = f_rptr->gobj(); Gdk::Event gdkev(event); gdkev.set_screen(_testWin->get_screen()); gdkev.put(); return true; } Here the callback for key press: ======================================================== bool onKeyPressedEvent(GdkEventKey *event) { LOGGER.debug("=====> Main::onKeyPressedEvent START <========="); LOGGER.debug(Format("Dump of event structure: type[%$] window[%$] send event[%$] time[%$] state[%$] keyval[%$] length[%$] string[%$] hardware_keycode[%$] group[%$]") %event->type %ptrtoa(event->window) %event->send_event %event->time %event->state %event->keyval %event->length %event->string %event->hardware_keycode %event->group); LOGGER.debug("=====> Main::onKeyPressedEvent END <========="); return false; } The problem is that i tested this on xorg and on directfb, on xorg all go well, after i put the event into main event loop i can see on screen the onKeyPressedEvent callback log, instead on directfb after i put the event into the main event loop i never see the onKeyPressedEvent callback log. Could anyone help me on what happen? Thank you very much for your time and help. Matteo _______________________________________________ gtkmm-list mailing list gtkmm-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtkmm-list