Added LoginHelper interface. Fixed test progs to use proper prefixes on
[platform/core/uifw/at-spi2-atk.git] / test / key-listener-test.c
index 9fdeb62..ad73d32 100644 (file)
@@ -2,7 +2,8 @@
  * AT-SPI - Assistive Technology Service Provider Interface
  * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
  *
- * Copyright 2001 Sun Microsystems Inc.
+ * Copyright 2001, 2002 Sun Microsystems Inc.,
+ * Copyright 2001, 2002 Ximian, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <sys/un.h>
-#include <spi.h>
+#include <cspi/spi.h>
 
 static SPIBoolean report_command_key_event  (const AccessibleKeystroke *stroke, void *user_data);
 static SPIBoolean report_ordinary_key_event (const AccessibleKeystroke *stroke, void *user_data);
 static SPIBoolean report_synchronous_key_event (const AccessibleKeystroke *stroke, void *user_data);
+static SPIBoolean report_tab_key_event (const AccessibleKeystroke *stroke, void *user_data);
+static SPIBoolean report_all_key_event (const AccessibleKeystroke *stroke, void *user_data);
 
 static AccessibleKeystrokeListener *command_key_listener;
 static AccessibleKeystrokeListener *ordinary_key_listener;
 static AccessibleKeystrokeListener *synchronous_key_listener;
+static AccessibleKeystrokeListener *tab_key_listener;
+static AccessibleKeystrokeListener *all_key_listener;
 static AccessibleKeySet            *command_keyset;
 static AccessibleKeySet            *async_keyset;
 static AccessibleKeySet            *sync_keyset;
+static AccessibleKeySet            *tab_keyset;
 
 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);
-
-  command_keyset = SPI_createAccessibleKeySet (11, "q", NULL, NULL);
-  async_keyset = SPI_createAccessibleKeySet (11, "abc", NULL, NULL);
-  sync_keyset = SPI_createAccessibleKeySet (11, "def", NULL, NULL);
+  tab_key_listener = SPI_createAccessibleKeystrokeListener (report_tab_key_event, NULL);
+  all_key_listener = SPI_createAccessibleKeystrokeListener (report_all_key_event, NULL);
   
-  SPI_registerAccessibleKeystrokeListener(command_key_listener,
-                                         command_keyset,
+  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);
-
-  SPI_registerAccessibleKeystrokeListener(ordinary_key_listener,
+  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);
 
-  SPI_registerAccessibleKeystrokeListener(synchronous_key_listener,
+  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");
@@ -87,14 +120,19 @@ simple_at_exit ()
   AccessibleKeystrokeListener_unref         (command_key_listener);
   SPI_freeAccessibleKeySet                  (command_keyset);
   
-  SPI_deregisterAccessibleKeystrokeListener (ordinary_key_listener, SPI_KEYMASK_ALT | SPI_KEYMASK_CONTROL);
+/*
+  SPI_deregisterAccessibleKeystrokeListener (ordinary_key_listener, SPI_KEYMASK_ALT | SPI_KEYMASK_CONTROL); */
   AccessibleKeystrokeListener_unref         (ordinary_key_listener);
   SPI_freeAccessibleKeySet                  (async_keyset);
   
-  SPI_deregisterAccessibleKeystrokeListener (synchronous_key_listener, SPI_KEYMASK_ALT | SPI_KEYMASK_CONTROL);
+/*  SPI_deregisterAccessibleKeystrokeListener (synchronous_key_listener, SPI_KEYMASK_ALT | SPI_KEYMASK_CONTROL); */
   AccessibleKeystrokeListener_unref         (synchronous_key_listener);
   SPI_freeAccessibleKeySet                  (sync_keyset);
 
+  SPI_deregisterAccessibleKeystrokeListener (tab_key_listener, SPI_KEYMASK_ALT | SPI_KEYMASK_CONTROL);
+  AccessibleKeystrokeListener_unref         (tab_key_listener);
+  SPI_freeAccessibleKeySet                  (tab_keyset);
+
   SPI_event_quit ();
 }
 
@@ -147,3 +185,17 @@ report_synchronous_key_event (const AccessibleKeystroke *key, void *user_data)
   return ( key->keyID == 'd' ) ? TRUE : FALSE;
 }
 
+static SPIBoolean
+report_tab_key_event (const AccessibleKeystroke *key, void *user_data)
+{
+  print_key_event (key, "[TAB]");      
+  return FALSE;
+}
+
+static SPIBoolean
+report_all_key_event (const AccessibleKeystroke *key, void *user_data)
+{
+  fprintf(stderr, "(%d)", key->keyID);
+  return FALSE;
+}
+