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;
105 * AccessibleComponentLayer:
106 * @SPI_LAYER_INVALID: The layer cannot be determined or is somehow undefined.
107 * @SPI_LAYER_BACKGROUND: Component belongs to the destop background.
108 * @SPI_LAYER_CANVAS: Component is a canvas backdrop or drawing area.
109 * @SPI_LAYER_WIDGET: Component is a 'normal' widget.
110 * @SPI_LAYER_MDI: Component is drawn in the MDI layer and may have valid
111 * Z-information relative to other MDI-layer components.
112 * @SPI_LAYER_POPUP: Component is in the popup layer, above other widgets and
114 * @SPI_LAYER_OVERLAY: Component is in the overlay plane - this value is reserved
116 * @SPI_LAYER_WINDOW: Component is in the window layer and have valid Z-information
117 * relative to other window-layer components.
118 * @SPI_LAYER_LAST_DEFINED: Used to determine the last valid value in the enum,
119 * should not be encountered.
123 SPI_LAYER_BACKGROUND,
130 SPI_LAYER_LAST_DEFINED
131 } AccessibleComponentLayer;
140 * Structure containing identifying information about a set of keycode or
143 typedef struct _AccessibleKeySet
145 unsigned long *keysyms;
146 unsigned short *keycodes;
152 * SPI_KEYSET_ALL_KEYS:
153 * @SPI_KEYSET_ALL_KEYS: A special value for an AccessibleKeySet type, which tacitly
154 * includes all keycodes and keyvals for the specified modifier set.
156 #define SPI_KEYSET_ALL_KEYS NULL
158 typedef unsigned long AccessibleKeyMaskType;
161 /* Basic SPI initialization and event loop function prototypes */
164 void SPI_event_main (void);
165 void SPI_event_quit (void);
166 SPIBoolean SPI_eventIsReady (void);
167 AccessibleEvent *SPI_nextEvent (SPIBoolean waitForEvent);
170 /* Event Listener creation and support. */
172 void SPI_freeAccessibleKeySet (
173 AccessibleKeySet *keyset);
174 AccessibleKeySet * SPI_createAccessibleKeySet (
178 const char **keystrings);
179 AccessibleEventListener * SPI_createAccessibleEventListener (
180 AccessibleEventListenerCB callback,
182 SPIBoolean AccessibleEventListener_addCallback (
183 AccessibleEventListener *listener,
184 AccessibleEventListenerCB callback,
186 SPIBoolean AccessibleEventListener_removeCallback (
187 AccessibleEventListener *listener,
188 AccessibleEventListenerCB callback);
189 void AccessibleEventListener_unref (
190 AccessibleEventListener *listener);
192 /* Keystroke Listener creation and support. */
194 AccessibleKeystrokeListener * SPI_createAccessibleKeystrokeListener (
195 AccessibleKeystrokeListenerCB callback,
197 SPIBoolean AccessibleKeystrokeListener_addCallback (
198 AccessibleKeystrokeListener *listener,
199 AccessibleKeystrokeListenerCB callback,
201 SPIBoolean AccessibleKeystrokeListener_removeCallback (
202 AccessibleKeystrokeListener *listener,
203 AccessibleKeystrokeListenerCB callback);
204 void AccessibleKeystrokeListener_unref (
205 AccessibleKeystrokeListener *listener);
207 /* Global functions serviced by the registry */
209 SPIBoolean SPI_registerGlobalEventListener (
210 AccessibleEventListener *listener,
211 const char *eventType);
212 SPIBoolean SPI_deregisterGlobalEventListener (
213 AccessibleEventListener *listener,
214 const char *eventType);
215 SPIBoolean SPI_deregisterGlobalEventListenerAll (
216 AccessibleEventListener *listener);
217 SPIBoolean SPI_registerAccessibleKeystrokeListener (
218 AccessibleKeystrokeListener *listener,
219 AccessibleKeySet *keys,
220 AccessibleKeyMaskType modmask,
221 AccessibleKeyEventMask eventmask,
222 AccessibleKeyListenerSyncType sync_type);
223 SPIBoolean SPI_deregisterAccessibleKeystrokeListener (
224 AccessibleKeystrokeListener *listener,
225 AccessibleKeyMaskType modmask);
227 int SPI_getDesktopCount (void);
228 Accessible *SPI_getDesktop (int i);
229 int SPI_getDesktopList (Accessible ***desktop_list);
230 void SPI_freeDesktopList (Accessible **desktop_list);
232 SPIBoolean SPI_generateKeyboardEvent (long int keyval,
234 AccessibleKeySynthType synth_type);
236 SPIBoolean SPI_generateMouseEvent (long int x, long int y, char *name);
238 /* Accessible function prototypes */
240 void Accessible_ref (Accessible *obj);
241 void Accessible_unref (Accessible *obj);
242 char * Accessible_getName (Accessible *obj);
243 char * Accessible_getDescription (Accessible *obj);
244 Accessible * Accessible_getParent (Accessible *obj);
245 long Accessible_getChildCount (Accessible *obj);
246 Accessible * Accessible_getChildAtIndex (Accessible *obj,
247 long int childIndex);
248 long Accessible_getIndexInParent (Accessible *obj);
249 AccessibleRelation **Accessible_getRelationSet (Accessible *obj);
250 AccessibleRole Accessible_getRole (Accessible *obj);
251 char * Accessible_getRoleName (Accessible *obj);
252 AccessibleStateSet * Accessible_getStateSet (Accessible *obj);
254 /* Interface query methods */
256 SPIBoolean Accessible_isAction (Accessible *obj);
257 SPIBoolean Accessible_isApplication (Accessible *obj);
258 SPIBoolean Accessible_isComponent (Accessible *obj);
259 SPIBoolean Accessible_isEditableText (Accessible *obj);
260 SPIBoolean Accessible_isHypertext (Accessible *obj);
261 SPIBoolean Accessible_isImage (Accessible *obj);
262 SPIBoolean Accessible_isSelection (Accessible *obj);
263 SPIBoolean Accessible_isStreamableContent (Accessible *obj);
264 SPIBoolean Accessible_isTable (Accessible *obj);
265 SPIBoolean Accessible_isText (Accessible *obj);
266 SPIBoolean Accessible_isValue (Accessible *obj);
268 AccessibleAction * Accessible_getAction (Accessible *obj);
269 AccessibleApplication * Accessible_getApplication (Accessible *obj);
270 AccessibleComponent * Accessible_getComponent (Accessible *obj);
271 AccessibleEditableText * Accessible_getEditableText (Accessible *obj);
272 AccessibleHypertext * Accessible_getHypertext (Accessible *obj);
273 AccessibleImage * Accessible_getImage (Accessible *obj);
274 AccessibleSelection * Accessible_getSelection (Accessible *obj);
275 AccessibleStreamableContent * Accessible_getStreamableContent (Accessible *obj);
276 AccessibleTable * Accessible_getTable (Accessible *obj);
277 AccessibleText * Accessible_getText (Accessible *obj);
278 AccessibleValue * Accessible_getValue (Accessible *obj);
279 AccessibleUnknown * Accessible_queryInterface (Accessible *obj,
280 const char *interface_name);
282 /* AccessibleAction function prototypes */
284 void AccessibleAction_ref (AccessibleAction *obj);
285 void AccessibleAction_unref (AccessibleAction *obj);
286 long AccessibleAction_getNActions (AccessibleAction *obj);
287 char *AccessibleAction_getName (AccessibleAction *obj,
289 char *AccessibleAction_getDescription (AccessibleAction *obj,
291 SPIBoolean AccessibleAction_doAction (AccessibleAction *obj,
293 char *AccessibleAction_getKeyBinding (AccessibleAction *obj,
296 /* AccessibleApplication function prototypes */
298 void AccessibleApplication_ref (AccessibleApplication *obj);
299 void AccessibleApplication_unref (AccessibleApplication *obj);
300 char *AccessibleApplication_getToolkitName (AccessibleApplication *obj);
301 char *AccessibleApplication_getVersion (AccessibleApplication *obj);
302 long AccessibleApplication_getID (AccessibleApplication *obj);
303 SPIBoolean AccessibleApplication_pause (AccessibleApplication *obj);
304 SPIBoolean AccessibleApplication_resume (AccessibleApplication *obj);
306 /* AccessibleComponent function prototypes */
308 void AccessibleComponent_ref (AccessibleComponent *obj);
309 void AccessibleComponent_unref (AccessibleComponent *obj);
310 SPIBoolean AccessibleComponent_contains (AccessibleComponent *obj,
313 AccessibleCoordType ctype);
314 Accessible *AccessibleComponent_getAccessibleAtPoint (
315 AccessibleComponent *obj,
318 AccessibleCoordType ctype);
319 void AccessibleComponent_getExtents (AccessibleComponent *obj,
324 AccessibleCoordType ctype);
325 void AccessibleComponent_getPosition (AccessibleComponent *obj,
328 AccessibleCoordType ctype);
329 void AccessibleComponent_getSize (AccessibleComponent *obj,
332 AccessibleComponentLayer
333 AccessibleComponent_getLayer (AccessibleComponent *obj);
334 SPIBoolean AccessibleComponent_grabFocus (AccessibleComponent *obj);
335 short AccessibleComponent_getMDIZOrder(AccessibleComponent *obj);
337 /* AccessibleEditableText function prototypes */
340 AccessibleEditableText_ref (AccessibleEditableText *obj);
343 AccessibleEditableText_unref (AccessibleEditableText *obj);
346 AccessibleEditableText_setAttributes (AccessibleEditableText *obj,
347 const char *attributes,
348 long int startOffset,
352 AccessibleEditableText_setTextContents (AccessibleEditableText *obj,
353 const char *newContents);
356 AccessibleEditableText_insertText (AccessibleEditableText *obj,
362 AccessibleEditableText_copyText (AccessibleText *obj,
367 AccessibleEditableText_cutText (AccessibleEditableText *obj,
372 AccessibleEditableText_deleteText (AccessibleEditableText *obj,
377 AccessibleEditableText_pasteText (AccessibleEditableText *obj,
382 * AccessibleHyperlink function prototypes
386 AccessibleHyperlink_ref (AccessibleHyperlink *obj);
388 AccessibleHyperlink_unref (AccessibleHyperlink *obj);
391 AccessibleHyperlink_getNAnchors (AccessibleHyperlink *obj);
394 AccessibleHyperlink_getURI (AccessibleHyperlink *obj,
398 AccessibleHyperlink_getObject (AccessibleHyperlink *obj,
402 AccessibleHyperlink_getIndexRange (AccessibleHyperlink *obj,
403 long int *startIndex,
407 AccessibleHyperlink_isValid (AccessibleHyperlink *obj);
411 * AccessibleHypertext function prototypes
416 AccessibleHypertext_ref (AccessibleHypertext *obj);
419 AccessibleHypertext_unref (AccessibleHypertext *obj);
422 AccessibleHypertext_getNLinks (AccessibleHypertext *obj);
424 AccessibleHyperlink *
425 AccessibleHypertext_getLink (AccessibleHypertext *obj,
429 AccessibleHypertext_getLinkIndex (AccessibleHypertext *obj,
430 long int characterOffset);
434 * AccessibleImage function prototypes
439 AccessibleImage_ref (AccessibleImage *obj);
442 AccessibleImage_unref (AccessibleImage *obj);
445 AccessibleImage_getImageDescription (AccessibleImage *obj);
448 AccessibleImage_getImageSize (AccessibleImage *obj,
453 AccessibleImage_getImagePosition (AccessibleImage *obj,
456 AccessibleCoordType ctype);
459 AccessibleImage_getImageExtents (AccessibleImage *obj,
464 AccessibleCoordType ctype);
467 * AccessibleRelation function prototypes
471 void AccessibleRelation_ref (AccessibleRelation *obj);
472 void AccessibleRelation_unref (AccessibleRelation *obj);
474 AccessibleRelationType
475 AccessibleRelation_getRelationType (AccessibleRelation *obj);
478 AccessibleRelation_getNTargets (AccessibleRelation *obj);
481 AccessibleRelation_getTarget (AccessibleRelation *obj, int i);
486 * AccessibleSelection function prototypes
490 void AccessibleSelection_ref (AccessibleSelection *obj);
491 void AccessibleSelection_unref (AccessibleSelection *obj);
494 AccessibleSelection_getNSelectedChildren (AccessibleSelection *obj);
497 AccessibleSelection_getSelectedChild (AccessibleSelection *obj,
498 long int selectedChildIndex);
501 AccessibleSelection_selectChild (AccessibleSelection *obj,
502 long int childIndex);
505 AccessibleSelection_deselectSelectedChild (AccessibleSelection *obj,
506 long int selectedChildIndex);
509 AccessibleSelection_isChildSelected (AccessibleSelection *obj,
510 long int childIndex);
513 AccessibleSelection_selectAll (AccessibleSelection *obj);
516 AccessibleSelection_clearSelection (AccessibleSelection *obj);
521 * AccessibleStateSet function prototypes
525 void AccessibleStateSet_ref (AccessibleStateSet *obj);
526 void AccessibleStateSet_unref (AccessibleStateSet *obj);
529 AccessibleStateSet_contains (AccessibleStateSet *obj,
530 AccessibleState state);
533 AccessibleStateSet_add (AccessibleStateSet *obj,
534 AccessibleState state);
537 AccessibleStateSet_remove (AccessibleStateSet *obj,
538 AccessibleState state);
541 AccessibleStateSet_equals (AccessibleStateSet *obj,
542 AccessibleStateSet *obj2);
545 AccessibleStateSet_compare (AccessibleStateSet *obj,
546 AccessibleStateSet *obj2);
549 AccessibleStateSet_isEmpty (AccessibleStateSet *obj);
552 AccessibleStreamableContent_ref (AccessibleStreamableContent *obj);
554 AccessibleStreamableContent_unref (AccessibleStreamableContent *obj);
556 AccessibleStreamableContent_getContentTypes (AccessibleStreamableContent *obj);
558 AccessibleStreamableContent_open (AccessibleStreamableContent *obj,
559 const char *content_type);
561 AccessibleStreamableContent_seek (AccessibleStreamableContent *obj,
563 unsigned int seek_type);
565 AccessibleStreamableContent_read (AccessibleStreamableContent *obj,
568 unsigned int read_type);
571 * AccessibleTable function prototypes
575 void AccessibleTable_ref (AccessibleTable *obj);
576 void AccessibleTable_unref (AccessibleTable *obj);
579 AccessibleTable_getCaption (AccessibleTable *obj);
582 AccessibleTable_getSummary (AccessibleTable *obj);
585 AccessibleTable_getNRows (AccessibleTable *obj);
588 AccessibleTable_getNColumns (AccessibleTable *obj);
591 AccessibleTable_getAccessibleAt (AccessibleTable *obj,
596 AccessibleTable_getIndexAt (AccessibleTable *obj,
601 AccessibleTable_getRowAtIndex (AccessibleTable *obj,
605 AccessibleTable_getColumnAtIndex (AccessibleTable *obj,
609 AccessibleTable_getRowDescription (AccessibleTable *obj,
613 AccessibleTable_getColumnDescription (AccessibleTable *obj,
617 AccessibleTable_getRowExtentAt (AccessibleTable *obj,
622 AccessibleTable_getColumnExtentAt (AccessibleTable *obj,
627 AccessibleTable_getRowHeader (AccessibleTable *obj,
631 AccessibleTable_getColumnHeader (AccessibleTable *obj,
635 AccessibleTable_getNSelectedRows (AccessibleTable *obj);
638 AccessibleTable_getSelectedRows (AccessibleTable *obj,
639 long int **selectedRows);
642 AccessibleTable_getNSelectedColumns (AccessibleTable *obj);
645 AccessibleTable_getSelectedColumns (AccessibleTable *obj,
646 long int **selectedColumns);
649 AccessibleTable_isRowSelected (AccessibleTable *obj,
653 AccessibleTable_isColumnSelected (AccessibleTable *obj,
657 AccessibleTable_isSelected (AccessibleTable *obj,
663 * AccessibleText function prototypes
667 void AccessibleText_ref (AccessibleText *obj);
668 void AccessibleText_unref (AccessibleText *obj);
671 AccessibleText_getCharacterCount (AccessibleText *obj);
674 AccessibleText_getText (AccessibleText *obj,
675 long int startOffset,
679 AccessibleText_getCaretOffset (AccessibleText *obj);
682 AccessibleText_getAttributes (AccessibleText *obj,
684 long int *startOffset,
685 long int *endOffset);
689 AccessibleText_setCaretOffset (AccessibleText *obj,
693 AccessibleText_getTextBeforeOffset (AccessibleText *obj,
695 AccessibleTextBoundaryType type,
696 long int *startOffset,
697 long int *endOffset);
700 AccessibleText_getTextAtOffset (AccessibleText *obj,
702 AccessibleTextBoundaryType type,
703 long int *startOffset,
704 long int *endOffset);
707 AccessibleText_getTextAfterOffset (AccessibleText *obj,
709 AccessibleTextBoundaryType type,
710 long int *startOffset,
711 long int *endOffset);
714 AccessibleText_getCharacterAtOffset (AccessibleText *obj,
718 AccessibleText_getCharacterExtents (AccessibleText *obj,
724 AccessibleCoordType type);
727 AccessibleText_getOffsetAtPoint (AccessibleText *obj,
730 AccessibleCoordType type);
733 AccessibleText_getNSelections (AccessibleText *obj);
736 AccessibleText_getSelection (AccessibleText *obj,
737 long int selectionNum,
738 long int *startOffset,
739 long int *endOffset);
743 AccessibleText_addSelection (AccessibleText *obj,
744 long int startOffset,
748 AccessibleText_removeSelection (AccessibleText *obj,
749 long int selectionNum);
752 AccessibleText_setSelection (AccessibleText *obj,
753 long int selectionNum,
754 long int startOffset,
757 /* AccessibleValue Function Prototypes: */
759 void AccessibleValue_ref (AccessibleValue *obj);
760 void AccessibleValue_unref (AccessibleValue *obj);
761 double AccessibleValue_getMinimumValue (AccessibleValue *obj);
762 double AccessibleValue_getCurrentValue (AccessibleValue *obj);
763 double AccessibleValue_getMaximumValue (AccessibleValue *obj);
764 SPIBoolean AccessibleValue_setCurrentValue (AccessibleValue *obj,
768 void SPI_freeString (char *s);