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")); }
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 (); }