* Boston, MA 02111-1307, USA.
*/
-#include <Bonobo.idl>
-#include <Event.idl>
-#include <Application.idl>
-#include <Desktop.idl>
+#include <Bonobo_Unknown.idl>
+#include <Accessibility_Event.idl>
+#include <Accessibility_Application.idl>
+#include <Accessibility_Desktop.idl>
+
+#ifndef _ACCESSIBILITY_REGISTRY_IDL_
+#define _ACCESSIBILITY_REGISTRY_IDL_
module Accessibility {
/**
* registerApplication:
* @application: a reference to the requesting @Application
- * return values: void
*
* Register a new application with the accessibility broker.
*
**/
- void registerApplication (in Application application);
+ oneway void registerApplication (in Application application);
/**
* deregisterApplication:
* @application: a reference to the @Application
* to be deregistered.
- * return values: void
- *
+ *
* De-register an application previously registered with the broker.
*
**/
* @listener: a reference to the requesting @EventListener.
* @eventName: a string which indicates the type of events about
* which the client desires notification.
- * return values: void
*
* Register a client's interest in (all) application events of
* a certain type.
*
**/
void registerGlobalEventListener (in EventListener listener,
- in string eventName);
+ in string eventName);
/**
* deregisterGlobalEventListener:
* @listener: the requesting @EventListener
* @eventName: a string indicating the type of events
- * return values: void
*
* Request that a previously registered client stop receiving
* global notifications for events of a certain type.
*
**/
- void deregisterGlobalEventListener (in EventListener listener);
+ void deregisterGlobalEventListenerAll (in EventListener listener);
+ /**
+ * deregisterGlobalEventListener:
+ * @listener: the requesting @EventListener
+ * @eventName: a string indicating the type of events
+ *
+ * Request that a previously registered client stop receiving
+ * global notifications for events of a certain type.
+ *
+ **/
+
+ void deregisterGlobalEventListener (in EventListener listener,
+ in string event_name);
/**
* event types: "Window" "Desktop"
* "Window:Create" "Window:Destroy"
/**
* getDesktopCount:
- * return values: a short integer indicating the current number of
- * @Desktops.
*
* Get the current number of desktops.
- *
+ * Returns: a short integer indicating the current number of
+ * @Desktops.
**/
short getDesktopCount ();
/**
* getDesktop:
* @n: the index of the requested @Desktop.
- * return values: a reference to the requested @Desktop.
*
* Get the nth accessible desktop.
*
+ * Returns: a reference to the requested @Desktop.
**/
Desktop getDesktop (in short n);
/**
* getDesktopList:
- * return values: a sequence containing references to
- * the @Desktops.
*
* Get a list of accessible desktops.
*
+ * Returns: a sequence containing references to
+ * the @Desktops.
**/
DesktopSeq getDesktopList ();
/**
* getDeviceEventController:
- * return values: an object implementing DeviceEventController
*
+ * Returns: an object implementing DeviceEventController
**/
DeviceEventController getDeviceEventController ();
+ /**
+ * unImplemented:
+ *
+ * placeholders for future expansion.
+ */
+ void unImplemented ();
+ void unImplemented2 ();
};
enum KeyEventType {
KEY_RELEASED
};
+ enum EventType {
+ KEY_PRESSED_EVENT,
+ KEY_RELEASED_EVENT
+ };
+
+ enum KeySynthType {
+ KEY_PRESS,
+ KEY_RELEASE,
+ KEY_PRESSRELEASE,
+ KEY_SYM,
+ KEY_STRING
+ };
+
enum ModifierType {
+ MODIFIER_SHIFT,
MODIFIER_ALT,
- MODIFIER_META,
MODIFIER_CONTROL,
- MODIFIER_SHIFT,
+ MODIFIER_META,
MODIFIER_META2,
- MODIFIER_META3
+ MODIFIER_META3,
+ MODIFIER_SHIFTLOCK,
+ MODIFIER_NUMLOCK
+ };
+
+ struct EventListenerMode {
+ boolean synchronous;
+ boolean preemptive;
+ boolean global;
};
- typedef sequence<ModifierType> ModifierSeq;
+ typedef unsigned long ControllerEventMask;
- struct KeyStroke {
- long keyID;
- KeyEventType type;
- ModifierSeq modifiers;
+ struct DeviceEvent {
+ EventType type;
+ long id;
+ short hw_code;
+ unsigned short modifiers;
+ unsigned long timestamp;
+ string event_string;
+ boolean is_text;
};
- interface KeystrokeListener {
- boolean keyEvent (in KeyStroke key);
+ typedef sequence< long > KeySet;
+ typedef sequence< KeyEventType > KeyEventTypeSeq;
+
+ interface DeviceEventListener : Bonobo::Unknown {
+ boolean notifyEvent (in DeviceEvent event);
};
- interface DeviceEventController {
+ interface DeviceEventController : Bonobo::Unknown {
/**
* registerKeystrokeListener:
- * @listener: a @KeystrokeListener which will intercept key events.
+ * @listener: a @DeviceEventListener which will intercept key events.
+ * @keys: a @KeySet indicating which keys to intercept, or KEYSET_ALL_KEYS.
+ * @mask: a @ControllerEventMask filtering the intercepted key events.
+ * @type: an @EventType mask that may created by ORing event types together.
+ * @is_synchronous: a @boolean indicating whether the listener should
+ * receive the events synchronously, potentially consuming them,
+ * or just be notified asynchronously of those events that have
+ * been generated.
* Returns: void
*
* Register to intercept keyboard events, and either pass them on or
* consume them.
*
**/
- void registerKeystrokeListener (in KeystrokeListener listener);
+ void registerKeystrokeListener (in DeviceEventListener listener,
+ in KeySet keys,
+ in ControllerEventMask mask,
+ in KeyEventTypeSeq type,
+ in EventListenerMode mode);
+ /**
+ * deregisterKeystrokeListener:
+ * @listener: a @DeviceEventListener which will intercept key events.
+ * @keys: a @KeySet indicating which keys to intercept, or KEYSET_ALL_KEYS.
+ * @mask: a @ControllerEventMask filtering the intercepted key events.
+ * @type: an @EventType mask that may created by ORing event types together.
+ *
+ * Returns: void
+ *
+ * De-register a previously registered keyboard eventlistener.
+ *
+ **/
+ void deregisterKeystrokeListener (in DeviceEventListener listener,
+ in KeySet keys,
+ in ControllerEventMask mask,
+ in KeyEventTypeSeq type);
+
+ boolean notifyListenersSync (in DeviceEvent event);
+
+ oneway void notifyListenersAsync (in DeviceEvent event);
+
/**
- * generateKeyEvent:
- * @keyEventID: a long integer indicating which keypress is synthesized.
+ * generateKeyboardEvent:
+ * @keycode: a long integer indicating the keycode of
+ * the keypress to be synthesized.
+ * @keystring: an optional UTF-8 string indicating a complex
+ * keyboard input event.
+ * @type: a #KeySynthType indicating the type of event(s) to be
+ * synthesized: a key press, release, press-release pair,
+ * or a complex input string (for instance from an
+ * internationalized or complex text input method, or
+ * a composed character).
+ *
+ * Note that @keycode may be truncated before being
+ * processed, as keycode length may be platform-dependent
+ * and keycode ranges are generally much smaller than
+ * CORBA_long.
+ * One or the other of @keycode or @keystring are generally NULL,
+ * (but not both), depending on the value of @type.
+ *
* Returns: void
*
- * Synthesize a keypress event.
+ * Synthesize a keyboard event.
*
**/
- void generateKeyEvent (in long keyEventID);
+ void generateKeyboardEvent (in long keycode,
+ in string keystring,
+ in KeySynthType type);
/**
* generateMouseEvent:
*
**/
void generateMouseEvent (in long x, in long y, in string eventName);
+
+ /**
+ * unImplemented:
+ *
+ * placeholders for future expansion.
+ */
+ void unImplemented ();
+ void unImplemented2 ();
};
};
+
+#endif