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_LAST_DEFINED: Used to determine the last valid value in the enum,
116 * should not be encountered.
120 SPI_LAYER_BACKGROUND,
126 SPI_LAYER_LAST_DEFINED
127 } AccessibleComponentLayer;
136 * Structure containing identifying information about a set of keycode or
139 typedef struct _AccessibleKeySet
141 unsigned long *keysyms;
142 unsigned short *keycodes;
148 * SPI_KEYSET_ALL_KEYS:
149 * @SPI_KEYSET_ALL_KEYS: A special value for an AccessibleKeySet type, which tacitly
150 * includes all keycodes and keyvals for the specified modifier set.
152 #define SPI_KEYSET_ALL_KEYS NULL
154 typedef unsigned long AccessibleKeyMaskType;
157 /* Basic SPI initialization and event loop function prototypes */
160 void SPI_event_main (void);
161 void SPI_event_quit (void);
162 SPIBoolean SPI_eventIsReady (void);
163 AccessibleEvent *SPI_nextEvent (SPIBoolean waitForEvent);
166 /* Event Listener creation and support. */
168 void SPI_freeAccessibleKeySet (
169 AccessibleKeySet *keyset);
170 AccessibleKeySet * SPI_createAccessibleKeySet (
174 const char **keystrings);
175 AccessibleEventListener * SPI_createAccessibleEventListener (
176 AccessibleEventListenerCB callback,
178 SPIBoolean AccessibleEventListener_addCallback (
179 AccessibleEventListener *listener,
180 AccessibleEventListenerCB callback,
182 SPIBoolean AccessibleEventListener_removeCallback (
183 AccessibleEventListener *listener,
184 AccessibleEventListenerCB callback);
185 void AccessibleEventListener_unref (
186 AccessibleEventListener *listener);
188 /* Keystroke Listener creation and support. */
190 AccessibleKeystrokeListener * SPI_createAccessibleKeystrokeListener (
191 AccessibleKeystrokeListenerCB callback,
193 SPIBoolean AccessibleKeystrokeListener_addCallback (
194 AccessibleKeystrokeListener *listener,
195 AccessibleKeystrokeListenerCB callback,
197 SPIBoolean AccessibleKeystrokeListener_removeCallback (
198 AccessibleKeystrokeListener *listener,
199 AccessibleKeystrokeListenerCB callback);
200 void AccessibleKeystrokeListener_unref (
201 AccessibleKeystrokeListener *listener);
203 /* Global functions serviced by the registry */
205 SPIBoolean SPI_registerGlobalEventListener (
206 AccessibleEventListener *listener,
207 const char *eventType);
208 SPIBoolean SPI_deregisterGlobalEventListener (
209 AccessibleEventListener *listener,
210 const char *eventType);
211 SPIBoolean SPI_deregisterGlobalEventListenerAll (
212 AccessibleEventListener *listener);
213 SPIBoolean SPI_registerAccessibleKeystrokeListener (
214 AccessibleKeystrokeListener *listener,
215 AccessibleKeySet *keys,
216 AccessibleKeyMaskType modmask,
217 AccessibleKeyEventMask eventmask,
218 AccessibleKeyListenerSyncType sync_type);
219 SPIBoolean SPI_deregisterAccessibleKeystrokeListener (
220 AccessibleKeystrokeListener *listener,
221 AccessibleKeyMaskType modmask);
223 int SPI_getDesktopCount (void);
224 Accessible *SPI_getDesktop (int i);
225 int SPI_getDesktopList (Accessible ***desktop_list);
226 void SPI_freeDesktopList (Accessible **desktop_list);
228 SPIBoolean SPI_generateKeyboardEvent (long int keyval,
230 AccessibleKeySynthType synth_type);
232 SPIBoolean SPI_generateMouseEvent (long int x, long int y, char *name);
234 /* Accessible function prototypes */
236 void Accessible_ref (Accessible *obj);
237 void Accessible_unref (Accessible *obj);
238 char * Accessible_getName (Accessible *obj);
239 char * Accessible_getDescription (Accessible *obj);
240 Accessible * Accessible_getParent (Accessible *obj);
241 long Accessible_getChildCount (Accessible *obj);
242 Accessible * Accessible_getChildAtIndex (Accessible *obj,
243 long int childIndex);
244 long Accessible_getIndexInParent (Accessible *obj);
245 AccessibleRelation **Accessible_getRelationSet (Accessible *obj);
246 AccessibleRole Accessible_getRole (Accessible *obj);
247 char * Accessible_getRoleName (Accessible *obj);
248 AccessibleStateSet * Accessible_getStateSet (Accessible *obj);
250 /* Interface query methods */
252 SPIBoolean Accessible_isAction (Accessible *obj);
253 SPIBoolean Accessible_isApplication (Accessible *obj);
254 SPIBoolean Accessible_isComponent (Accessible *obj);
255 SPIBoolean Accessible_isEditableText (Accessible *obj);
256 SPIBoolean Accessible_isHypertext (Accessible *obj);
257 SPIBoolean Accessible_isImage (Accessible *obj);
258 SPIBoolean Accessible_isSelection (Accessible *obj);
259 SPIBoolean Accessible_isStreamableContent (Accessible *obj);
260 SPIBoolean Accessible_isTable (Accessible *obj);
261 SPIBoolean Accessible_isText (Accessible *obj);
262 SPIBoolean Accessible_isValue (Accessible *obj);
264 AccessibleAction * Accessible_getAction (Accessible *obj);
265 AccessibleApplication * Accessible_getApplication (Accessible *obj);
266 AccessibleComponent * Accessible_getComponent (Accessible *obj);
267 AccessibleEditableText * Accessible_getEditableText (Accessible *obj);
268 AccessibleHypertext * Accessible_getHypertext (Accessible *obj);
269 AccessibleImage * Accessible_getImage (Accessible *obj);
270 AccessibleSelection * Accessible_getSelection (Accessible *obj);
271 AccessibleStreamableContent * Accessible_getStreamableContent (Accessible *obj);
272 AccessibleTable * Accessible_getTable (Accessible *obj);
273 AccessibleText * Accessible_getText (Accessible *obj);
274 AccessibleValue * Accessible_getValue (Accessible *obj);
275 AccessibleUnknown * Accessible_queryInterface (Accessible *obj,
276 const char *interface_name);
278 /* AccessibleAction function prototypes */
280 void AccessibleAction_ref (AccessibleAction *obj);
281 void AccessibleAction_unref (AccessibleAction *obj);
282 long AccessibleAction_getNActions (AccessibleAction *obj);
283 char *AccessibleAction_getName (AccessibleAction *obj,
285 char *AccessibleAction_getDescription (AccessibleAction *obj,
287 SPIBoolean AccessibleAction_doAction (AccessibleAction *obj,
289 char *AccessibleAction_getKeyBinding (AccessibleAction *obj,
292 /* AccessibleApplication function prototypes */
294 void AccessibleApplication_ref (AccessibleApplication *obj);
295 void AccessibleApplication_unref (AccessibleApplication *obj);
296 char *AccessibleApplication_getToolkitName (AccessibleApplication *obj);
297 char *AccessibleApplication_getVersion (AccessibleApplication *obj);
298 long AccessibleApplication_getID (AccessibleApplication *obj);
299 SPIBoolean AccessibleApplication_pause (AccessibleApplication *obj);
300 SPIBoolean AccessibleApplication_resume (AccessibleApplication *obj);
302 /* AccessibleComponent function prototypes */
304 void AccessibleComponent_ref (AccessibleComponent *obj);
305 void AccessibleComponent_unref (AccessibleComponent *obj);
306 SPIBoolean AccessibleComponent_contains (AccessibleComponent *obj,
309 AccessibleCoordType ctype);
310 Accessible *AccessibleComponent_getAccessibleAtPoint (
311 AccessibleComponent *obj,
314 AccessibleCoordType ctype);
315 void AccessibleComponent_getExtents (AccessibleComponent *obj,
320 AccessibleCoordType ctype);
321 void AccessibleComponent_getPosition (AccessibleComponent *obj,
324 AccessibleCoordType ctype);
325 void AccessibleComponent_getSize (AccessibleComponent *obj,
328 AccessibleComponentLayer
329 AccessibleComponent_getLayer (AccessibleComponent *obj);
330 SPIBoolean AccessibleComponent_grabFocus (AccessibleComponent *obj);
331 short AccessibleComponent_getMDIZOrder(AccessibleComponent *obj);
333 /* AccessibleEditableText function prototypes */
336 AccessibleEditableText_ref (AccessibleEditableText *obj);
339 AccessibleEditableText_unref (AccessibleEditableText *obj);
342 AccessibleEditableText_setAttributes (AccessibleEditableText *obj,
343 const char *attributes,
344 long int startOffset,
348 AccessibleEditableText_setTextContents (AccessibleEditableText *obj,
349 const char *newContents);
352 AccessibleEditableText_insertText (AccessibleEditableText *obj,
358 AccessibleEditableText_copyText (AccessibleText *obj,
363 AccessibleEditableText_cutText (AccessibleEditableText *obj,
368 AccessibleEditableText_deleteText (AccessibleEditableText *obj,
373 AccessibleEditableText_pasteText (AccessibleEditableText *obj,
378 * AccessibleHyperlink function prototypes
382 AccessibleHyperlink_ref (AccessibleHyperlink *obj);
384 AccessibleHyperlink_unref (AccessibleHyperlink *obj);
387 AccessibleHyperlink_getNAnchors (AccessibleHyperlink *obj);
390 AccessibleHyperlink_getURI (AccessibleHyperlink *obj,
394 AccessibleHyperlink_getObject (AccessibleHyperlink *obj,
398 AccessibleHyperlink_getIndexRange (AccessibleHyperlink *obj,
399 long int *startIndex,
403 AccessibleHyperlink_isValid (AccessibleHyperlink *obj);
407 * AccessibleHypertext function prototypes
412 AccessibleHypertext_ref (AccessibleHypertext *obj);
415 AccessibleHypertext_unref (AccessibleHypertext *obj);
418 AccessibleHypertext_getNLinks (AccessibleHypertext *obj);
420 AccessibleHyperlink *
421 AccessibleHypertext_getLink (AccessibleHypertext *obj,
425 AccessibleHypertext_getLinkIndex (AccessibleHypertext *obj,
426 long int characterOffset);
430 * AccessibleImage function prototypes
435 AccessibleImage_ref (AccessibleImage *obj);
438 AccessibleImage_unref (AccessibleImage *obj);
441 AccessibleImage_getImageDescription (AccessibleImage *obj);
444 AccessibleImage_getImageSize (AccessibleImage *obj,
449 AccessibleImage_getImagePosition (AccessibleImage *obj,
452 AccessibleCoordType ctype);
455 AccessibleImage_getImageExtents (AccessibleImage *obj,
460 AccessibleCoordType ctype);
463 * AccessibleRelation function prototypes
467 void AccessibleRelation_ref (AccessibleRelation *obj);
468 void AccessibleRelation_unref (AccessibleRelation *obj);
470 AccessibleRelationType
471 AccessibleRelation_getRelationType (AccessibleRelation *obj);
474 AccessibleRelation_getNTargets (AccessibleRelation *obj);
477 AccessibleRelation_getTarget (AccessibleRelation *obj, int i);
482 * AccessibleSelection function prototypes
486 void AccessibleSelection_ref (AccessibleSelection *obj);
487 void AccessibleSelection_unref (AccessibleSelection *obj);
490 AccessibleSelection_getNSelectedChildren (AccessibleSelection *obj);
493 AccessibleSelection_getSelectedChild (AccessibleSelection *obj,
494 long int selectedChildIndex);
497 AccessibleSelection_selectChild (AccessibleSelection *obj,
498 long int childIndex);
501 AccessibleSelection_deselectSelectedChild (AccessibleSelection *obj,
502 long int selectedChildIndex);
505 AccessibleSelection_isChildSelected (AccessibleSelection *obj,
506 long int childIndex);
509 AccessibleSelection_selectAll (AccessibleSelection *obj);
512 AccessibleSelection_clearSelection (AccessibleSelection *obj);
517 * AccessibleStateSet function prototypes
521 void AccessibleStateSet_ref (AccessibleStateSet *obj);
522 void AccessibleStateSet_unref (AccessibleStateSet *obj);
525 AccessibleStateSet_contains (AccessibleStateSet *obj,
526 AccessibleState state);
529 AccessibleStateSet_add (AccessibleStateSet *obj,
530 AccessibleState state);
533 AccessibleStateSet_remove (AccessibleStateSet *obj,
534 AccessibleState state);
537 AccessibleStateSet_equals (AccessibleStateSet *obj,
538 AccessibleStateSet *obj2);
541 AccessibleStateSet_compare (AccessibleStateSet *obj,
542 AccessibleStateSet *obj2);
545 AccessibleStateSet_isEmpty (AccessibleStateSet *obj);
548 AccessibleStreamableContent_ref (AccessibleStreamableContent *obj);
550 AccessibleStreamableContent_unref (AccessibleStreamableContent *obj);
552 AccessibleStreamableContent_getContentTypes (AccessibleStreamableContent *obj);
554 AccessibleStreamableContent_open (AccessibleStreamableContent *obj,
555 const char *content_type);
557 AccessibleStreamableContent_seek (AccessibleStreamableContent *obj,
559 unsigned int seek_type);
561 AccessibleStreamableContent_read (AccessibleStreamableContent *obj,
564 unsigned int read_type);
567 * AccessibleTable function prototypes
571 void AccessibleTable_ref (AccessibleTable *obj);
572 void AccessibleTable_unref (AccessibleTable *obj);
575 AccessibleTable_getCaption (AccessibleTable *obj);
578 AccessibleTable_getSummary (AccessibleTable *obj);
581 AccessibleTable_getNRows (AccessibleTable *obj);
584 AccessibleTable_getNColumns (AccessibleTable *obj);
587 AccessibleTable_getAccessibleAt (AccessibleTable *obj,
592 AccessibleTable_getIndexAt (AccessibleTable *obj,
597 AccessibleTable_getRowAtIndex (AccessibleTable *obj,
601 AccessibleTable_getColumnAtIndex (AccessibleTable *obj,
605 AccessibleTable_getRowDescription (AccessibleTable *obj,
609 AccessibleTable_getColumnDescription (AccessibleTable *obj,
613 AccessibleTable_getRowExtentAt (AccessibleTable *obj,
618 AccessibleTable_getColumnExtentAt (AccessibleTable *obj,
623 AccessibleTable_getRowHeader (AccessibleTable *obj,
627 AccessibleTable_getColumnHeader (AccessibleTable *obj,
631 AccessibleTable_getNSelectedRows (AccessibleTable *obj);
634 AccessibleTable_getSelectedRows (AccessibleTable *obj,
635 long int **selectedRows);
638 AccessibleTable_getNSelectedColumns (AccessibleTable *obj);
641 AccessibleTable_getSelectedColumns (AccessibleTable *obj,
642 long int **selectedColumns);
645 AccessibleTable_isRowSelected (AccessibleTable *obj,
649 AccessibleTable_isColumnSelected (AccessibleTable *obj,
653 AccessibleTable_isSelected (AccessibleTable *obj,
659 * AccessibleText function prototypes
663 void AccessibleText_ref (AccessibleText *obj);
664 void AccessibleText_unref (AccessibleText *obj);
667 AccessibleText_getCharacterCount (AccessibleText *obj);
670 AccessibleText_getText (AccessibleText *obj,
671 long int startOffset,
675 AccessibleText_getCaretOffset (AccessibleText *obj);
678 AccessibleText_getAttributes (AccessibleText *obj,
680 long int *startOffset,
681 long int *endOffset);
685 AccessibleText_setCaretOffset (AccessibleText *obj,
689 AccessibleText_getTextBeforeOffset (AccessibleText *obj,
691 AccessibleTextBoundaryType type,
692 long int *startOffset,
693 long int *endOffset);
696 AccessibleText_getTextAtOffset (AccessibleText *obj,
698 AccessibleTextBoundaryType type,
699 long int *startOffset,
700 long int *endOffset);
703 AccessibleText_getTextAfterOffset (AccessibleText *obj,
705 AccessibleTextBoundaryType type,
706 long int *startOffset,
707 long int *endOffset);
710 AccessibleText_getCharacterAtOffset (AccessibleText *obj,
714 AccessibleText_getCharacterExtents (AccessibleText *obj,
720 AccessibleCoordType type);
723 AccessibleText_getOffsetAtPoint (AccessibleText *obj,
726 AccessibleCoordType type);
729 AccessibleText_getNSelections (AccessibleText *obj);
732 AccessibleText_getSelection (AccessibleText *obj,
733 long int selectionNum,
734 long int *startOffset,
735 long int *endOffset);
739 AccessibleText_addSelection (AccessibleText *obj,
740 long int startOffset,
744 AccessibleText_removeSelection (AccessibleText *obj,
745 long int selectionNum);
748 AccessibleText_setSelection (AccessibleText *obj,
749 long int selectionNum,
750 long int startOffset,
753 /* AccessibleValue Function Prototypes: */
755 void AccessibleValue_ref (AccessibleValue *obj);
756 void AccessibleValue_unref (AccessibleValue *obj);
757 double AccessibleValue_getMinimumValue (AccessibleValue *obj);
758 double AccessibleValue_getCurrentValue (AccessibleValue *obj);
759 double AccessibleValue_getMaximumValue (AccessibleValue *obj);
760 SPIBoolean AccessibleValue_setCurrentValue (AccessibleValue *obj,
764 void SPI_freeString (char *s);