2 * AT-SPI - Assistive Technology Service Provider Interface
3 * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
5 * Copyright 2001 Sun Microsystems Inc.
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Library General Public License for more details.
17 * You should have received a copy of the GNU Library General Public
18 * License along with this library; if not, write to the
19 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 * Boston, MA 02111-1307, USA.
26 #include <cspi/spi-impl.h>
28 * Definitions for AccessibleRole, AccessibleState,
29 * AccessibleEvent, and event listeners.
31 #include <cspi/spi-roletypes.h>
32 #include <cspi/spi-statetypes.h>
33 #include <cspi/spi-listener.h>
36 * Auxiliary typedefs and mask definitions
38 #include <libspi/keymasks.h>
45 * Enumerated type for text boundary types
49 SPI_TEXT_BOUNDARY_CHAR,
50 SPI_TEXT_BOUNDARY_CURSOR_POS,
51 SPI_TEXT_BOUNDARY_WORD_START,
52 SPI_TEXT_BOUNDARY_WORD_END,
53 SPI_TEXT_BOUNDARY_SENTENCE_START,
54 SPI_TEXT_BOUNDARY_SENTENCE_END,
55 SPI_TEXT_BOUNDARY_LINE_START,
56 SPI_TEXT_BOUNDARY_LINE_END,
57 SPI_TEXT_BOUNDARY_ATTRIBUTE_RANGE
58 } AccessibleTextBoundaryType;
62 * Enumerated type for relation types
69 SPI_RELATION_LABEL_FOR,
70 SPI_RELATION_LABELED_BY,
71 SPI_RELATION_CONTROLLER_FOR,
72 SPI_RELATION_CONTROLLED_BY,
73 SPI_RELATION_MEMBER_OF,
74 SPI_RELATION_NODE_CHILD_OF,
75 SPI_RELATION_EXTENDED,
76 SPI_RELATION_LAST_DEFINED
77 } AccessibleRelationType;
80 /* don't change the order of these ! */
82 SPI_COORD_TYPE_SCREEN,
84 } AccessibleCoordType;
92 } AccessibleKeySynthType;
95 SPI_KEYLISTENER_NOSYNC = 0,
96 SPI_KEYLISTENER_SYNCHRONOUS = 1,
97 SPI_KEYLISTENER_CANCONSUME = 2,
98 SPI_KEYLISTENER_ALL_WINDOWS = 4
99 } AccessibleKeyListenerSyncType;
101 typedef unsigned long AccessibleKeyEventMask;
104 * AccessibleComponentLayer:
105 * @SPI_LAYER_INVALID: The layer cannot be determined or is somehow undefined.
106 * @SPI_LAYER_BACKGROUND: Component belongs to the destop background.
107 * @SPI_LAYER_CANVAS: Component is a canvas backdrop or drawing area.
108 * @SPI_LAYER_WIDGET: Component is a 'normal' widget.
109 * @SPI_LAYER_MDI: Component is drawn in the MDI layer and may have valid
110 * Z-information relative to other MDI-layer components.
111 * @SPI_LAYER_POPUP: Component is in the popup layer, above other widgets and
113 * @SPI_LAYER_OVERLAY: Component is in the overlay plane - this value is reserved
115 * @SPI_LAYER_WINDOW: Component is in the window layer and have valid Z-information
116 * relative to other window-layer components.
117 * @SPI_LAYER_LAST_DEFINED: Used to determine the last valid value in the enum,
118 * should not be encountered.
122 SPI_LAYER_BACKGROUND,
129 SPI_LAYER_LAST_DEFINED
130 } AccessibleComponentLayer;
139 * Structure containing identifying information about a set of keycode or
142 typedef struct _AccessibleKeySet
144 unsigned long *keysyms;
145 unsigned short *keycodes;
151 * SPI_KEYSET_ALL_KEYS:
152 * @SPI_KEYSET_ALL_KEYS: A special value for an AccessibleKeySet type, which tacitly
153 * includes all keycodes and keyvals for the specified modifier set.
155 #define SPI_KEYSET_ALL_KEYS NULL
157 typedef unsigned long AccessibleKeyMaskType;
160 /* Basic SPI initialization and event loop function prototypes */
163 void SPI_event_main (void);
164 void SPI_event_quit (void);
165 SPIBoolean SPI_eventIsReady (void);
166 AccessibleEvent *SPI_nextEvent (SPIBoolean waitForEvent);
169 /* Event Listener creation and support. */
171 void SPI_freeAccessibleKeySet (
172 AccessibleKeySet *keyset);
173 AccessibleKeySet * SPI_createAccessibleKeySet (
177 const char **keystrings);
178 AccessibleEventListener * SPI_createAccessibleEventListener (
179 AccessibleEventListenerCB callback,
181 SPIBoolean AccessibleEventListener_addCallback (
182 AccessibleEventListener *listener,
183 AccessibleEventListenerCB callback,
185 SPIBoolean AccessibleEventListener_removeCallback (
186 AccessibleEventListener *listener,
187 AccessibleEventListenerCB callback);
188 void AccessibleEventListener_unref (
189 AccessibleEventListener *listener);
191 /* Keystroke Listener creation and support. */
193 AccessibleKeystrokeListener * SPI_createAccessibleKeystrokeListener (
194 AccessibleKeystrokeListenerCB callback,
196 SPIBoolean AccessibleKeystrokeListener_addCallback (
197 AccessibleKeystrokeListener *listener,
198 AccessibleKeystrokeListenerCB callback,
200 SPIBoolean AccessibleKeystrokeListener_removeCallback (
201 AccessibleKeystrokeListener *listener,
202 AccessibleKeystrokeListenerCB callback);
203 void AccessibleKeystrokeListener_unref (
204 AccessibleKeystrokeListener *listener);
206 /* Global functions serviced by the registry */
208 SPIBoolean SPI_registerGlobalEventListener (
209 AccessibleEventListener *listener,
210 const char *eventType);
211 SPIBoolean SPI_deregisterGlobalEventListener (
212 AccessibleEventListener *listener,
213 const char *eventType);
214 SPIBoolean SPI_deregisterGlobalEventListenerAll (
215 AccessibleEventListener *listener);
216 SPIBoolean SPI_registerAccessibleKeystrokeListener (
217 AccessibleKeystrokeListener *listener,
218 AccessibleKeySet *keys,
219 AccessibleKeyMaskType modmask,
220 AccessibleKeyEventMask eventmask,
221 AccessibleKeyListenerSyncType sync_type);
222 SPIBoolean SPI_deregisterAccessibleKeystrokeListener (
223 AccessibleKeystrokeListener *listener,
224 AccessibleKeyMaskType modmask);
226 int SPI_getDesktopCount (void);
227 Accessible *SPI_getDesktop (int i);
228 int SPI_getDesktopList (Accessible ***desktop_list);
229 void SPI_freeDesktopList (Accessible **desktop_list);
231 SPIBoolean SPI_generateKeyboardEvent (long int keyval,
233 AccessibleKeySynthType synth_type);
235 SPIBoolean SPI_generateMouseEvent (long int x, long int y, char *name);
237 /* Accessible function prototypes */
239 void Accessible_ref (Accessible *obj);
240 void Accessible_unref (Accessible *obj);
241 char * Accessible_getName (Accessible *obj);
242 char * Accessible_getDescription (Accessible *obj);
243 Accessible * Accessible_getParent (Accessible *obj);
244 long Accessible_getChildCount (Accessible *obj);
245 Accessible * Accessible_getChildAtIndex (Accessible *obj,
246 long int childIndex);
247 long Accessible_getIndexInParent (Accessible *obj);
248 AccessibleRelation **Accessible_getRelationSet (Accessible *obj);
249 AccessibleRole Accessible_getRole (Accessible *obj);
250 char * Accessible_getRoleName (Accessible *obj);
251 AccessibleStateSet * Accessible_getStateSet (Accessible *obj);
253 /* Interface query methods */
255 SPIBoolean Accessible_isAction (Accessible *obj);
256 SPIBoolean Accessible_isApplication (Accessible *obj);
257 SPIBoolean Accessible_isComponent (Accessible *obj);
258 SPIBoolean Accessible_isEditableText (Accessible *obj);
259 SPIBoolean Accessible_isHypertext (Accessible *obj);
260 SPIBoolean Accessible_isImage (Accessible *obj);
261 SPIBoolean Accessible_isSelection (Accessible *obj);
262 SPIBoolean Accessible_isStreamableContent (Accessible *obj);
263 SPIBoolean Accessible_isTable (Accessible *obj);
264 SPIBoolean Accessible_isText (Accessible *obj);
265 SPIBoolean Accessible_isValue (Accessible *obj);
267 AccessibleAction * Accessible_getAction (Accessible *obj);
268 AccessibleApplication * Accessible_getApplication (Accessible *obj);
269 AccessibleComponent * Accessible_getComponent (Accessible *obj);
270 AccessibleEditableText * Accessible_getEditableText (Accessible *obj);
271 AccessibleHypertext * Accessible_getHypertext (Accessible *obj);
272 AccessibleImage * Accessible_getImage (Accessible *obj);
273 AccessibleSelection * Accessible_getSelection (Accessible *obj);
274 AccessibleStreamableContent * Accessible_getStreamableContent (Accessible *obj);
275 AccessibleTable * Accessible_getTable (Accessible *obj);
276 AccessibleText * Accessible_getText (Accessible *obj);
277 AccessibleValue * Accessible_getValue (Accessible *obj);
278 AccessibleUnknown * Accessible_queryInterface (Accessible *obj,
279 const char *interface_name);
281 /* AccessibleAction function prototypes */
283 void AccessibleAction_ref (AccessibleAction *obj);
284 void AccessibleAction_unref (AccessibleAction *obj);
285 long AccessibleAction_getNActions (AccessibleAction *obj);
286 char *AccessibleAction_getName (AccessibleAction *obj,
288 char *AccessibleAction_getDescription (AccessibleAction *obj,
290 SPIBoolean AccessibleAction_doAction (AccessibleAction *obj,
292 char *AccessibleAction_getKeyBinding (AccessibleAction *obj,
295 /* AccessibleApplication function prototypes */
297 void AccessibleApplication_ref (AccessibleApplication *obj);
298 void AccessibleApplication_unref (AccessibleApplication *obj);
299 char *AccessibleApplication_getToolkitName (AccessibleApplication *obj);
300 char *AccessibleApplication_getVersion (AccessibleApplication *obj);
301 long AccessibleApplication_getID (AccessibleApplication *obj);
302 SPIBoolean AccessibleApplication_pause (AccessibleApplication *obj);
303 SPIBoolean AccessibleApplication_resume (AccessibleApplication *obj);
305 /* AccessibleComponent function prototypes */
307 void AccessibleComponent_ref (AccessibleComponent *obj);
308 void AccessibleComponent_unref (AccessibleComponent *obj);
309 SPIBoolean AccessibleComponent_contains (AccessibleComponent *obj,
312 AccessibleCoordType ctype);
313 Accessible *AccessibleComponent_getAccessibleAtPoint (
314 AccessibleComponent *obj,
317 AccessibleCoordType ctype);
318 void AccessibleComponent_getExtents (AccessibleComponent *obj,
323 AccessibleCoordType ctype);
324 void AccessibleComponent_getPosition (AccessibleComponent *obj,
327 AccessibleCoordType ctype);
328 void AccessibleComponent_getSize (AccessibleComponent *obj,
331 AccessibleComponentLayer
332 AccessibleComponent_getLayer (AccessibleComponent *obj);
333 SPIBoolean AccessibleComponent_grabFocus (AccessibleComponent *obj);
334 short AccessibleComponent_getMDIZOrder(AccessibleComponent *obj);
336 /* AccessibleEditableText function prototypes */
339 AccessibleEditableText_ref (AccessibleEditableText *obj);
342 AccessibleEditableText_unref (AccessibleEditableText *obj);
345 AccessibleEditableText_setAttributes (AccessibleEditableText *obj,
346 const char *attributes,
347 long int startOffset,
351 AccessibleEditableText_setTextContents (AccessibleEditableText *obj,
352 const char *newContents);
355 AccessibleEditableText_insertText (AccessibleEditableText *obj,
361 AccessibleEditableText_copyText (AccessibleText *obj,
366 AccessibleEditableText_cutText (AccessibleEditableText *obj,
371 AccessibleEditableText_deleteText (AccessibleEditableText *obj,
376 AccessibleEditableText_pasteText (AccessibleEditableText *obj,
381 * AccessibleHyperlink function prototypes
385 AccessibleHyperlink_ref (AccessibleHyperlink *obj);
387 AccessibleHyperlink_unref (AccessibleHyperlink *obj);
390 AccessibleHyperlink_getNAnchors (AccessibleHyperlink *obj);
393 AccessibleHyperlink_getURI (AccessibleHyperlink *obj,
397 AccessibleHyperlink_getObject (AccessibleHyperlink *obj,
401 AccessibleHyperlink_getIndexRange (AccessibleHyperlink *obj,
402 long int *startIndex,
406 AccessibleHyperlink_isValid (AccessibleHyperlink *obj);
410 * AccessibleHypertext function prototypes
415 AccessibleHypertext_ref (AccessibleHypertext *obj);
418 AccessibleHypertext_unref (AccessibleHypertext *obj);
421 AccessibleHypertext_getNLinks (AccessibleHypertext *obj);
423 AccessibleHyperlink *
424 AccessibleHypertext_getLink (AccessibleHypertext *obj,
428 AccessibleHypertext_getLinkIndex (AccessibleHypertext *obj,
429 long int characterOffset);
433 * AccessibleImage function prototypes
438 AccessibleImage_ref (AccessibleImage *obj);
441 AccessibleImage_unref (AccessibleImage *obj);
444 AccessibleImage_getImageDescription (AccessibleImage *obj);
447 AccessibleImage_getImageSize (AccessibleImage *obj,
452 AccessibleImage_getImagePosition (AccessibleImage *obj,
455 AccessibleCoordType ctype);
458 AccessibleImage_getImageExtents (AccessibleImage *obj,
463 AccessibleCoordType ctype);
466 * AccessibleRelation function prototypes
470 void AccessibleRelation_ref (AccessibleRelation *obj);
471 void AccessibleRelation_unref (AccessibleRelation *obj);
473 AccessibleRelationType
474 AccessibleRelation_getRelationType (AccessibleRelation *obj);
477 AccessibleRelation_getNTargets (AccessibleRelation *obj);
480 AccessibleRelation_getTarget (AccessibleRelation *obj, int i);
485 * AccessibleSelection function prototypes
489 void AccessibleSelection_ref (AccessibleSelection *obj);
490 void AccessibleSelection_unref (AccessibleSelection *obj);
493 AccessibleSelection_getNSelectedChildren (AccessibleSelection *obj);
496 AccessibleSelection_getSelectedChild (AccessibleSelection *obj,
497 long int selectedChildIndex);
500 AccessibleSelection_selectChild (AccessibleSelection *obj,
501 long int childIndex);
504 AccessibleSelection_deselectSelectedChild (AccessibleSelection *obj,
505 long int selectedChildIndex);
508 AccessibleSelection_isChildSelected (AccessibleSelection *obj,
509 long int childIndex);
512 AccessibleSelection_selectAll (AccessibleSelection *obj);
515 AccessibleSelection_clearSelection (AccessibleSelection *obj);
520 * AccessibleStateSet function prototypes
524 void AccessibleStateSet_ref (AccessibleStateSet *obj);
525 void AccessibleStateSet_unref (AccessibleStateSet *obj);
528 AccessibleStateSet_contains (AccessibleStateSet *obj,
529 AccessibleState state);
532 AccessibleStateSet_add (AccessibleStateSet *obj,
533 AccessibleState state);
536 AccessibleStateSet_remove (AccessibleStateSet *obj,
537 AccessibleState state);
540 AccessibleStateSet_equals (AccessibleStateSet *obj,
541 AccessibleStateSet *obj2);
544 AccessibleStateSet_compare (AccessibleStateSet *obj,
545 AccessibleStateSet *obj2);
548 AccessibleStateSet_isEmpty (AccessibleStateSet *obj);
551 AccessibleStreamableContent_ref (AccessibleStreamableContent *obj);
553 AccessibleStreamableContent_unref (AccessibleStreamableContent *obj);
555 AccessibleStreamableContent_getContentTypes (AccessibleStreamableContent *obj);
557 AccessibleStreamableContent_open (AccessibleStreamableContent *obj,
558 const char *content_type);
560 AccessibleStreamableContent_seek (AccessibleStreamableContent *obj,
562 unsigned int seek_type);
564 AccessibleStreamableContent_read (AccessibleStreamableContent *obj,
567 unsigned int read_type);
570 * AccessibleTable function prototypes
574 void AccessibleTable_ref (AccessibleTable *obj);
575 void AccessibleTable_unref (AccessibleTable *obj);
578 AccessibleTable_getCaption (AccessibleTable *obj);
581 AccessibleTable_getSummary (AccessibleTable *obj);
584 AccessibleTable_getNRows (AccessibleTable *obj);
587 AccessibleTable_getNColumns (AccessibleTable *obj);
590 AccessibleTable_getAccessibleAt (AccessibleTable *obj,
595 AccessibleTable_getIndexAt (AccessibleTable *obj,
600 AccessibleTable_getRowAtIndex (AccessibleTable *obj,
604 AccessibleTable_getColumnAtIndex (AccessibleTable *obj,
608 AccessibleTable_getRowDescription (AccessibleTable *obj,
612 AccessibleTable_getColumnDescription (AccessibleTable *obj,
616 AccessibleTable_getRowExtentAt (AccessibleTable *obj,
621 AccessibleTable_getColumnExtentAt (AccessibleTable *obj,
626 AccessibleTable_getRowHeader (AccessibleTable *obj,
630 AccessibleTable_getColumnHeader (AccessibleTable *obj,
634 AccessibleTable_getNSelectedRows (AccessibleTable *obj);
637 AccessibleTable_getSelectedRows (AccessibleTable *obj,
638 long int **selectedRows);
641 AccessibleTable_getNSelectedColumns (AccessibleTable *obj);
644 AccessibleTable_getSelectedColumns (AccessibleTable *obj,
645 long int **selectedColumns);
648 AccessibleTable_isRowSelected (AccessibleTable *obj,
652 AccessibleTable_isColumnSelected (AccessibleTable *obj,
656 AccessibleTable_isSelected (AccessibleTable *obj,
662 * AccessibleText function prototypes
666 void AccessibleText_ref (AccessibleText *obj);
667 void AccessibleText_unref (AccessibleText *obj);
670 AccessibleText_getCharacterCount (AccessibleText *obj);
673 AccessibleText_getText (AccessibleText *obj,
674 long int startOffset,
678 AccessibleText_getCaretOffset (AccessibleText *obj);
681 AccessibleText_getAttributes (AccessibleText *obj,
683 long int *startOffset,
684 long int *endOffset);
688 AccessibleText_setCaretOffset (AccessibleText *obj,
692 AccessibleText_getTextBeforeOffset (AccessibleText *obj,
694 AccessibleTextBoundaryType type,
695 long int *startOffset,
696 long int *endOffset);
699 AccessibleText_getTextAtOffset (AccessibleText *obj,
701 AccessibleTextBoundaryType type,
702 long int *startOffset,
703 long int *endOffset);
706 AccessibleText_getTextAfterOffset (AccessibleText *obj,
708 AccessibleTextBoundaryType type,
709 long int *startOffset,
710 long int *endOffset);
713 AccessibleText_getCharacterAtOffset (AccessibleText *obj,
717 AccessibleText_getCharacterExtents (AccessibleText *obj,
723 AccessibleCoordType type);
726 AccessibleText_getOffsetAtPoint (AccessibleText *obj,
729 AccessibleCoordType type);
732 AccessibleText_getNSelections (AccessibleText *obj);
735 AccessibleText_getSelection (AccessibleText *obj,
736 long int selectionNum,
737 long int *startOffset,
738 long int *endOffset);
742 AccessibleText_addSelection (AccessibleText *obj,
743 long int startOffset,
747 AccessibleText_removeSelection (AccessibleText *obj,
748 long int selectionNum);
751 AccessibleText_setSelection (AccessibleText *obj,
752 long int selectionNum,
753 long int startOffset,
756 /* AccessibleValue Function Prototypes: */
758 void AccessibleValue_ref (AccessibleValue *obj);
759 void AccessibleValue_unref (AccessibleValue *obj);
760 double AccessibleValue_getMinimumValue (AccessibleValue *obj);
761 double AccessibleValue_getCurrentValue (AccessibleValue *obj);
762 double AccessibleValue_getMaximumValue (AccessibleValue *obj);
763 SPIBoolean AccessibleValue_setCurrentValue (AccessibleValue *obj,
767 void SPI_freeString (char *s);