* 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 <cspi/spi-private.h>
-#include <cspi/spi-listener-impl.h>
+
+
/**
- * createAccessibleEventListener:
+ * SPI_freeAccessibleKeySet:
+ * @keyset: An AccessibleKeyset to free.
+ *
+ * Release the memory used by an AccessibleKeySet.
+ *
+ **/
+void
+SPI_freeAccessibleKeySet (AccessibleKeySet *keyset)
+{
+ int i = 0;
+ g_free (keyset->keysyms);
+ g_free (keyset->keycodes);
+ while (keyset->keystrings [i])
+ {
+ g_free (keyset->keystrings [i++]);
+ }
+ g_free (keyset->keystrings);
+ g_free (keyset);
+}
+
+/**
+ * SPI_createAccessibleKeySet:
+ * @len: the number of key values in the key set.
+ * @keysyms: a UTF-8 string containing symbolic key values to be matched, or NULL if
+ * matching is performed against other key values instead.
+ * @keycodes: an array of unsigned short values which are the hardware keycodes
+ * to be matched, or NULL if the keyset is specified solely by keysyms
+ * and/or keystrings.
+ * @keystrings: an array of null-terminated character strings which specify key
+ * name values to match, or NULL if the keyset is specified solely by
+ * keycodes and/or keysyms.
+ *
+ * Create a new #AccessibleKeySet of a specified length.
+ * A KeySet is used typically to match key event values, and a matches are made
+ * using the following criteria: a match exists with a key event if all non-null
+ * i-th members of the keyset match the key event.
+ * If both keystring and keysym values are NULL, a keycode value match is
+ * forced, thus the match for keysym=0, keycode=0, keystring=NULL is
+ * keycode 0.
+ *
+ * Returns: a pointer to a newly-created #AccessibleKeySet.
+ *
+ **/
+AccessibleKeySet *
+SPI_createAccessibleKeySet (int len, const char *keysyms, short *keycodes,
+ const char **keystrings)
+{
+ AccessibleKeySet *keyset = g_new0 (AccessibleKeySet, 1);
+ int i, keysym_len = 0;
+ const char *keysym_ptr = keysyms;
+ keyset->len = len;
+ keyset->keysyms = g_new0 (unsigned long, len);
+ keyset->keycodes = g_new0 (unsigned short, len);
+ keyset->keystrings = g_new0 (char *, len);
+ if (keysyms)
+ {
+ keysym_len = g_utf8_strlen (keysyms, -1);
+ }
+ for (i = 0; i < len; ++i)
+ {
+ if (i < keysym_len)
+ {
+ keyset->keysyms [i] = (unsigned long) g_utf8_get_char (keysym_ptr);
+ keysym_ptr = g_utf8_find_next_char (keysym_ptr, NULL);
+ }
+ else
+ {
+ keyset->keysyms [i] = 0;
+ }
+ if (keycodes)
+ {
+ keyset->keycodes [i] = keycodes [i];
+ }
+ if (keystrings)
+ {
+ keyset->keystrings [i] = g_strdup (keystrings [i]);
+ }
+ }
+ return keyset;
+}
+
+/**
+ * SPI_createAccessibleEventListener:
* @callback : an #AccessibleEventListenerCB callback function, or NULL.
+ * @user_data: a pointer to data which will be passed to the callback when invoked.
*
* Create a new #AccessibleEventListener with a specified (in-process) callback function.
*
*
**/
AccessibleEventListener *
-createAccessibleEventListener (AccessibleEventListenerCB callback,
- void *user_data)
+SPI_createAccessibleEventListener (AccessibleEventListenerCB callback,
+ void *user_data)
{
AccessibleEventListener *listener = cspi_event_listener_new ();
if (callback)
* AccessibleEventListener_addCallback:
* @listener: the #AccessibleEventListener instance to modify.
* @callback: an #AccessibleEventListenerCB function pointer.
+ * @user_data: a pointer to data which will be passed to the callback when invoked.
*
* Add an in-process callback function to an existing AccessibleEventListener.
* Note that the callback function must live in the same address
AccessibleEventListenerCB callback,
void *user_data)
{
- cspi_event_listener_add_callback (listener, callback, user_data);
+ cspi_event_listener_add_cb (listener, callback, user_data);
return TRUE;
}
void
AccessibleEventListener_unref (AccessibleEventListener *listener)
{
- /* Would prefer this not to be bonobo api */
- bonobo_object_unref (BONOBO_OBJECT (listener));
+ cspi_event_listener_unref (listener);
}
/**
AccessibleEventListener_removeCallback (AccessibleEventListener *listener,
AccessibleEventListenerCB callback)
{
- cspi_event_listener_remove_callback (listener, callback);
+ cspi_event_listener_remove_cb (listener, callback);
return TRUE;
}
/**
- * createAccessibleKeystrokeListener:
+ * SPI_createAccessibleKeystrokeListener:
* @callback : an #AccessibleKeystrokeListenerCB callback function, or NULL.
+ * @user_data: a pointer to data which will be passed to the callback when invoked.
*
* Create a new #AccessibleKeystrokeListener with a specified callback function.
*
*
**/
AccessibleKeystrokeListener *
-createAccessibleKeystrokeListener (AccessibleKeystrokeListenerCB callback,
- void *user_data)
+SPI_createAccessibleKeystrokeListener (AccessibleKeystrokeListenerCB callback,
+ void *user_data)
{
- CSpiKeystrokeListener *listener = cspi_keystroke_listener_new ();
+ AccessibleKeystrokeListener *listener = cspi_keystroke_listener_new ();
if (callback)
{
AccessibleKeystrokeListener_addCallback (listener, callback, user_data);
}
- return (AccessibleKeystrokeListener *)listener;
+ return listener;
}
/**
* AccessibleKeystrokeListener_addCallback:
* @listener: the #AccessibleKeystrokeListener instance to modify.
* @callback: an #AccessibleKeystrokeListenerCB function pointer.
+ * @user_data: a pointer to data which will be passed to the callback when invoked.
*
* Add an in-process callback function to an existing #AccessibleKeystrokeListener.
*
AccessibleKeystrokeListenerCB callback,
void *user_data)
{
- cspi_keystroke_listener_add_callback (listener, callback, user_data);
+ cspi_keystroke_listener_add_cb (listener, callback, user_data);
return TRUE;
}
AccessibleKeystrokeListener_removeCallback (AccessibleKeystrokeListener *listener,
AccessibleKeystrokeListenerCB callback)
{
- cspi_keystroke_listener_remove_callback (listener, callback);
+ cspi_keystroke_listener_remove_cb (listener, callback);
return TRUE;
}
void
AccessibleKeystrokeListener_unref (AccessibleKeystrokeListener *listener)
{
- /* Would prefer this not to be bonobo api */
- bonobo_object_unref (BONOBO_OBJECT (listener));
+ cspi_keystroke_listener_unref (listener);
}