source: trunk/third/at-spi/idl/Accessibility_Registry.idl @ 18422

Revision 18422, 9.3 KB checked in by ghudson, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18421, which included commits to RCS files with non-trunk default branches.
Line 
1/*
2 * AT-SPI - Assistive Technology Service Provider Interface
3 * (Gnome Accessibility Project; http://developer.gnome.org/projects/gap)
4 *
5 * Copyright 2001 Sun Microsystems Inc.
6 *
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.
11 *
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.
16 *
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.
21 */
22
23#include <Bonobo_Unknown.idl>
24#include <Accessibility_Event.idl>
25#include <Accessibility_Application.idl>
26#include <Accessibility_Desktop.idl>
27
28#ifndef _ACCESSIBILITY_REGISTRY_IDL_
29#define _ACCESSIBILITY_REGISTRY_IDL_
30
31module Accessibility {
32
33  typedef sequence<Desktop> DesktopSeq;
34
35  interface DeviceEventController;
36
37  interface Registry : EventListener {
38
39        /**
40         * registerApplication:
41         * @application: a reference to the requesting @Application
42         *
43         * Register a new application with the accessibility broker.
44         *
45         **/
46        oneway void registerApplication (in Application application);
47
48        /**
49         * deregisterApplication:
50         * @application: a reference to the @Application
51         * to be deregistered.
52         *
53         * De-register an application previously registered with the broker.
54         *
55         **/
56        void deregisterApplication (in Application application);
57
58        /**
59         * registerGlobalEventListener:
60         * @listener: a reference to the requesting @EventListener.
61         * @eventName: a string which indicates the type of events about
62         * which the client desires notification.
63         *
64         * Register a client's interest in (all) application events of
65         * a certain type.
66         *
67         **/
68        void registerGlobalEventListener (in EventListener listener,
69                                          in string eventName);
70
71        /**
72         * deregisterGlobalEventListener:
73         * @listener: the requesting @EventListener
74         * @eventName: a string indicating the type of events
75         *
76         * Request that a previously registered client stop receiving
77         * global notifications for events of a certain type.
78         *
79         **/
80
81        void deregisterGlobalEventListenerAll (in EventListener listener);
82        /**
83         * deregisterGlobalEventListener:
84         * @listener: the requesting @EventListener
85         * @eventName: a string indicating the type of events
86         *
87         * Request that a previously registered client stop receiving
88         * global notifications for events of a certain type.
89         *
90         **/
91
92        void deregisterGlobalEventListener (in EventListener listener,
93                                            in string event_name);
94        /**
95         * event types: "Window" "Desktop"
96         *              "Window:Create" "Window:Destroy"
97         *              "Window:Iconify" "Window:Restore"
98         *              "Window:Fullscreen" "Window:Resize"
99         *              "Desktop:Create" "Desktop:Destroy" 
100         *              "Desktop:Focus" "Desktop:Defocus"
101         *              "Desktop:Reorder"
102         *              "Focus"
103         *              "GtkWidget:show"
104         *              "GObject:notify:<propertyname>"
105         *
106         *  ( not sure we should allow these last 2 forms,
107         *    since they are toolkit-specific, but they're powerful )
108         *
109         **/             
110
111        /**
112         * getDesktopCount:
113         *
114         * Get the current number of desktops.
115         * Returns: a short integer indicating the current number of
116         * @Desktops.
117         **/
118        short getDesktopCount ();
119
120        /**
121         * getDesktop:
122         * @n: the index of the requested @Desktop.
123         *
124         * Get the nth accessible desktop.
125         *
126         * Returns: a reference to the requested @Desktop.
127         **/
128        Desktop getDesktop (in short n);
129
130        /**
131         * getDesktopList:
132         *
133         * Get a list of accessible desktops.
134         *
135         * Returns: a sequence containing references to
136         * the @Desktops.
137         **/
138        DesktopSeq getDesktopList ();
139
140        /**
141         * getDeviceEventController:
142         *
143         * Returns: an object implementing DeviceEventController
144         **/
145        DeviceEventController getDeviceEventController ();
146
147        /**
148         * unImplemented:
149         *
150         * placeholders for future expansion.
151         */
152        void unImplemented ();
153        void unImplemented2 ();
154    };
155
156  enum KeyEventType {
157    KEY_PRESSED,
158    KEY_RELEASED
159  };
160
161  enum EventType {
162    KEY_PRESSED_EVENT,
163    KEY_RELEASED_EVENT
164  };
165
166  enum KeySynthType {
167    KEY_PRESS,
168    KEY_RELEASE,
169    KEY_PRESSRELEASE,
170    KEY_SYM,
171    KEY_STRING
172  };
173
174  enum ModifierType {
175    MODIFIER_SHIFT,
176    MODIFIER_ALT,
177    MODIFIER_CONTROL,
178    MODIFIER_META,
179    MODIFIER_META2,
180    MODIFIER_META3,
181    MODIFIER_SHIFTLOCK,
182    MODIFIER_NUMLOCK
183  };
184
185  struct EventListenerMode {
186    boolean synchronous;
187    boolean preemptive;
188    boolean global;       
189  };
190
191  typedef unsigned long ControllerEventMask;
192
193  struct DeviceEvent {
194    EventType type;
195    long  id;
196    short hw_code;
197    unsigned short modifiers;
198    unsigned long timestamp;
199    string event_string;
200    boolean is_text;
201  };
202
203  struct KeyDefinition {
204    long keycode;
205    long keysym;
206    string keystring;
207    long unused;
208  };   
209
210  typedef sequence< KeyDefinition > KeySet;
211  typedef sequence< KeyEventType > KeyEventTypeSeq;
212
213  interface DeviceEventListener : Bonobo::Unknown {
214        boolean notifyEvent (in DeviceEvent event);
215  };
216
217  interface DeviceEventController : Bonobo::Unknown {
218
219        /**
220         * registerKeystrokeListener:
221         * @listener: a @DeviceEventListener which will intercept key events.
222         * @keys:     a @KeySet indicating which keys to intercept, or KEYSET_ALL_KEYS.
223         * @mask:     a @ControllerEventMask filtering the intercepted key events.
224         * @type:     an @EventType mask that may created by ORing event types together.
225         * @is_synchronous: a @boolean indicating whether the listener should
226         *            receive the events synchronously, potentially consuming them,
227         *            or just be notified asynchronously of those events that have
228         *            been generated.
229         * Returns: %true if successful, %false if not
230         *
231         * Register to intercept keyboard events, and either pass them on or
232         * consume them.
233         *
234         **/
235        boolean registerKeystrokeListener (in DeviceEventListener listener,
236                                        in KeySet keys,
237                                        in ControllerEventMask mask,
238                                        in KeyEventTypeSeq type,
239                                        in EventListenerMode mode);
240   
241        /**
242         * deregisterKeystrokeListener:
243         * @listener: a @DeviceEventListener which will intercept key events.
244         * @keys:     a @KeySet indicating which keys to intercept, or KEYSET_ALL_KEYS.
245         * @mask:     a @ControllerEventMask filtering the intercepted key events.
246         * @type:     an @EventType mask that may created by ORing event types together.
247         *
248         * Returns: void
249         *
250         * De-register a previously registered keyboard eventlistener.
251         *
252         **/
253        void deregisterKeystrokeListener (in DeviceEventListener listener,
254                                          in KeySet keys,
255                                          in ControllerEventMask mask,
256                                          in KeyEventTypeSeq type);
257   
258        boolean notifyListenersSync (in DeviceEvent event);
259
260        oneway void notifyListenersAsync (in DeviceEvent event);
261
262        /**
263         * generateKeyboardEvent:
264         * @keycode: a long integer indicating the keycode of
265         *          the keypress to be synthesized.
266         * @keystring: an optional UTF-8 string indicating a complex
267         *          keyboard input event.
268         * @type: a #KeySynthType indicating the type of event(s) to be
269         *          synthesized: a key press, release, press-release pair,
270         *          or a complex input string (for instance from an
271         *          internationalized or complex text input method, or
272         *          a composed character).
273         *
274         * Note that @keycode may be truncated before being
275         *          processed, as keycode length may be platform-dependent
276         *          and keycode ranges are generally much smaller than
277         *          CORBA_long.
278         * One or the other of @keycode or @keystring are generally NULL,
279         *          (but not both), depending on the value of @type.
280         *
281         * Returns: void
282         *
283         * Synthesize a keyboard event.
284         *
285         **/
286         void generateKeyboardEvent (in long keycode,
287                                     in string keystring,
288                                     in KeySynthType type);
289
290        /**
291         * generateMouseEvent:
292         * @x: a long integer indicating the screen x coord for the mouse event.
293         * @y: a long integer indicating the screen y coord for the mouse event.
294         * @eventName: a string indicating the type of mouse event, e.g. "button1up"
295         * Returns: void
296         *
297         * Synthesize a mouse event.
298         *
299         **/
300         void generateMouseEvent (in long x, in long y, in string eventName);
301
302         /**
303          * unImplemented:
304          *
305          * placeholders for future expansion.
306          */
307         void unImplemented ();
308         void unImplemented2 ();
309    };
310};
311
312#endif
Note: See TracBrowser for help on using the repository browser.