1 /* 2 * AT-SPI - Assistive Technology Service Provider Interface 3 * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap) 4 * 5 * Copyright 2002 Ximian, Inc. 6 * 2002 Sun Microsystems Inc. 7 * 8 * 9 * This library is free software; you can redistribute it and/or 10 * modify it under the terms of the GNU Lesser General Public 11 * License as published by the Free Software Foundation; either 12 * version 2.1 of the License, or (at your option) any later version. 13 * 14 * This library is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17 * Lesser General Public License for more details. 18 * 19 * You should have received a copy of the GNU Lesser General Public 20 * License along with this library; if not, write to the 21 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 22 * Boston, MA 02110-1301, USA. 23 */ 24 25 #ifndef _ATSPI_TYPES_H_ 26 #define _ATSPI_TYPES_H_ 27 28 #include "glib-object.h" 29 30 #include "atspi-constants.h" 31 32 typedef struct _AtspiAccessible AtspiAccessible; 33 typedef struct _AtspiAction AtspiAction; 34 typedef struct _AtspiCollection AtspiCollection; 35 typedef struct _AtspiComponent AtspiComponent; 36 typedef struct _AtspiDocument AtspiDocument; 37 typedef struct _AtspiEditableText AtspiEditableText; 38 typedef struct _AtspiHyperlink AtspiHyperlink; 39 typedef struct _AtspiHypertext AtspiHypertext; 40 typedef struct _AtspiImage AtspiImage; 41 typedef struct _AtspiSelection AtspiSelection; 42 typedef struct _AtspiTable AtspiTable; 43 typedef struct _AtspiTableCell AtspiTableCell; 44 typedef struct _AtspiText AtspiText; 45 typedef struct _AtspiValue AtspiValue; 46 47 typedef guint AtspiControllerEventMask; 48 49 typedef guint AtspiKeyMaskType; 50 51 typedef guint AtspiKeyEventMask; 52 typedef guint AtspiDeviceEventMask; 53 54 // TODO: auto-generate the below structs 55 typedef struct _AtspiDeviceEvent AtspiDeviceEvent; 56 struct _AtspiDeviceEvent 57 { 58 AtspiEventType type; 59 guint id; 60 gushort hw_code; 61 gushort modifiers; 62 guint timestamp; 63 gchar * event_string; 64 gboolean is_text; 65 }; 66 67 typedef struct _AtspiEventListenerMode AtspiEventListenerMode; 68 struct _AtspiEventListenerMode 69 { 70 gboolean synchronous; 71 gboolean preemptive; 72 gboolean global; 73 }; 74 75 typedef struct _AtspiKeyDefinition AtspiKeyDefinition; 76 struct _AtspiKeyDefinition 77 { 78 gint keycode; 79 gint keysym; 80 gchar *keystring; 81 gint unused; 82 }; 83 84 typedef struct _AtspiEvent AtspiEvent; 85 struct _AtspiEvent 86 { 87 gchar *type; 88 AtspiAccessible *source; 89 gint detail1; 90 gint detail2; 91 GValue any_data; 92 AtspiAccessible *sender; 93 }; 94 95 /** 96 * ATSPI_TYPE_DEVICE_EVENT: 97 * 98 * The #GType for a boxed type holding a #AtspiDeviceEvent. 99 */ 100 #define ATSPI_TYPE_DEVICE_EVENT (atspi_device_event_get_type ()) 101 102 /** 103 * ATSPI_TYPE_EVENT: 104 * 105 * The #GType for a boxed type holding a #AtspiEvent. 106 */ 107 #define ATSPI_TYPE_EVENT (atspi_event_get_type ()) 108 109 typedef void AtspiKeystrokeListener; 110 111 /** 112 * AtspiKeySet: 113 * @keysyms: 114 * @keycodes: 115 * @len: 116 * 117 * Structure containing identifying information about a set of keycode or 118 * keysyms. 119 **/ 120 typedef struct _AtspiKeySet 121 { 122 guint *keysyms; 123 gushort *keycodes; 124 gchar **keystrings; 125 gshort len; 126 } AtspiKeySet; 127 128 /** 129 *AtspiKeyListenerSyncType: 130 * @ATSPI_KEYLISTENER_NOSYNC: Events may be delivered asynchronously, 131 * which means in some cases they may already have been delivered to the 132 * application before the AT client receives the notification. 133 * @ATSPI_KEYLISTENER_SYNCHRONOUS: Events are delivered synchronously, before the 134 * currently focussed application sees them. 135 * @ATSPI_KEYLISTENER_CANCONSUME: Events may be consumed by the AT client. Presumes and 136 * requires #ATSPI_KEYLISTENER_SYNCHRONOUS, incompatible with #ATSPI_KEYLISTENER_NOSYNC. 137 * @ATSPI_KEYLISTENER_ALL_WINDOWS: Events are received not from the application toolkit layer, but 138 * from the device driver or windowing system subsystem; such notifications are 'global' in the 139 * sense that they are not broken or defeated by applications that participate poorly 140 * in the accessibility APIs, or not at all; however because of the intrusive nature of 141 * such snooping, it can have side-effects on certain older platforms. If unconditional 142 * event notifications, even when inaccessible or "broken" applications have focus, are not 143 * required, it may be best to avoid this enum value/flag. 144 * 145 * Specifies the type of a key listener event. 146 * The values above can and should be bitwise-'OR'-ed 147 * together, observing the compatibility limitations specified in the description of 148 * each value. For instance, #ATSPI_KEYLISTENER_ALL_WINDOWS | #ATSPI_KEYLISTENER_CANCONSUME is 149 * a commonly used combination which gives the AT complete control over the delivery of matching 150 * events. However, such filters should be used sparingly as they may have a negative impact on 151 * system performance. 152 **/ 153 typedef enum { 154 ATSPI_KEYLISTENER_NOSYNC = 0, 155 ATSPI_KEYLISTENER_SYNCHRONOUS = 1 << 0, 156 ATSPI_KEYLISTENER_CANCONSUME = 1 << 1, 157 ATSPI_KEYLISTENER_ALL_WINDOWS = 1 << 2 158 } AtspiKeyListenerSyncType; 159 #endif /* _ATSPI_TYPES_H_ */ 160