2 * AT-SPI - Assistive Technology Service Provider Interface
3 * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
5 * Copyright 2001, 2002 Sun Microsystems Inc.,
6 * Copyright 2001, 2002 Ximian, Inc.
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Library General Public License for more details.
18 * You should have received a copy of the GNU Library General Public
19 * License along with this library; if not, write to the
20 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21 * Boston, MA 02111-1307, USA.
27 #include <cspi/spi-impl.h>
29 * Definitions for AccessibleRole, AccessibleState,
30 * AccessibleEvent, and event listeners.
32 #include <cspi/spi-roletypes.h>
33 #include <cspi/spi-statetypes.h>
34 #include <cspi/spi-listener.h>
37 * Auxiliary typedefs and mask definitions
39 #include <libspi/keymasks.h>
46 * Enumerated type for text boundary types
50 SPI_TEXT_BOUNDARY_CHAR,
51 SPI_TEXT_BOUNDARY_CURSOR_POS,
52 SPI_TEXT_BOUNDARY_WORD_START,
53 SPI_TEXT_BOUNDARY_WORD_END,
54 SPI_TEXT_BOUNDARY_SENTENCE_START,
55 SPI_TEXT_BOUNDARY_SENTENCE_END,
56 SPI_TEXT_BOUNDARY_LINE_START,
57 SPI_TEXT_BOUNDARY_LINE_END,
58 SPI_TEXT_BOUNDARY_ATTRIBUTE_RANGE
59 } AccessibleTextBoundaryType;
63 * Enumerated type for relation types
70 SPI_RELATION_LABEL_FOR,
71 SPI_RELATION_LABELED_BY,
72 SPI_RELATION_CONTROLLER_FOR,
73 SPI_RELATION_CONTROLLED_BY,
74 SPI_RELATION_MEMBER_OF,
75 SPI_RELATION_NODE_CHILD_OF,
76 SPI_RELATION_EXTENDED,
77 SPI_RELATION_LAST_DEFINED
78 } AccessibleRelationType;
81 /* don't change the order of these ! */
83 SPI_COORD_TYPE_SCREEN,
85 } AccessibleCoordType;
93 } AccessibleKeySynthType;
96 SPI_KEYLISTENER_NOSYNC = 0,
97 SPI_KEYLISTENER_SYNCHRONOUS = 1,
98 SPI_KEYLISTENER_CANCONSUME = 2,
99 SPI_KEYLISTENER_ALL_WINDOWS = 4
100 } AccessibleKeyListenerSyncType;
102 typedef unsigned long AccessibleKeyEventMask;
103 typedef unsigned long AccessibleDeviceEventMask;
106 * AccessibleComponentLayer:
107 * @SPI_LAYER_INVALID: The layer cannot be determined or is somehow undefined.
108 * @SPI_LAYER_BACKGROUND: Component belongs to the destop background.
109 * @SPI_LAYER_CANVAS: Component is a canvas backdrop or drawing area.
110 * @SPI_LAYER_WIDGET: Component is a 'normal' widget.
111 * @SPI_LAYER_MDI: Component is drawn in the MDI layer and may have valid
112 * Z-information relative to other MDI-layer components.
113 * @SPI_LAYER_POPUP: Component is in the popup layer, above other widgets and
115 * @SPI_LAYER_OVERLAY: Component is in the overlay plane - this value is reserved
117 * @SPI_LAYER_WINDOW: Component is in the window layer and have valid Z-information
118 * relative to other window-layer components.
119 * @SPI_LAYER_LAST_DEFINED: Used to determine the last valid value in the enum,
120 * should not be encountered.
124 SPI_LAYER_BACKGROUND,
131 SPI_LAYER_LAST_DEFINED
132 } AccessibleComponentLayer;
141 * Structure containing identifying information about a set of keycode or
144 typedef struct _AccessibleKeySet
146 unsigned long *keysyms;
147 unsigned short *keycodes;
153 * SPI_KEYSET_ALL_KEYS:
154 * @SPI_KEYSET_ALL_KEYS: A special value for an AccessibleKeySet type, which tacitly
155 * includes all keycodes and keyvals for the specified modifier set.
157 #define SPI_KEYSET_ALL_KEYS NULL
159 typedef unsigned long AccessibleModifierMaskType;
160 typedef AccessibleModifierMaskType AccessibleKeyMaskType;
162 /* Basic SPI initialization and event loop function prototypes */
165 void SPI_event_main (void);
166 void SPI_event_quit (void);
167 SPIBoolean SPI_eventIsReady (void);
168 AccessibleEvent *SPI_nextEvent (SPIBoolean waitForEvent);
171 /* Event Listener creation and support. */
173 void SPI_freeAccessibleKeySet (
174 AccessibleKeySet *keyset);
175 AccessibleKeySet * SPI_createAccessibleKeySet (
179 const char **keystrings);
180 AccessibleEventListener * SPI_createAccessibleEventListener (
181 AccessibleEventListenerCB callback,
183 SPIBoolean AccessibleEventListener_addCallback (
184 AccessibleEventListener *listener,
185 AccessibleEventListenerCB callback,
187 SPIBoolean AccessibleEventListener_removeCallback (
188 AccessibleEventListener *listener,
189 AccessibleEventListenerCB callback);
190 void AccessibleEventListener_unref (
191 AccessibleEventListener *listener);
193 /* Device Event Listener creation and support. */
195 /* First four are deprecated in favor of the last four; really just a re-name */
197 AccessibleKeystrokeListener * SPI_createAccessibleKeystrokeListener (
198 AccessibleKeystrokeListenerCB callback,
200 SPIBoolean AccessibleKeystrokeListener_addCallback (
201 AccessibleKeystrokeListener *listener,
202 AccessibleKeystrokeListenerCB callback,
204 SPIBoolean AccessibleKeystrokeListener_removeCallback (
205 AccessibleKeystrokeListener *listener,
206 AccessibleKeystrokeListenerCB callback);
207 void AccessibleKeystrokeListener_unref (
208 AccessibleKeystrokeListener *listener);
210 AccessibleDeviceListener * SPI_createAccessibleDeviceListener (
211 AccessibleDeviceListenerCB callback,
213 SPIBoolean AccessibleDeviceListener_addCallback (
214 AccessibleDeviceListener *listener,
215 AccessibleDeviceListenerCB callback,
217 SPIBoolean AccessibleDeviceListener_removeCallback (
218 AccessibleDeviceListener *listener,
219 AccessibleDeviceListenerCB callback);
220 void AccessibleDeviceListener_unref (
221 AccessibleDeviceListener *listener);
223 /* Global functions serviced by the registry */
225 SPIBoolean SPI_registerGlobalEventListener (
226 AccessibleEventListener *listener,
227 const char *eventType);
228 SPIBoolean SPI_deregisterGlobalEventListener (
229 AccessibleEventListener *listener,
230 const char *eventType);
231 SPIBoolean SPI_deregisterGlobalEventListenerAll (
232 AccessibleEventListener *listener);
233 SPIBoolean SPI_registerAccessibleKeystrokeListener (
234 AccessibleKeystrokeListener *listener,
235 AccessibleKeySet *keys,
236 AccessibleKeyMaskType modmask,
237 AccessibleKeyEventMask eventmask,
238 AccessibleKeyListenerSyncType sync_type);
239 SPIBoolean SPI_deregisterAccessibleKeystrokeListener (
240 AccessibleKeystrokeListener *listener,
241 AccessibleKeyMaskType modmask);
243 SPIBoolean SPI_registerDeviceEventListener (
244 AccessibleDeviceListener *listener,
245 AccessibleDeviceEventMask eventmask,
247 SPIBoolean SPI_deregisterDeviceEventListener (
248 AccessibleDeviceListener *listener,
251 int SPI_getDesktopCount (void);
252 Accessible *SPI_getDesktop (int i);
253 int SPI_getDesktopList (Accessible ***desktop_list);
254 void SPI_freeDesktopList (Accessible **desktop_list);
256 SPIBoolean SPI_generateKeyboardEvent (long int keyval,
258 AccessibleKeySynthType synth_type);
260 SPIBoolean SPI_generateMouseEvent (long int x, long int y, char *name);
262 /* Accessible function prototypes */
264 void Accessible_ref (Accessible *obj);
265 void Accessible_unref (Accessible *obj);
266 char * Accessible_getName (Accessible *obj);
267 char * Accessible_getDescription (Accessible *obj);
268 Accessible * Accessible_getParent (Accessible *obj);
269 long Accessible_getChildCount (Accessible *obj);
270 Accessible * Accessible_getChildAtIndex (Accessible *obj,
271 long int childIndex);
272 long Accessible_getIndexInParent (Accessible *obj);
273 AccessibleRelation **Accessible_getRelationSet (Accessible *obj);
274 AccessibleRole Accessible_getRole (Accessible *obj);
275 char * Accessible_getRoleName (Accessible *obj);
276 AccessibleStateSet * Accessible_getStateSet (Accessible *obj);
278 /* Interface query methods */
280 SPIBoolean Accessible_isAction (Accessible *obj);
281 SPIBoolean Accessible_isApplication (Accessible *obj);
282 SPIBoolean Accessible_isComponent (Accessible *obj);
283 SPIBoolean Accessible_isEditableText (Accessible *obj);
284 SPIBoolean Accessible_isHypertext (Accessible *obj);
285 SPIBoolean Accessible_isImage (Accessible *obj);
286 SPIBoolean Accessible_isSelection (Accessible *obj);
287 SPIBoolean Accessible_isStreamableContent (Accessible *obj);
288 SPIBoolean Accessible_isTable (Accessible *obj);
289 SPIBoolean Accessible_isText (Accessible *obj);
290 SPIBoolean Accessible_isValue (Accessible *obj);
292 AccessibleAction * Accessible_getAction (Accessible *obj);
293 AccessibleApplication * Accessible_getApplication (Accessible *obj);
294 AccessibleComponent * Accessible_getComponent (Accessible *obj);
295 AccessibleEditableText * Accessible_getEditableText (Accessible *obj);
296 AccessibleHypertext * Accessible_getHypertext (Accessible *obj);
297 AccessibleImage * Accessible_getImage (Accessible *obj);
298 AccessibleSelection * Accessible_getSelection (Accessible *obj);
299 AccessibleStreamableContent * Accessible_getStreamableContent (Accessible *obj);
300 AccessibleTable * Accessible_getTable (Accessible *obj);
301 AccessibleText * Accessible_getText (Accessible *obj);
302 AccessibleValue * Accessible_getValue (Accessible *obj);
303 AccessibleUnknown * Accessible_queryInterface (Accessible *obj,
304 const char *interface_name);
306 /* AccessibleAction function prototypes */
308 void AccessibleAction_ref (AccessibleAction *obj);
309 void AccessibleAction_unref (AccessibleAction *obj);
310 long AccessibleAction_getNActions (AccessibleAction *obj);
311 char *AccessibleAction_getName (AccessibleAction *obj,
313 char *AccessibleAction_getDescription (AccessibleAction *obj,
315 SPIBoolean AccessibleAction_doAction (AccessibleAction *obj,
317 char *AccessibleAction_getKeyBinding (AccessibleAction *obj,
320 /* AccessibleApplication function prototypes */
322 void AccessibleApplication_ref (AccessibleApplication *obj);
323 void AccessibleApplication_unref (AccessibleApplication *obj);
324 char *AccessibleApplication_getToolkitName (AccessibleApplication *obj);
325 char *AccessibleApplication_getVersion (AccessibleApplication *obj);
326 long AccessibleApplication_getID (AccessibleApplication *obj);
327 SPIBoolean AccessibleApplication_pause (AccessibleApplication *obj);
328 SPIBoolean AccessibleApplication_resume (AccessibleApplication *obj);
330 /* AccessibleComponent function prototypes */
332 void AccessibleComponent_ref (AccessibleComponent *obj);
333 void AccessibleComponent_unref (AccessibleComponent *obj);
334 SPIBoolean AccessibleComponent_contains (AccessibleComponent *obj,
337 AccessibleCoordType ctype);
338 Accessible *AccessibleComponent_getAccessibleAtPoint (
339 AccessibleComponent *obj,
342 AccessibleCoordType ctype);
343 void AccessibleComponent_getExtents (AccessibleComponent *obj,
348 AccessibleCoordType ctype);
349 void AccessibleComponent_getPosition (AccessibleComponent *obj,
352 AccessibleCoordType ctype);
353 void AccessibleComponent_getSize (AccessibleComponent *obj,
356 AccessibleComponentLayer
357 AccessibleComponent_getLayer (AccessibleComponent *obj);
358 SPIBoolean AccessibleComponent_grabFocus (AccessibleComponent *obj);
359 short AccessibleComponent_getMDIZOrder(AccessibleComponent *obj);
361 /* AccessibleEditableText function prototypes */
364 AccessibleEditableText_ref (AccessibleEditableText *obj);
367 AccessibleEditableText_unref (AccessibleEditableText *obj);
370 AccessibleEditableText_setAttributes (AccessibleEditableText *obj,
371 const char *attributes,
372 long int startOffset,
376 AccessibleEditableText_setTextContents (AccessibleEditableText *obj,
377 const char *newContents);
380 AccessibleEditableText_insertText (AccessibleEditableText *obj,
386 AccessibleEditableText_copyText (AccessibleText *obj,
391 AccessibleEditableText_cutText (AccessibleEditableText *obj,
396 AccessibleEditableText_deleteText (AccessibleEditableText *obj,
401 AccessibleEditableText_pasteText (AccessibleEditableText *obj,
406 * AccessibleHyperlink function prototypes
410 AccessibleHyperlink_ref (AccessibleHyperlink *obj);
412 AccessibleHyperlink_unref (AccessibleHyperlink *obj);
415 AccessibleHyperlink_getNAnchors (AccessibleHyperlink *obj);
418 AccessibleHyperlink_getURI (AccessibleHyperlink *obj,
422 AccessibleHyperlink_getObject (AccessibleHyperlink *obj,
426 AccessibleHyperlink_getIndexRange (AccessibleHyperlink *obj,
427 long int *startIndex,
431 AccessibleHyperlink_isValid (AccessibleHyperlink *obj);
435 * AccessibleHypertext function prototypes
440 AccessibleHypertext_ref (AccessibleHypertext *obj);
443 AccessibleHypertext_unref (AccessibleHypertext *obj);
446 AccessibleHypertext_getNLinks (AccessibleHypertext *obj);
448 AccessibleHyperlink *
449 AccessibleHypertext_getLink (AccessibleHypertext *obj,
453 AccessibleHypertext_getLinkIndex (AccessibleHypertext *obj,
454 long int characterOffset);
458 * AccessibleImage function prototypes
463 AccessibleImage_ref (AccessibleImage *obj);
466 AccessibleImage_unref (AccessibleImage *obj);
469 AccessibleImage_getImageDescription (AccessibleImage *obj);
472 AccessibleImage_getImageSize (AccessibleImage *obj,
477 AccessibleImage_getImagePosition (AccessibleImage *obj,
480 AccessibleCoordType ctype);
483 AccessibleImage_getImageExtents (AccessibleImage *obj,
488 AccessibleCoordType ctype);
491 * AccessibleRelation function prototypes
495 void AccessibleRelation_ref (AccessibleRelation *obj);
496 void AccessibleRelation_unref (AccessibleRelation *obj);
498 AccessibleRelationType
499 AccessibleRelation_getRelationType (AccessibleRelation *obj);
502 AccessibleRelation_getNTargets (AccessibleRelation *obj);
505 AccessibleRelation_getTarget (AccessibleRelation *obj, int i);
510 * AccessibleSelection function prototypes
514 void AccessibleSelection_ref (AccessibleSelection *obj);
515 void AccessibleSelection_unref (AccessibleSelection *obj);
518 AccessibleSelection_getNSelectedChildren (AccessibleSelection *obj);
521 AccessibleSelection_getSelectedChild (AccessibleSelection *obj,
522 long int selectedChildIndex);
525 AccessibleSelection_selectChild (AccessibleSelection *obj,
526 long int childIndex);
529 AccessibleSelection_deselectSelectedChild (AccessibleSelection *obj,
530 long int selectedChildIndex);
533 AccessibleSelection_isChildSelected (AccessibleSelection *obj,
534 long int childIndex);
537 AccessibleSelection_selectAll (AccessibleSelection *obj);
540 AccessibleSelection_clearSelection (AccessibleSelection *obj);
545 * AccessibleStateSet function prototypes
549 void AccessibleStateSet_ref (AccessibleStateSet *obj);
550 void AccessibleStateSet_unref (AccessibleStateSet *obj);
553 AccessibleStateSet_contains (AccessibleStateSet *obj,
554 AccessibleState state);
557 AccessibleStateSet_add (AccessibleStateSet *obj,
558 AccessibleState state);
561 AccessibleStateSet_remove (AccessibleStateSet *obj,
562 AccessibleState state);
565 AccessibleStateSet_equals (AccessibleStateSet *obj,
566 AccessibleStateSet *obj2);
569 AccessibleStateSet_compare (AccessibleStateSet *obj,
570 AccessibleStateSet *obj2);
573 AccessibleStateSet_isEmpty (AccessibleStateSet *obj);
576 AccessibleStreamableContent_ref (AccessibleStreamableContent *obj);
578 AccessibleStreamableContent_unref (AccessibleStreamableContent *obj);
580 AccessibleStreamableContent_getContentTypes (AccessibleStreamableContent *obj);
582 AccessibleStreamableContent_open (AccessibleStreamableContent *obj,
583 const char *content_type);
585 AccessibleStreamableContent_seek (AccessibleStreamableContent *obj,
587 unsigned int seek_type);
589 AccessibleStreamableContent_read (AccessibleStreamableContent *obj,
592 unsigned int read_type);
595 * AccessibleTable function prototypes
599 void AccessibleTable_ref (AccessibleTable *obj);
600 void AccessibleTable_unref (AccessibleTable *obj);
603 AccessibleTable_getCaption (AccessibleTable *obj);
606 AccessibleTable_getSummary (AccessibleTable *obj);
609 AccessibleTable_getNRows (AccessibleTable *obj);
612 AccessibleTable_getNColumns (AccessibleTable *obj);
615 AccessibleTable_getAccessibleAt (AccessibleTable *obj,
620 AccessibleTable_getIndexAt (AccessibleTable *obj,
625 AccessibleTable_getRowAtIndex (AccessibleTable *obj,
629 AccessibleTable_getColumnAtIndex (AccessibleTable *obj,
633 AccessibleTable_getRowDescription (AccessibleTable *obj,
637 AccessibleTable_getColumnDescription (AccessibleTable *obj,
641 AccessibleTable_getRowExtentAt (AccessibleTable *obj,
646 AccessibleTable_getColumnExtentAt (AccessibleTable *obj,
651 AccessibleTable_getRowHeader (AccessibleTable *obj,
655 AccessibleTable_getColumnHeader (AccessibleTable *obj,
659 AccessibleTable_getNSelectedRows (AccessibleTable *obj);
662 AccessibleTable_getSelectedRows (AccessibleTable *obj,
663 long int **selectedRows);
666 AccessibleTable_getNSelectedColumns (AccessibleTable *obj);
669 AccessibleTable_getSelectedColumns (AccessibleTable *obj,
670 long int **selectedColumns);
673 AccessibleTable_isRowSelected (AccessibleTable *obj,
677 AccessibleTable_isColumnSelected (AccessibleTable *obj,
681 AccessibleTable_isSelected (AccessibleTable *obj,
687 * AccessibleText function prototypes
691 void AccessibleText_ref (AccessibleText *obj);
692 void AccessibleText_unref (AccessibleText *obj);
695 AccessibleText_getCharacterCount (AccessibleText *obj);
698 AccessibleText_getText (AccessibleText *obj,
699 long int startOffset,
703 AccessibleText_getCaretOffset (AccessibleText *obj);
706 AccessibleText_getAttributes (AccessibleText *obj,
708 long int *startOffset,
709 long int *endOffset);
713 AccessibleText_setCaretOffset (AccessibleText *obj,
717 AccessibleText_getTextBeforeOffset (AccessibleText *obj,
719 AccessibleTextBoundaryType type,
720 long int *startOffset,
721 long int *endOffset);
724 AccessibleText_getTextAtOffset (AccessibleText *obj,
726 AccessibleTextBoundaryType type,
727 long int *startOffset,
728 long int *endOffset);
731 AccessibleText_getTextAfterOffset (AccessibleText *obj,
733 AccessibleTextBoundaryType type,
734 long int *startOffset,
735 long int *endOffset);
738 AccessibleText_getCharacterAtOffset (AccessibleText *obj,
742 AccessibleText_getCharacterExtents (AccessibleText *obj,
748 AccessibleCoordType type);
751 AccessibleText_getOffsetAtPoint (AccessibleText *obj,
754 AccessibleCoordType type);
757 AccessibleText_getNSelections (AccessibleText *obj);
760 AccessibleText_getSelection (AccessibleText *obj,
761 long int selectionNum,
762 long int *startOffset,
763 long int *endOffset);
767 AccessibleText_addSelection (AccessibleText *obj,
768 long int startOffset,
772 AccessibleText_removeSelection (AccessibleText *obj,
773 long int selectionNum);
776 AccessibleText_setSelection (AccessibleText *obj,
777 long int selectionNum,
778 long int startOffset,
781 /* AccessibleValue Function Prototypes: */
783 void AccessibleValue_ref (AccessibleValue *obj);
784 void AccessibleValue_unref (AccessibleValue *obj);
785 double AccessibleValue_getMinimumValue (AccessibleValue *obj);
786 double AccessibleValue_getCurrentValue (AccessibleValue *obj);
787 double AccessibleValue_getMaximumValue (AccessibleValue *obj);
788 SPIBoolean AccessibleValue_setCurrentValue (AccessibleValue *obj,
792 void SPI_freeString (char *s);