Exemplo n.º 1
0
static void *doAtSpiScreenOpen(void *arg) {
  AccessibleEventListener *evListener;
  sem_t *SPI_init_sem = (sem_t *)arg;
  int res;
  static const char *events[] = {
    "object:text-changed",
    "object:text-caret-moved",
    "object:state-changed:focused",
    "focus:",
  };
  const char **event;
  if ((res=SPI_init())) {
    logMessage(LOG_ERR,"SPI_init returned %d",res);
    return 0;
  }
  if (!(evListener = SPI_createAccessibleEventListener(evListenerCB,NULL)))
    logMessage(LOG_ERR,"SPI_createAccessibleEventListener failed");
  else for (event=events; event<&events[sizeof(events)/sizeof(*events)]; event++)
    if (!(SPI_registerGlobalEventListener(evListener,*event)))
      logMessage(LOG_ERR,"SPI_registerGlobalEventListener(%s) failed",*event);
  sem_post(SPI_init_sem);
  SPI_event_main();
  if (!(SPI_deregisterGlobalEventListenerAll(evListener)))
    logMessage(LOG_ERR,"SPI_deregisterGlobalEventListenerAll failed");
  AccessibleEventListener_unref(evListener);
  if (curFocus)
    finiTerm();
  if ((res=SPI_exit()))
    logMessage(LOG_ERR,"SPI_exit returned %d",res);
  return NULL;
}
Exemplo n.º 2
0
int
main (int argc, char **argv)
{
  AccessibleKeySet switch_set;
  
  if ((argc > 1) && (!strncmp (argv[1], "-h", 2)))
    {
      printf ("Usage: keysynth-demo\n");
      exit (1);
    }

  gtk_init (&argc, &argv); /* must call, because this program uses GTK+ */

  SPI_init ();

  key_listener = SPI_createAccessibleKeystrokeListener (is_command_key, NULL);
  /* will listen only to Alt-key combinations */
  SPI_registerAccessibleKeystrokeListener (key_listener,
					   (AccessibleKeySet *) SPI_KEYSET_ALL_KEYS,
					   SPI_KEYMASK_ALT | SPI_KEYMASK_CONTROL,
					   (unsigned long) ( KeyPress | KeyRelease),
					   SPI_KEYLISTENER_CANCONSUME | SPI_KEYLISTENER_ALL_WINDOWS);
  create_vkbd ();  

  /*
   * Register a listener on an 'unused' key, to serve as a 'single switch'.
   * On most Intel boxes there is at least one 'special' system key that does not
   * have a non-zero keycode assigned in the Xserver, so we will intercept any keycode
   * that is 'zero'.  Often these the are the "windows" or the "menu" keys.
   */
  switch_set.keysyms = g_new0 (unsigned long, 1);
  switch_set.keycodes = g_new0 (unsigned short, 1);
  switch_set.keystrings = g_new0 (char *, 1);
  switch_set.len = 1;
  switch_set.keysyms[0] = (unsigned long) 0;
  switch_set.keycodes[0] = (unsigned short) 0;
  switch_set.keystrings[0] = "";
  switch_listener = SPI_createAccessibleKeystrokeListener (switch_callback, NULL);
  SPI_registerAccessibleKeystrokeListener (switch_listener,
					   &switch_set,
					   SPI_KEYMASK_UNMODIFIED,
					   (unsigned long) ( SPI_KEY_PRESSED | SPI_KEY_RELEASED ),
					   SPI_KEYLISTENER_NOSYNC);
  
  SPI_event_main ();

  return SPI_exit ();
}
Exemplo n.º 3
0
static void initialize( Driver* dp, char* application_title ) {
    dp->application_title = application_title;
    initialize_SPI();
    listen_for_application_activation( dp );
    search_desktop_for_application( dp );
    if ( dp->found_application ) {
        remove_listener( dp );
        closedown( dp );
        return;
    }

    start_timeout_timer( dp );
    SPI_event_main();

    remove_listener( dp );
    closedown( dp );
    if ( ! dp->found_application )
        rb_raise( rb_eRuntimeError, "No such application running." );
}
Exemplo n.º 4
0
int
main (int argc, char **argv)
{
  const char *tab_strings[1] = {"Tab"};
  short keycodes[] = {65, 64, 23};
  SPIBoolean retval = FALSE;
	
  SPI_init ();

  /* prepare the keyboard snoopers */
  command_key_listener = SPI_createAccessibleKeystrokeListener (report_command_key_event, NULL);
  ordinary_key_listener = SPI_createAccessibleKeystrokeListener (report_ordinary_key_event, NULL);
  synchronous_key_listener = SPI_createAccessibleKeystrokeListener (report_synchronous_key_event, NULL);
  tab_key_listener = SPI_createAccessibleKeystrokeListener (report_tab_key_event, NULL);
  all_key_listener = SPI_createAccessibleKeystrokeListener (report_all_key_event, NULL);
  
  command_keyset = SPI_createAccessibleKeySet (1, "q", NULL, NULL);
  async_keyset = SPI_createAccessibleKeySet (3, NULL, keycodes, NULL);
  sync_keyset = SPI_createAccessibleKeySet (3, "def", NULL, NULL);
  tab_keyset = SPI_createAccessibleKeySet (1,  NULL, NULL, tab_strings);
  retval = SPI_registerAccessibleKeystrokeListener(command_key_listener,
			       		  command_keyset,
					  SPI_KEYMASK_ALT | SPI_KEYMASK_CONTROL,
					  (unsigned long) ( SPI_KEY_PRESSED ),
					  SPI_KEYLISTENER_ALL_WINDOWS);
  fprintf (stderr, "Command key registry: result %s\n", retval ? "succeeded" : 
	"failed");
  retval = SPI_registerAccessibleKeystrokeListener(ordinary_key_listener,
					  async_keyset,
					  SPI_KEYMASK_UNMODIFIED,
					  (unsigned long) ( SPI_KEY_PRESSED | SPI_KEY_RELEASED ),
					  SPI_KEYLISTENER_NOSYNC);

  retval = SPI_registerAccessibleKeystrokeListener(synchronous_key_listener,
					  sync_keyset,
					  SPI_KEYMASK_UNMODIFIED,
					  (unsigned long) ( SPI_KEY_PRESSED | SPI_KEY_RELEASED ),
					  SPI_KEYLISTENER_CANCONSUME);

  retval = SPI_registerAccessibleKeystrokeListener(tab_key_listener,
					  tab_keyset,
					  SPI_KEYMASK_ALT,
					  (unsigned long) ( SPI_KEY_PRESSED | SPI_KEY_RELEASED ),
					  SPI_KEYLISTENER_ALL_WINDOWS);
  fprintf (stderr, "tab listener registry: %s\n", retval ? "succeeded" : "failed");

  retval = SPI_registerAccessibleKeystrokeListener(all_key_listener,
					  SPI_KEYSET_ALL_KEYS,
					  SPI_KEYMASK_CONTROL | SPI_KEYMASK_SHIFT,
					  (unsigned long) ( SPI_KEY_PRESSED | SPI_KEY_RELEASED ),
					  SPI_KEYLISTENER_ALL_WINDOWS);
	
  fprintf (stderr, "all key registry: %s\n", retval ? "succeeded" : "failed" );

  SPI_registerAccessibleKeystrokeListener(all_key_listener,
					 SPI_KEYSET_ALL_KEYS,
					 SPI_KEYMASK_SHIFT,
					 (unsigned long) ( SPI_KEY_PRESSED ),
					 SPI_KEYLISTENER_NOSYNC | SPI_KEYLISTENER_CANCONSUME);

  SPI_event_main ();

  putenv ("AT_BRIDGE_SHUTDOWN=1");

  return SPI_exit ();
}