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 Library General Public |
11 | * License as published by the Free Software Foundation; either |
12 | * version 2 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 | * Library General Public License for more details. |
18 | * |
19 | * You should have received a copy of the GNU Library General Public |
20 | * License along with this library; if not, write to the |
21 | * Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
22 | * Boston, MA 02111-1307, 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 | }; |
93 | |
94 | /** |
95 | * ATSPI_TYPE_DEVICE_EVENT: |
96 | * |
97 | * The #GType for a boxed type holding a #AtspiDeviceEvent. |
98 | */ |
99 | #define ATSPI_TYPE_DEVICE_EVENT (atspi_device_event_get_type ()) |
100 | |
101 | /** |
102 | * ATSPI_TYPE_EVENT: |
103 | * |
104 | * The #GType for a boxed type holding a #AtspiEvent. |
105 | */ |
106 | #define ATSPI_TYPE_EVENT (atspi_event_get_type ()) |
107 | |
108 | typedef void AtspiKeystrokeListener; |
109 | |
110 | /** |
111 | * AtspiKeySet: |
112 | * @keysyms: |
113 | * @keycodes: |
114 | * @len: |
115 | * |
116 | * Structure containing identifying information about a set of keycode or |
117 | * keysyms. |
118 | **/ |
119 | typedef struct _AtspiKeySet |
120 | { |
121 | guint *keysyms; |
122 | gushort *keycodes; |
123 | gchar **keystrings; |
124 | gshort len; |
125 | } AtspiKeySet; |
126 | |
127 | /** |
128 | *AtspiKeyListenerSyncType: |
129 | * @ATSPI_KEYLISTENER_NOSYNC: Events may be delivered asynchronously, |
130 | * which means in some cases they may already have been delivered to the |
131 | * application before the AT client receives the notification. |
132 | * @ATSPI_KEYLISTENER_SYNCHRONOUS: Events are delivered synchronously, before the |
133 | * currently focussed application sees them. |
134 | * @ATSPI_KEYLISTENER_CANCONSUME: Events may be consumed by the AT client. Presumes and |
135 | * requires #ATSPI_KEYLISTENER_SYNCHRONOUS, incompatible with #ATSPI_KEYLISTENER_NOSYNC. |
136 | * @ATSPI_KEYLISTENER_ALL_WINDOWS: Events are received not from the application toolkit layer, but |
137 | * from the device driver or windowing system subsystem; such notifications are 'global' in the |
138 | * sense that they are not broken or defeated by applications that participate poorly |
139 | * in the accessibility APIs, or not at all; however because of the intrusive nature of |
140 | * such snooping, it can have side-effects on certain older platforms. If unconditional |
141 | * event notifications, even when inaccessible or "broken" applications have focus, are not |
142 | * required, it may be best to avoid this enum value/flag. |
143 | * |
144 | * Specifies the type of a key listener event. |
145 | * The values above can and should be bitwise-'OR'-ed |
146 | * together, observing the compatibility limitations specified in the description of |
147 | * each value. For instance, #ATSPI_KEYLISTENER_ALL_WINDOWS | #ATSPI_KEYLISTENER_CANCONSUME is |
148 | * a commonly used combination which gives the AT complete control over the delivery of matching |
149 | * events. However, such filters should be used sparingly as they may have a negative impact on |
150 | * system performance. |
151 | **/ |
152 | typedef enum { |
153 | ATSPI_KEYLISTENER_NOSYNC = 0, |
154 | ATSPI_KEYLISTENER_SYNCHRONOUS = 1 << 0, |
155 | ATSPI_KEYLISTENER_CANCONSUME = 1 << 1, |
156 | ATSPI_KEYLISTENER_ALL_WINDOWS = 1 << 2 |
157 | } AtspiKeyListenerSyncType; |
158 | #endif /* _ATSPI_TYPES_H_ */ |
159 | |