static void
test_keylisteners (void)
{
	int i;
	AccessibleKeystroke stroke;
	AccessibleKeystrokeListener *key_listener;
	AccessibleKeySet *test_keyset;

	fprintf (stderr, "Testing keyboard listeners ...\n");

	key_listener = SPI_createAccessibleKeystrokeListener (
		key_listener_cb, &stroke);

	test_keyset = SPI_createAccessibleKeySet (1, "=", NULL, NULL);

	g_assert (SPI_registerAccessibleKeystrokeListener (
		key_listener,
		test_keyset,
		0,
		SPI_KEY_PRESSED | SPI_KEY_RELEASED,
		SPI_KEYLISTENER_CANCONSUME | SPI_KEYLISTENER_ALL_WINDOWS));

	for (i = 0; i < 3; i++) {
		memset (&stroke, 0, sizeof (AccessibleKeystroke));
		g_assert (SPI_generateKeyboardEvent ('=', NULL, SPI_KEY_SYM));
		while (!(key_press_received))
			g_main_context_iteration (NULL, TRUE);
		fprintf (stderr, "p [%s]", stroke.keystring);
	        g_assert (!strcmp (stroke.keystring, "="));
		while (!(key_release_received))
			g_main_context_iteration (NULL, TRUE);
		fprintf (stderr, "r [%s]", stroke.keystring);
		key_press_received = FALSE;
		key_release_received = FALSE;
	}
	g_assert (SPI_deregisterAccessibleKeystrokeListener (key_listener, 0));
	SPI_freeAccessibleKeySet (test_keyset);

	fprintf (stderr, "\n");

	AccessibleKeystrokeListener_unref (key_listener);

	g_assert (SPI_generateMouseEvent (100, 100, "rel"));
        g_assert (SPI_generateMouseEvent (-50, -50, "rel"));		  
        g_assert (SPI_generateMouseEvent (-50, -50, "rel"));		  
        g_assert (SPI_generateMouseEvent (-1, -1, "b1c")); 
}
예제 #2
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 ();
}