void report_window_event (const AccessibleEvent *event, void *user_data) { if (event) { AccessibleEvent_ref (event); g_print ("%d\n", Accessible_getRole (event->source)); AccessibleEvent_unref (event); } } gpointer ldtp_thread_func (gpointer data) { SPI_event_main (); return NULL; } PyMODINIT_FUNC initldtp (void) { PyEval_InitThreads(); init_error = SPI_init (); if (init_error) { g_warning ("Error: SPI Init\n"); return; } ldtp_module = Py_InitModule ("ldtp", ldtp_methods); /* * Register event listener for windows */ window_listener = SPI_createAccessibleEventListener ( NULL, NULL); /* * Listen for new popup dialogs */ if (window_listener) SPI_registerGlobalEventListener (window_listener, "window:activate"); AccessibleEventListener_addCallback (window_listener, report_window_event, NULL); ldtp_thread = g_thread_create (ldtp_thread_func, NULL, TRUE, NULL); return; }