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 * 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_FLOWS_TO,
78 SPI_RELATION_FLOWS_FROM,
79 SPI_RELATION_SUBWINDOW_OF,
81 SPI_RELATION_EMBEDDED_BY,
82 SPI_RELATION_LAST_DEFINED
83 } AccessibleRelationType;
86 /* don't change the order of these ! */
88 SPI_COORD_TYPE_SCREEN,
90 } AccessibleCoordType;
98 } AccessibleKeySynthType;
101 SPI_KEYLISTENER_NOSYNC = 0,
102 SPI_KEYLISTENER_SYNCHRONOUS = 1,
103 SPI_KEYLISTENER_CANCONSUME = 2,
104 SPI_KEYLISTENER_ALL_WINDOWS = 4
105 } AccessibleKeyListenerSyncType;
107 typedef unsigned long AccessibleKeyEventMask;
108 typedef unsigned long AccessibleDeviceEventMask;
111 * AccessibleComponentLayer:
112 * @SPI_LAYER_INVALID: The layer cannot be determined or is somehow undefined.
113 * @SPI_LAYER_BACKGROUND: Component belongs to the destop background.
114 * @SPI_LAYER_CANVAS: Component is a canvas backdrop or drawing area.
115 * @SPI_LAYER_WIDGET: Component is a 'normal' widget.
116 * @SPI_LAYER_MDI: Component is drawn in the MDI layer and may have valid
117 * Z-information relative to other MDI-layer components.
118 * @SPI_LAYER_POPUP: Component is in the popup layer, above other widgets and
120 * @SPI_LAYER_OVERLAY: Component is in the overlay plane - this value is reserved
122 * @SPI_LAYER_WINDOW: Component is in the window layer and have valid Z-information
123 * relative to other window-layer components.
124 * @SPI_LAYER_LAST_DEFINED: Used to determine the last valid value in the enum,
125 * should not be encountered.
129 SPI_LAYER_BACKGROUND,
136 SPI_LAYER_LAST_DEFINED
137 } AccessibleComponentLayer;
146 * Structure containing identifying information about a set of keycode or
149 typedef struct _AccessibleKeySet
151 unsigned long *keysyms;
152 unsigned short *keycodes;
158 * SPI_KEYSET_ALL_KEYS:
159 * @SPI_KEYSET_ALL_KEYS: A special value for an AccessibleKeySet type, which tacitly
160 * includes all keycodes and keyvals for the specified modifier set.
162 #define SPI_KEYSET_ALL_KEYS NULL
164 typedef unsigned long AccessibleModifierMaskType;
165 typedef AccessibleModifierMaskType AccessibleKeyMaskType;
167 /* Basic SPI initialization and event loop function prototypes */
170 void SPI_event_main (void);
171 void SPI_event_quit (void);
172 SPIBoolean SPI_eventIsReady (void);
173 AccessibleEvent *SPI_nextEvent (SPIBoolean waitForEvent);
176 /* Event Listener creation and support. */
178 void SPI_freeAccessibleKeySet (
179 AccessibleKeySet *keyset);
180 AccessibleKeySet * SPI_createAccessibleKeySet (
184 const char **keystrings);
185 AccessibleEventListener * SPI_createAccessibleEventListener (
186 AccessibleEventListenerCB callback,
188 SPIBoolean AccessibleEventListener_addCallback (
189 AccessibleEventListener *listener,
190 AccessibleEventListenerCB callback,
192 SPIBoolean AccessibleEventListener_removeCallback (
193 AccessibleEventListener *listener,
194 AccessibleEventListenerCB callback);
195 void AccessibleEventListener_unref (
196 AccessibleEventListener *listener);
198 /* Device Event Listener creation and support. */
200 /* First four are deprecated in favor of the last four; really just a re-name */
202 AccessibleKeystrokeListener * SPI_createAccessibleKeystrokeListener (
203 AccessibleKeystrokeListenerCB callback,
205 SPIBoolean AccessibleKeystrokeListener_addCallback (
206 AccessibleKeystrokeListener *listener,
207 AccessibleKeystrokeListenerCB callback,
209 SPIBoolean AccessibleKeystrokeListener_removeCallback (
210 AccessibleKeystrokeListener *listener,
211 AccessibleKeystrokeListenerCB callback);
212 void AccessibleKeystrokeListener_unref (
213 AccessibleKeystrokeListener *listener);
215 AccessibleDeviceListener * SPI_createAccessibleDeviceListener (
216 AccessibleDeviceListenerCB callback,
218 SPIBoolean AccessibleDeviceListener_addCallback (
219 AccessibleDeviceListener *listener,
220 AccessibleDeviceListenerCB callback,
222 SPIBoolean AccessibleDeviceListener_removeCallback (
223 AccessibleDeviceListener *listener,
224 AccessibleDeviceListenerCB callback);
225 void AccessibleDeviceListener_unref (
226 AccessibleDeviceListener *listener);
228 /* Global functions serviced by the registry */
230 SPIBoolean SPI_registerGlobalEventListener (
231 AccessibleEventListener *listener,
232 const char *eventType);
233 SPIBoolean SPI_deregisterGlobalEventListener (
234 AccessibleEventListener *listener,
235 const char *eventType);
236 SPIBoolean SPI_deregisterGlobalEventListenerAll (
237 AccessibleEventListener *listener);
238 SPIBoolean SPI_registerAccessibleKeystrokeListener (
239 AccessibleKeystrokeListener *listener,
240 AccessibleKeySet *keys,
241 AccessibleKeyMaskType modmask,
242 AccessibleKeyEventMask eventmask,
243 AccessibleKeyListenerSyncType sync_type);
244 SPIBoolean SPI_deregisterAccessibleKeystrokeListener (
245 AccessibleKeystrokeListener *listener,
246 AccessibleKeyMaskType modmask);
248 SPIBoolean SPI_registerDeviceEventListener (
249 AccessibleDeviceListener *listener,
250 AccessibleDeviceEventMask eventmask,
252 SPIBoolean SPI_deregisterDeviceEventListener (
253 AccessibleDeviceListener *listener,
256 int SPI_getDesktopCount (void);
257 Accessible *SPI_getDesktop (int i);
258 int SPI_getDesktopList (Accessible ***desktop_list);
259 void SPI_freeDesktopList (Accessible **desktop_list);
261 SPIBoolean SPI_generateKeyboardEvent (long int keyval,
263 AccessibleKeySynthType synth_type);
265 SPIBoolean SPI_generateMouseEvent (long int x, long int y, char *name);
267 /* Accessible function prototypes */
269 void Accessible_ref (Accessible *obj);
270 void Accessible_unref (Accessible *obj);
271 char * Accessible_getName (Accessible *obj);
272 char * Accessible_getDescription (Accessible *obj);
273 Accessible * Accessible_getParent (Accessible *obj);
274 long Accessible_getChildCount (Accessible *obj);
275 Accessible * Accessible_getChildAtIndex (Accessible *obj,
276 long int childIndex);
277 long Accessible_getIndexInParent (Accessible *obj);
278 AccessibleRelation **Accessible_getRelationSet (Accessible *obj);
279 AccessibleRole Accessible_getRole (Accessible *obj);
280 char * Accessible_getRoleName (Accessible *obj);
281 AccessibleStateSet * Accessible_getStateSet (Accessible *obj);
283 /* Interface query methods */
285 SPIBoolean Accessible_isAction (Accessible *obj);
286 SPIBoolean Accessible_isApplication (Accessible *obj);
287 SPIBoolean Accessible_isComponent (Accessible *obj);
288 SPIBoolean Accessible_isEditableText (Accessible *obj);
289 SPIBoolean Accessible_isHypertext (Accessible *obj);
290 SPIBoolean Accessible_isImage (Accessible *obj);
291 SPIBoolean Accessible_isSelection (Accessible *obj);
292 SPIBoolean Accessible_isStreamableContent (Accessible *obj);
293 SPIBoolean Accessible_isTable (Accessible *obj);
294 SPIBoolean Accessible_isText (Accessible *obj);
295 SPIBoolean Accessible_isValue (Accessible *obj);
297 AccessibleAction * Accessible_getAction (Accessible *obj);
298 AccessibleApplication * Accessible_getApplication (Accessible *obj);
299 AccessibleComponent * Accessible_getComponent (Accessible *obj);
300 AccessibleEditableText * Accessible_getEditableText (Accessible *obj);
301 AccessibleHypertext * Accessible_getHypertext (Accessible *obj);
302 AccessibleImage * Accessible_getImage (Accessible *obj);
303 AccessibleSelection * Accessible_getSelection (Accessible *obj);
304 AccessibleStreamableContent * Accessible_getStreamableContent (Accessible *obj);
305 AccessibleTable * Accessible_getTable (Accessible *obj);
306 AccessibleText * Accessible_getText (Accessible *obj);
307 AccessibleValue * Accessible_getValue (Accessible *obj);
308 AccessibleUnknown * Accessible_queryInterface (Accessible *obj,
309 const char *interface_name);
311 /* AccessibleAction function prototypes */
313 void AccessibleAction_ref (AccessibleAction *obj);
314 void AccessibleAction_unref (AccessibleAction *obj);
315 long AccessibleAction_getNActions (AccessibleAction *obj);
316 char *AccessibleAction_getName (AccessibleAction *obj,
318 char *AccessibleAction_getDescription (AccessibleAction *obj,
320 SPIBoolean AccessibleAction_doAction (AccessibleAction *obj,
322 char *AccessibleAction_getKeyBinding (AccessibleAction *obj,
325 /* AccessibleApplication function prototypes */
327 void AccessibleApplication_ref (AccessibleApplication *obj);
328 void AccessibleApplication_unref (AccessibleApplication *obj);
329 char *AccessibleApplication_getToolkitName (AccessibleApplication *obj);
330 char *AccessibleApplication_getVersion (AccessibleApplication *obj);
331 long AccessibleApplication_getID (AccessibleApplication *obj);
332 SPIBoolean AccessibleApplication_pause (AccessibleApplication *obj);
333 SPIBoolean AccessibleApplication_resume (AccessibleApplication *obj);
335 /* AccessibleComponent function prototypes */
337 void AccessibleComponent_ref (AccessibleComponent *obj);
338 void AccessibleComponent_unref (AccessibleComponent *obj);
339 SPIBoolean AccessibleComponent_contains (AccessibleComponent *obj,
342 AccessibleCoordType ctype);
343 Accessible *AccessibleComponent_getAccessibleAtPoint (
344 AccessibleComponent *obj,
347 AccessibleCoordType ctype);
348 void AccessibleComponent_getExtents (AccessibleComponent *obj,
353 AccessibleCoordType ctype);
354 void AccessibleComponent_getPosition (AccessibleComponent *obj,
357 AccessibleCoordType ctype);
358 void AccessibleComponent_getSize (AccessibleComponent *obj,
361 AccessibleComponentLayer
362 AccessibleComponent_getLayer (AccessibleComponent *obj);
363 SPIBoolean AccessibleComponent_grabFocus (AccessibleComponent *obj);
364 short AccessibleComponent_getMDIZOrder(AccessibleComponent *obj);
366 /* AccessibleEditableText function prototypes */
369 AccessibleEditableText_ref (AccessibleEditableText *obj);
372 AccessibleEditableText_unref (AccessibleEditableText *obj);
375 AccessibleEditableText_setAttributes (AccessibleEditableText *obj,
376 const char *attributes,
377 long int startOffset,
381 AccessibleEditableText_setTextContents (AccessibleEditableText *obj,
382 const char *newContents);
385 AccessibleEditableText_insertText (AccessibleEditableText *obj,
391 AccessibleEditableText_copyText (AccessibleText *obj,
396 AccessibleEditableText_cutText (AccessibleEditableText *obj,
401 AccessibleEditableText_deleteText (AccessibleEditableText *obj,
406 AccessibleEditableText_pasteText (AccessibleEditableText *obj,
411 * AccessibleHyperlink function prototypes
415 AccessibleHyperlink_ref (AccessibleHyperlink *obj);
417 AccessibleHyperlink_unref (AccessibleHyperlink *obj);
420 AccessibleHyperlink_getNAnchors (AccessibleHyperlink *obj);
423 AccessibleHyperlink_getURI (AccessibleHyperlink *obj,
427 AccessibleHyperlink_getObject (AccessibleHyperlink *obj,
431 AccessibleHyperlink_getIndexRange (AccessibleHyperlink *obj,
432 long int *startIndex,
436 AccessibleHyperlink_isValid (AccessibleHyperlink *obj);
440 * AccessibleHypertext function prototypes
445 AccessibleHypertext_ref (AccessibleHypertext *obj);
448 AccessibleHypertext_unref (AccessibleHypertext *obj);
451 AccessibleHypertext_getNLinks (AccessibleHypertext *obj);
453 AccessibleHyperlink *
454 AccessibleHypertext_getLink (AccessibleHypertext *obj,
458 AccessibleHypertext_getLinkIndex (AccessibleHypertext *obj,
459 long int characterOffset);
463 * AccessibleImage function prototypes
468 AccessibleImage_ref (AccessibleImage *obj);
471 AccessibleImage_unref (AccessibleImage *obj);
474 AccessibleImage_getImageDescription (AccessibleImage *obj);
477 AccessibleImage_getImageSize (AccessibleImage *obj,
482 AccessibleImage_getImagePosition (AccessibleImage *obj,
485 AccessibleCoordType ctype);
488 AccessibleImage_getImageExtents (AccessibleImage *obj,
493 AccessibleCoordType ctype);
496 * AccessibleRelation function prototypes
500 void AccessibleRelation_ref (AccessibleRelation *obj);
501 void AccessibleRelation_unref (AccessibleRelation *obj);
503 AccessibleRelationType
504 AccessibleRelation_getRelationType (AccessibleRelation *obj);
507 AccessibleRelation_getNTargets (AccessibleRelation *obj);
510 AccessibleRelation_getTarget (AccessibleRelation *obj, int i);
515 * AccessibleSelection function prototypes
519 void AccessibleSelection_ref (AccessibleSelection *obj);
520 void AccessibleSelection_unref (AccessibleSelection *obj);
523 AccessibleSelection_getNSelectedChildren (AccessibleSelection *obj);
526 AccessibleSelection_getSelectedChild (AccessibleSelection *obj,
527 long int selectedChildIndex);
530 AccessibleSelection_selectChild (AccessibleSelection *obj,
531 long int childIndex);
534 AccessibleSelection_deselectSelectedChild (AccessibleSelection *obj,
535 long int selectedChildIndex);
538 AccessibleSelection_isChildSelected (AccessibleSelection *obj,
539 long int childIndex);
542 AccessibleSelection_selectAll (AccessibleSelection *obj);
545 AccessibleSelection_clearSelection (AccessibleSelection *obj);
550 * AccessibleStateSet function prototypes
554 void AccessibleStateSet_ref (AccessibleStateSet *obj);
555 void AccessibleStateSet_unref (AccessibleStateSet *obj);
558 AccessibleStateSet_contains (AccessibleStateSet *obj,
559 AccessibleState state);
562 AccessibleStateSet_add (AccessibleStateSet *obj,
563 AccessibleState state);
566 AccessibleStateSet_remove (AccessibleStateSet *obj,
567 AccessibleState state);
570 AccessibleStateSet_equals (AccessibleStateSet *obj,
571 AccessibleStateSet *obj2);
574 AccessibleStateSet_compare (AccessibleStateSet *obj,
575 AccessibleStateSet *obj2);
578 AccessibleStateSet_isEmpty (AccessibleStateSet *obj);
581 AccessibleStreamableContent_ref (AccessibleStreamableContent *obj);
583 AccessibleStreamableContent_unref (AccessibleStreamableContent *obj);
585 AccessibleStreamableContent_getContentTypes (AccessibleStreamableContent *obj);
587 AccessibleStreamableContent_open (AccessibleStreamableContent *obj,
588 const char *content_type);
590 AccessibleStreamableContent_seek (AccessibleStreamableContent *obj,
592 unsigned int seek_type);
594 AccessibleStreamableContent_read (AccessibleStreamableContent *obj,
597 unsigned int read_type);
600 * AccessibleTable function prototypes
604 void AccessibleTable_ref (AccessibleTable *obj);
605 void AccessibleTable_unref (AccessibleTable *obj);
608 AccessibleTable_getCaption (AccessibleTable *obj);
611 AccessibleTable_getSummary (AccessibleTable *obj);
614 AccessibleTable_getNRows (AccessibleTable *obj);
617 AccessibleTable_getNColumns (AccessibleTable *obj);
620 AccessibleTable_getAccessibleAt (AccessibleTable *obj,
625 AccessibleTable_getIndexAt (AccessibleTable *obj,
630 AccessibleTable_getRowAtIndex (AccessibleTable *obj,
634 AccessibleTable_getColumnAtIndex (AccessibleTable *obj,
638 AccessibleTable_getRowDescription (AccessibleTable *obj,
642 AccessibleTable_getColumnDescription (AccessibleTable *obj,
646 AccessibleTable_getRowExtentAt (AccessibleTable *obj,
651 AccessibleTable_getColumnExtentAt (AccessibleTable *obj,
656 AccessibleTable_getRowHeader (AccessibleTable *obj,
660 AccessibleTable_getColumnHeader (AccessibleTable *obj,
664 AccessibleTable_getNSelectedRows (AccessibleTable *obj);
667 AccessibleTable_getSelectedRows (AccessibleTable *obj,
668 long int **selectedRows);
671 AccessibleTable_getNSelectedColumns (AccessibleTable *obj);
674 AccessibleTable_getSelectedColumns (AccessibleTable *obj,
675 long int **selectedColumns);
678 AccessibleTable_isRowSelected (AccessibleTable *obj,
682 AccessibleTable_isColumnSelected (AccessibleTable *obj,
686 AccessibleTable_isSelected (AccessibleTable *obj,
692 * AccessibleText function prototypes
696 void AccessibleText_ref (AccessibleText *obj);
697 void AccessibleText_unref (AccessibleText *obj);
700 AccessibleText_getCharacterCount (AccessibleText *obj);
703 AccessibleText_getText (AccessibleText *obj,
704 long int startOffset,
708 AccessibleText_getCaretOffset (AccessibleText *obj);
711 AccessibleText_getAttributes (AccessibleText *obj,
713 long int *startOffset,
714 long int *endOffset);
718 AccessibleText_setCaretOffset (AccessibleText *obj,
722 AccessibleText_getTextBeforeOffset (AccessibleText *obj,
724 AccessibleTextBoundaryType type,
725 long int *startOffset,
726 long int *endOffset);
729 AccessibleText_getTextAtOffset (AccessibleText *obj,
731 AccessibleTextBoundaryType type,
732 long int *startOffset,
733 long int *endOffset);
736 AccessibleText_getTextAfterOffset (AccessibleText *obj,
738 AccessibleTextBoundaryType type,
739 long int *startOffset,
740 long int *endOffset);
743 AccessibleText_getCharacterAtOffset (AccessibleText *obj,
747 AccessibleText_getCharacterExtents (AccessibleText *obj,
753 AccessibleCoordType type);
756 AccessibleText_getOffsetAtPoint (AccessibleText *obj,
759 AccessibleCoordType type);
762 AccessibleText_getNSelections (AccessibleText *obj);
765 AccessibleText_getSelection (AccessibleText *obj,
766 long int selectionNum,
767 long int *startOffset,
768 long int *endOffset);
772 AccessibleText_addSelection (AccessibleText *obj,
773 long int startOffset,
777 AccessibleText_removeSelection (AccessibleText *obj,
778 long int selectionNum);
781 AccessibleText_setSelection (AccessibleText *obj,
782 long int selectionNum,
783 long int startOffset,
786 /* AccessibleValue Function Prototypes: */
788 void AccessibleValue_ref (AccessibleValue *obj);
789 void AccessibleValue_unref (AccessibleValue *obj);
790 double AccessibleValue_getMinimumValue (AccessibleValue *obj);
791 double AccessibleValue_getCurrentValue (AccessibleValue *obj);
792 double AccessibleValue_getMaximumValue (AccessibleValue *obj);
793 SPIBoolean AccessibleValue_setCurrentValue (AccessibleValue *obj,
797 * Prototypes for accessor functions, to obtain context
798 * information for accessible events.
801 char* AccessibleEvent_getContextString (const AccessibleEvent *e);
802 Accessible * AccessibleEvent_getContextObject (const AccessibleEvent *e);
805 void SPI_freeString (char *s);