2008-08-18 Mark Doffman <mark.doffman@codethink.co.uk>
authorMark Doffman <mdoff@silver-wind.(none)>
Mon, 18 Aug 2008 13:54:20 +0000 (14:54 +0100)
committerMark Doffman <mdoff@silver-wind.(none)>
Mon, 18 Aug 2008 13:54:20 +0000 (14:54 +0100)
* xml/Accessibility.xml
Add new (Missing) xml files

* xml/org.freedesktop.atspi.Event.xml
Add missing event types that were in Registry_Common.xml

* xml/*.xml
Rewrite some of the documentation removing doxygen characters.

xml/Accessibility.xml
xml/org.freedesktop.atspi.Accessible.xml
xml/org.freedesktop.atspi.Action.xml
xml/org.freedesktop.atspi.Application.xml
xml/org.freedesktop.atspi.Collection.xml
xml/org.freedesktop.atspi.Event.xml [new file with mode: 0644]

index 65d13a4..f15646e 100644 (file)
 <!-- Interfaces derived from Accessibility::Text -->
 <xi:include href="org.freedesktop.atspi.EditableText.xml"/>
 <xi:include href="org.freedesktop.atspi.Hypertext.xml"/>
-<xi:include href="Accessibility_State.xml"/>
+<xi:include href="org.freedesktop.atspi.State.xml"/>
 
 <!-- Utility interfaces and interfaces derived from Accessibility::Accessible -->
 
 <xi:include href="org.freedesktop.atspi.Application.xml"/>
-<xi:include href="Accessibility_Registry_Common.xml"/>
 <xi:include href="org.freedesktop.atspi.Registry.xml"/>
+<xi:include href="org.freedesktop.atspi.Registry.Common.xml"/>
+<xi:include href="org.freedesktop.atspi.Event.xml"/>
 <xi:include href="org.freedesktop.atspi.Desktop.xml"/>
 <xi:include href="org.freedesktop.atspi.DeviceEventController.xml"/>
 <xi:include href="org.freedesktop.atspi.DeviceEventListener.xml"/>
-<xi:include href="Accessibility_Relation.xml"/>
-<xi:include href="Accessibility_Role.xml"/>
+<xi:include href="org.freedesktop.atspi.Relation.xml"/>
+<xi:include href="org.freedesktop.atspi.Role.xml"/>
 <xi:include href="org.freedesktop.atspi.LoginHelper.xml"/>
 <xi:include href="org.freedesktop.atspi.Selector.xml"/>
 </tp:spec>
index 55de240..a59d303 100644 (file)
@@ -1,13 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
 
-
-
-
-
 <tp:enum name="LOCALE_TYPE" type="u">
   <tp:docstring>
-    used by Text and Document: these correspond to the POSIX setlocale() enum values. 
+  Used by Text and Document interfaces these correspond to the POSIX 'setlocale' enum values. 
   </tp:docstring>
   <tp:enumvalue suffix="LOCALE_TYPE_MESSAGES"/>
   <tp:enumvalue suffix="LOCALE_TYPE_COLLATE" value="1"/>
 </tp:enum>
 <tp:struct name="BoundingBox">
   <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>Used by Component and Text, a struct defining a bounding rectangle. 
-      The relevant coordinate system is determined by the context of the
-      API call which returned or receives the value.</p>
+    Used by Component and Text interfaces, a struct defining a bounding rectangle. 
+    The relevant coordinate system is determined by the context of the
+    API call which returned or receives the value.
   </tp:docstring>
   <tp:member type="i" tp:name="x">
   <tp:docstring>
-    &lt; the value corresponding to the minimum or leftmost x position. 
+    The value corresponding to the minimum or leftmost x position. 
   </tp:docstring>
   </tp:member>
   <tp:member type="i" tp:name="y">
   <tp:docstring>
-    &lt; the value corresponding to the minimum y value.  
+    The value corresponding to the minimum y value.  
   </tp:docstring>
   </tp:member>
   <tp:member type="i" tp:name="width">
   <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>&lt; the horizontal extent of the bounding box,
-      that is, the difference between the maximum and minimum
-      x coordinate bounds.</p>
+    The horizontal extent of the bounding box,
+    that is, the difference between the maximum and minimum
+    x coordinate bounds.
   </tp:docstring>
   </tp:member>
   <tp:member type="i" tp:name="height">
   <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-    <p>&lt; the vertical extent of the bounding box, 
+      The vertical extent of the bounding box, 
       that is, the difference between the maximum and minimum
-      y coordinate bounds.</p>
+      y coordinate bounds.
   </tp:docstring>
   </tp:member>
 </tp:struct>
       and position in the accessible-object hierarchy, whether or not they
       actually have children.  </p>
 
-    <p>@note Events that may be emitted by instances of Accessible include:
-      \li \c "object:property-change" A base (strongly-typed) object attribute has changed,
+    <p>Events that may be emitted by instances of Accessible include:
+      "object:property-change" A base (strongly-typed) object attribute has changed,
       for instance "object:property-change:accessible-name".
       Notifed property subtypes include accessible-name, accessible-description,
-      accessible-parent and accessible-role.   </p>
+      accessible-parent and accessible-role.</p>
 
-    <p>\li \c "object:children-changed" The number or identity of an object's children
+    <p>"object:children-changed" The number or identity of an object's children
       has changed.
-      \li \c "object:state-changed" The object's StateSet has had a state added
+      
+      "object:state-changed" The object's StateSet has had a state added
       or removed.
-      \li \c "object:active-descendant-changed" If the object includes 
+      
+      "object:active-descendant-changed" If the object includes 
       STATE_MANAGES_DESCENDANTS, this event is fired to indicate that the 
       descendant having STATE_ACTIVE has changed; this corresponds to
       "micro" keyboard focus when the containing/emitting object has
       "macro" or technical keyboard focus.  For instance, this event is
       usually emitted while traversing tables and/or spreadsheet cells.
-      \li \c "object:attribute-change" A weakly-typed property, as contained in the
+      
+      "object:attribute-change" A weakly-typed property, as contained in the
       AttributeSet returned by Accessible::getAttributes, has changed in value,
       been added, or been removed from the object.
       ("object:attribute-change" notifications were added in AT-SPI 1.7.0)</p>
+
   </tp:docstring>
   <tp:property name="name" type="s" access="readwrite">
   <tp:docstring>
-    a (short) \c string representing the object's name.
+    A (short) string representing the object's name.
   </tp:docstring>
   </tp:property>
   <tp:property name="description" type="s" access="readwrite">
   <tp:docstring>
-    a \c string describing the object in more detail than \a name.
+    A string describing the object in more detail than name.
   </tp:docstring>
   </tp:property>
   <tp:property name="parent" type="o" access="read">
   <tp:docstring>
-    an ::Accessible object which is this object's containing object.
+    The Accessible object which is this object's containing object.
   </tp:docstring>
   </tp:property>
   <tp:property name="childCount" type="i" access="read">
   <tp:docstring>
-    childCount: the number of children contained by this object.
+    The number of children contained by this object.
   </tp:docstring>
   </tp:property>
   <method name="getChildren">
     </tp:docstring>
     <arg direction="out" type="ao" tp:type="AccessibleSet">
     <tp:docstring>
-      the ::Accessible children of this object.
+      The Accessible children of this object.
     </tp:docstring>
     </arg>
   </method>
     </tp:docstring>
     <arg direction="out" type="i">
     <tp:docstring>
-      a long integer indicating this object's index in the parent's list.
+      A long integer indicating this object's index in the parent's list.
     </tp:docstring>
     </arg>
   </method>
-  <!-- TODO: Decide whether to implement this, or put these in the tree
   <method name="getRelationSet">
     <tp:docstring>
       Get a set defining this object's relationship to other accessible objects.
     </tp:docstring>
     <arg direction="out" type="a(uao)" tp:type="RelationSet">
     <tp:docstring>
-      a ::RelationSet defining this object's relationships.
+      RelationSet defining this object's relationships.
     </tp:docstring>
     </arg>
   </method>
-  -->
   <method name="getRole">
     <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get the ::Role indicating the type of UI role played by this object.    </p>
+      Get the Role indicating the type of UI role played by this object.
     </tp:docstring>
     <arg direction="out" type="u" tp:type="Role">
     <tp:docstring>
-      a ::Role indicating the type of UI role played by this object.
+      Role indicating the type of UI role played by this object.
     </tp:docstring>
     </arg>
   </method>
   <method name="getRoleName">
     <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get a string indicating the type of UI role played by this object.    </p>
+      Get a string indicating the type of UI role played by this object.
     </tp:docstring>
     <arg direction="out" type="s">
     <tp:docstring>
-      a UTF-8 string indicating the type of UI role played by this object.
+      A UTF-8 string indicating the type of UI role played by this object.
     </tp:docstring>
     </arg>
   </method>
   <method name="getLocalizedRoleName">
     <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get a string indicating the type of UI role played by this object,
-        translated to the current locale.    </p>
+      Get a string indicating the type of UI role played by this object,
+      translated to the current locale.
     </tp:docstring>
     <arg direction="out" type="s">
     <tp:docstring>
-      a UTF-8 string indicating the type of UI role played by this object.
+      A UTF-8 string indicating the type of UI role played by this object.
     </tp:docstring>
     </arg>
   </method>
   <method name="getState">
     <tp:docstring>
-      Get the current state of the object as a ::StateSet.
+      Get the current state of the object as a StateSet.
     </tp:docstring>
     <arg direction="out" type="au" tp:type="StateSet">
     <tp:docstring>
-      a ::StateSet encapsulating the currently true states of the object.
+      StateSet encapsulating the currently true states of the object.
       Returns an array of (currently two) 32-bit integers giving bitwise flags.
     </tp:docstring>
     </arg>
   <method name="getAttributes">
     <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
       <p>Get a list of properties applied to this object as a whole, as an 
-        ::AttributeSet consisting of name-value pairs.  As such these attributes
+        AttributeSet consisting of name-value pairs. As such these attributes
         may be considered weakly-typed properties or annotations, as distinct
         from the strongly-typed interface instance data declared using the IDL 
-        "attribute" keyword.    </p>
+        "attribute" keyword.</p>
 
       <p>Not all objects have explicit "name-value pair" AttributeSet properties.      </p>
 
       <p>Attribute names and values may have any UTF-8 string value, however where possible,
         in order to facilitate consistent use and exposure of "attribute" properties by
         applications and AT clients, attribute names and values should chosen from  
-        a publicly-specified namespace where appropriate.    </p>
+        a publicly-specified namespace where appropriate.</p>
 
       <p>Where possible, the names and values in the name-value pairs
         should be chosen from well-established attribute namespaces
         using standard semantics.       
-        For example, attributes of ::Accessible objects corresponding to XHTML content 
+        For example, attributes of Accessible objects corresponding to XHTML content 
         elements should correspond to attribute names and values specified in the w3c 
         XHTML specification, at http://www.w3.org/TR/xhtml2, where such values are not 
         already exposed via a more strongly-typed aspect of the AT-SPI API.
         http://www.w3.org/TR/1998/REC-CSS2-19980512
         WICD (http://www.w3.org/TR/2005/WD-WICD-20051121/).    </p>
 
-      <p>@note Clients seeking semantic or typographical attributes associated with
-        specific character spans of text content should use ::Text::getAttributeRun instead.
-        The attributes returned by Accessible::getAttributes do not include
-        "text attributes".    </p>
+      <p>Clients seeking semantic or typographical attributes associated with
+        specific character spans of text content should use Text.getAttributeRun instead.
+        The attributes returned by Accessible.getAttributes do not include
+        "text attributes". (See Text.getAttributeRun)</p>
 
-      <p>@see ::Accessibility::Text::getAttributeRun    </p>
     </tp:docstring>
     <arg direction="out" type="as" tp:type="AttributeSet">
     <tp:docstring>
-      an ::AttributeSet encapsulating any "attribute values" currently defined for the object.@since AT-SPI 1.7.0
+      An AttributeSet encapsulating any "attribute values" currently defined for the object.
     </tp:docstring>
     </arg>
   </method>
   <method name="getApplication">
     <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Get the containing Application for this object.    </p>
+      <p>Get the containing Application for this object.</p>
     </tp:docstring>
     <arg direction="out" type="o" tp:type="Application">
     <tp:docstring>
-      the Application instance to which this object belongs.@since AT-SPI 1.7.0
+      The Application instance to which this object belongs.
     </tp:docstring>
     </arg>
   </method>
-  <method name="unimplemented">
-    <tp:docstring>
-      /cond future expansion 
-    </tp:docstring>
-  </method>
 </interface>
 </node>
index 3312682..94e1ea8 100644 (file)
@@ -1,10 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
 
-
-
-
-
 <interface name="org.freedesktop.atspi/Action">
   <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
     <p>An interface through which a user-actionable user interface
   <tp:struct name="Action">
     <tp:member type="s" tp:name="name">
       <tp:docstring>
-      a \c string containing the description of the specified action.
+      A string containing the description of the specified action.
       </tp:docstring>
     </tp:member>
     <tp:member type="s" tp:name="description">
       <tp:docstring>
-       the description of the specified action.  The description of an actionmay provide information about the result of action invocation, unlike the action name.
+       The description of the specified action. The description of an actionmay provide information about the result of action invocation, unlike the action name.
     </tp:docstring>
   </tp:member>
     <tp:member type="s" tp:name="keyBinding">
       <tp:docstring>
-        a \c string containing the key binding for the specified action,or an empty string ("") if none exists.
+        A string containing the key binding for the specified action,or an empty string ("") if none exists.
       </tp:docstring>
     </tp:member>
   </tp:struct>
 
   <tp:property name="nActions" type="i" access="read">
-    <tp:docstring>the number of actions this object supports</tp:docstring>
+    <tp:docstring>The number of actions this object supports</tp:docstring>
   </tp:property>
 
   <method name="getDescription">
     <tp:docstring>
-      <p>Get the description for the specified action.  The description of an action may provide information about the result of action invocation, unlike the action name.</p>
+      <p>Get the description for the specified action. The description of an action may provide information about the result of action invocation, unlike the action name.</p>
     </tp:docstring>
     <arg type="i" name="index" direction="in">
-      <tp:docstring>the index of the action</tp:docstring>
+      <tp:docstring>The index of the action</tp:docstring>
     </arg>
     <arg type="s" direction="out">
       <tp:docstring>A string containing the description of the specified action</tp:docstring>
@@ -54,7 +50,7 @@
       <p>Get the name of the specified action.  Action names generally describe the user action, i.e. "click" or "press", rather than the result of invoking the action.</p>
     </tp:docstring>
     <arg type="i" name="index" direction="in">
-      <tp:docstring>the index of the action</tp:docstring>
+      <tp:docstring>The index of the action</tp:docstring>
     </arg>
     <arg type="s" direction="out">
       <tp:docstring>A string containing the name of the specified action</tp:docstring>
@@ -66,7 +62,7 @@
       <p>Get the key binding associated with a specific action.</p>
     </tp:docstring>
     <arg type="i" name="index" direction="in">
-      <tp:docstring>the index of the action</tp:docstring>
+      <tp:docstring>The index of the action</tp:docstring>
     </arg>
     <arg type="s" direction="out">
       <tp:docstring>A string containing the key binding for the specified action, or an empty string ("") if none exists.</tp:docstring>
     </tp:docstring>
     <arg direction="in" name="index" type="i">
     <tp:docstring>
-      the 0-based index of the action to perform.
+      The 0-based index of the action to perform.
     </tp:docstring>
     </arg>
     <arg direction="out" type="b" tp:type="boolean">
     <tp:docstring>
-      a \c boolean indicating success or failure.
+      A boolean indicating success or failure.
     </tp:docstring>
     </arg>
   </method>
index 3195f3f..4f67ea8 100644 (file)
@@ -1,17 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-
-
-
-
-
 <interface name="org.freedesktop.atspi.Application">
   <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
     <p>An interface identifying an object which is the root of the
       user interface Accessible hierarchy associated with a running application.
       Children of Application are typically, but not exclusively, 
-      top-level windows.
-      @note It is possible for an element deeper in an Accessibility stack to
+      top-level windows.</p>
+      
+    <p>It is possible for an element deeper in an Accessibility stack to
       implement Application, for instance in the case of "embedded applications"
       which draw into toplevel windows associated with other applications
       from the user's point of view.</p>
@@ -19,8 +15,8 @@
   <tp:property name="toolkitName" type="s" access="read">
   <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
     <p>A string indicating the type of user interface toolkit
-      which is used by the application.
-      @note Ordinarily clients of ::Application should be
+       which is used by the application.</p>
+      <p>Ordinarily clients of the Application should be
       toolkit-agnostic, dependencies on this property should
       be avoided where possible.</p>
   </tp:docstring>
   <method name="registerToolkitEventListener">
     <arg direction="in" name="listener" type="o" tp:type="EventListener">
     <tp:docstring>
-      an ::EventListener object which will receive the requestedevents from the application's toolkits via toolit 'bridges'
+      An EventListener object which will receive the requestedevents from the application's toolkits via toolit 'bridges'
     </tp:docstring>
     </arg>
     <arg direction="in" name="eventName" type="s">
     <tp:docstring>
-      a UTF-8 string indicating the type of (toolkit-specific) eventbeing requested.  Not all applications can generate toolkit events ofa given type.Register with this application's toolkit for "toolkit-specific" event notifications.@noteFor most event support, clients should use non-toolkit-specific eventswhenever possible, via ::Registry::registerGlobalEventListener - this method is provided as a 'back door' when generic names do not exist for the events in question.
+           <p> A UTF-8 string indicating the type of (toolkit-specific) eventbeing requested.  Not all applications can generate toolkit events of a given type. Register with this application's toolkit for "toolkit-specific" event notifications.</p>
+           
+           <p>For most event support, clients should use non-toolkit-specific events whenever possible, Registry.registerGlobalEventListener - this method is provided as a 'back door' when generic names do not exist for the events in question.</p>
     </tp:docstring>
     </arg>
   </method>
   <method name="registerObjectEventListener">
-    <tp:docstring>
-      registerObjectEventListener:
-    </tp:docstring>
     <arg direction="in" name="listener" type="o" tp:type="EventListener">
     <tp:docstring>
-      an ::EventListener object which will receive the requestedevents
+      An EventListener object which will receive the requested events
     </tp:docstring>
     </arg>
     <arg direction="in" name="eventName" type="s">
     <tp:docstring>
-      a UTF-8 string indicating the type of (toolkit-specific) eventbeing requested.  Register with this application toolkit for "Accessibility::Accessible" event notifications. @note: SUBJECT TO DEPRECATION.
+      A UTF-8 string indicating the type of (toolkit-specific) event being requested. Register with this application toolkit for "Accessibility.Accessible" event notifications. DEPRECATED
     </tp:docstring>
     </arg>
   </method>
   <method name="pause">
     <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
       <p>Request that the application temporarily stop sending events.
-        In most cases this should pause the application's main event loop.    </p>
+        In most cases this should pause the application's main event loop.</p>
     </tp:docstring>
     <arg direction="out" type="b" tp:type="boolean">
-    <tp:docstring>
-      \c true if the request succeeded, \c false otherwise.@note: This method is not implemented in most toolkits, and therefore should be treated with caution.
-    </tp:docstring>
+        <tp:docstring>
+           <p>True if the request succeeded, false otherwise.</p>
+    
+        <p>This method is not implemented in most toolkits, and therefore should be treated with caution.</p>
+        </tp:docstring>
     </arg>
   </method>
   <method name="resume">
     <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
-      <p>Request that the application resume sending events.    </p>
+      <p>Request that the application resume sending events.</p>
     </tp:docstring>
     <arg direction="out" type="b" tp:type="boolean">
     <tp:docstring>
-      \c True if the request succeeded, \c False otherwise.
+      True if the request succeeded, False otherwise.
     </tp:docstring>
     </arg>
   </method>
       <p>Gets the locale in which the application is currently operating.
         For the current message locale, use \a lctype LOCALE_TYPE_MESSAGES.    </p>
 
-      <p>@param lctype The LocaleType for which the locale is queried.</p>
     </tp:docstring>
-    <arg direction="in" name="lctype" type="u" tp:type="LOCALE_TYPE"/>
-    <arg direction="out" type="s">
+    <arg direction="in" name="lctype" type="u" tp:type="LOCALE_TYPE">
     <tp:docstring>
-      a string compliant with the POSIX standard for locale description.
+      <p>The LocaleType for which the locale is queried.</p>
     </tp:docstring>
     </arg>
-  </method>
-  <method name="unImplemented_">
+    <arg direction="out" type="s">
     <tp:docstring>
-      \cond (This comment tells doxygen not to document these) 
+      A string compliant with the POSIX standard for locale description.
     </tp:docstring>
-  </method>
-  <method name="unImplemented2_">
-  </method>
-  <method name="unImplemented3_">
+    </arg>
   </method>
 </interface>
 </node>
index 006008f..2bfc851 100644 (file)
@@ -1,10 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <node xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0" name="/node">
-
-
-
-
-
 <interface name="org.freedesktop.atspi.Collection">
   <tp:enum name="SortOrder" type="u">
     <tp:enumvalue suffix="SORT_ORDER_INVALID"/>
diff --git a/xml/org.freedesktop.atspi.Event.xml b/xml/org.freedesktop.atspi.Event.xml
new file mode 100644 (file)
index 0000000..01d8416
--- /dev/null
@@ -0,0 +1,346 @@
+<node name="/node" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
+
+<tp:struct name="EventListenerMode">
+  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+    <p>A structure that encapsulates the characteristics of the event notifications
+      that should be sent to an EventListener in response to a call to
+      DeviceEventController::registerKeystrokeListener or 
+      DeviceEventController::registerDeviceEventListener. </p>
+  </tp:docstring>
+  <tp:member type="b" tp:name="synchronous">
+  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+    <p>&lt; If \c True, specifies that
+      DeviceEventController should block while waiting 
+      for client to process the requested event notifications; 
+      ordinarily should be used only when client needs to perform
+      operations synchronously with event delivery. Note that because
+      of the architecture of device event systems in general,
+      use of this flag may not block delivery of the event to 
+      the currently focussed application unless it is used in 
+      conjunction with the preemptive flag. </p>
+  </tp:docstring>
+  </tp:member>
+  <tp:member type="b" tp:name="preemptive">
+  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+    <p>&lt; If \c True, specifies that 
+      Listener is allowed to pre-empt the delivery of the event,
+      effectively &quot;consuming&quot; it such that it is not delivered 
+      to the currently focussed desktop application. 
+      Key events consumed via this API will not be 
+      available for use by other applications or services, so this
+      option should be used sparingly. </p>
+  </tp:docstring>
+  </tp:member>
+  <tp:member type="b" tp:name="global">
+  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+    <p>&lt; If \c True, specifies that
+      Event notifications should be sent regardless of whether the
+      currently focussed application participates in the AT-SPI 
+      infrastructure.  On systems with the XEvIE X extension, this flag
+      also allows access to events which are already subject to 
+      interception via a &quot;system keygrab&quot; (as described in the X Window System
+      documentation for XGrabKey).  The 'global' and 'preemptive' flags
+      should only be used together for the purposes of registering
+      &quot;system global key shortcuts&quot; i.e. command keys for use by the
+      assistive technology. </p>
+  </tp:docstring>
+  </tp:member>
+</tp:struct>
+<tp:struct name="DeviceEvent">
+  <tp:docstring>
+    A structure which encapsulates information about a device event. 
+  </tp:docstring>
+  <tp:member type="u" tp:name="type">
+  <tp:docstring>
+    &lt; Identifies the type of the containing DeviceEvent. 
+  </tp:docstring>
+  </tp:member>
+  <tp:member type="i" tp:name="id">
+  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+    <p>&lt; an identifier which identifies this event in the event stream. 
+      On X Window systems this corresponds to the XEvent serial number.</p>
+  </tp:docstring>
+  </tp:member>
+  <tp:member type="n" tp:name="hw_code">
+  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+    <p>&lt; a numeric code which is hardware and system-dependent, identifying the
+      specific hardware button or key on the device for which the event has
+      occurred. On X Window systems, for global key notifications and for most
+      non-global key notifications as well, this code corresponds to the
+      XKeycode.  For switch and button events it indicates the switch
+      or button number.
+      @note
+      For technical reasons, this code may differ from the XKeycode
+      when generated by Java applications for consumption by non-global
+      key listeners.  This is subject to change in future versions of the
+      DeviceEventController implementation.</p>
+  </tp:docstring>
+  </tp:member>
+  <tp:member type="n" tp:name="modifiers">
+  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+    <p>&lt; an unsigned short int consisting of zero or more of the following
+      values OR'ed together:
+      \li \c 1&lt;&lt;::MODIFIER_SHIFT   (=1, corresponds to Xlib's ShiftMask)
+      \li \c 1&lt;&lt;::MODIFIER_SHIFTLOCK    (=2, corresponds to Xlib's LockMask)
+      \li \c 1&lt;&lt;::MODIFIER_CONTROL (=4, corresponds to Xlib's ControlMask)
+      \li \c 1&lt;&lt;::MODIFIER_ALT    (=8, corresponds to Xlib's Mod1Mask)
+      \li \c 1&lt;&lt;::MODIFIER_META    (=16, corresponds to Xlib's Mod2Mask)
+      \li \c 1&lt;&lt;::MODIFIER_META2    (=32, corresponds to Xlib's Mod3Mask)
+      \li \c 1&lt;&lt;::MODIFIER_META3    (=64, corresponds to Xlib's Mod4Mask)</p>
+  </tp:docstring>
+  </tp:member>
+  <tp:member type="i" tp:name="timestamp">
+  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+    <p>&lt; an unsigned integer representing the time that the 
+      event occurred.  On X Window systems this event is 
+      a time in milliseconds from some arbitrary starting
+      point; it therefore has a cycle time of approximately
+      50 days.</p>
+  </tp:docstring>
+  </tp:member>
+  <tp:member type="s" tp:name="event_string">
+  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+    <p>&lt; A string representation of the event.  If is_text is
+      \c True, then this string represents the character or typographic
+      sequence that would be received by a focussed text input field.
+      event_string is in general suitable for exposure to the
+      end-user for purposes of keyboard echo.</p>
+  </tp:docstring>
+  </tp:member>
+  <tp:member type="b" tp:name="is_text">
+  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+    <p>&lt; \c True if the event results in the insertion of characters 
+      into an input text buffer, or would do so if delivered to a focussed
+      text input field. ¨Typographical¨ key events have this field set to
+      \c True, whereas ¨control¨ key events generally do not.</p>
+  </tp:docstring>
+  </tp:member>
+</tp:struct>
+<tp:struct name="KeyDefinition">
+  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+    <p>A structure which defines the identity of a key for which notifications
+      are to be requested.  The data in the members of a ::KeyDefinition are used to
+      determine which keyboard events 'match' the notification request filed by a client.  </p>
+
+    <p>@note Ordinarily a KeyDefinition specifies one and only one of the criteria below; 
+      the result of using a KeyDefinition with multiple members defined as nonzero is
+      undefined.  </p>
+
+    <p>@param keycode if nonzero, the numeric, system-dependent value corresponding to a 
+      physical key on the keyboard.  Keycode values have no semantic meaning to the end-user,
+      and may depend on the user's hardware and operating environment.  They therefore are
+      rarely useful &quot;as-is&quot; to AT clients, unless the client has used operating system
+      services to identify the hardward keycode associated with a particular key symbol.
+      Notifications for key events requested by keycode are less dependent on modifier state
+      than \c keysym based notifications, but some hardware (notably many laptops) may generate
+      more than one keycode for the same physical key, depending on the state of physical 
+      shift/modifier keys.
+      @param keysym if nonzero, the numeric value corresponding to the X Keysym of the key for which 
+      notification is requested.  Note that the presence of active modifiers will affect
+      whether notification for key events requested via &quot;keysym&quot; specification takes place, 
+      since the keysym depends on the modifier state for most keys.
+      @param keystring if non-NULL, the string value of the inserted characters if the corresponding
+      key event has ::KeyEvent:is_text set to \c True, or the string representing the
+      'name' of the key.  On X11 systems, the string 'name' of non-printing keysyms corresponds
+      to the values in &quot;keysymdef.h&quot; as provided by Xlib, with the leading &quot;XK_&quot; stripped off.</p>
+  </tp:docstring>
+  <tp:member type="i" tp:name="keycode"/>
+  <tp:member type="i" tp:name="keysym"/>
+  <tp:member type="s" tp:name="keystring"/>
+  <tp:member type="i" tp:name="unused"/>
+</tp:struct>
+<interface name="org.freedesktop.atspi.DeviceEventListener">
+  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+    <p>This interface should be implemented by AT-SPI clients who wish to 
+      make use of the DeviceEventController to receive device event notifications.
+      DeviceEvents include keyboard events and mouse button/motion events.</p>
+  </tp:docstring>
+  <method name="notifyEvent">
+    <tp:docstring>
+      Notify an interested DeviceEventListener that a DeviceEvent has occurred.
+    </tp:docstring>
+    <arg direction="in" name="event" type="(uinnisb)" tp:type="DeviceEvent"/>
+    <arg direction="out" type="b" tp:type="boolean">
+    <tp:docstring>
+      \c True if the recipient/consumer wishes to consume the event, i.e.prevent it from being delivered to the desktop, \c False if the event should continue to be delivered as normal.
+    </tp:docstring>
+    </arg>
+  </method>
+</interface>
+<interface name="org.freedesktop.atspi.DeviceEventController">
+  <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+    <p>The interface via which clients request notification of device events, and
+      through which device events may be simulated.</p>
+  </tp:docstring>
+  <method name="registerKeystrokeListener">
+    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+      <p>Register to intercept keyboard events, and either pass them on or
+        consume them.     </p>
+    </tp:docstring>
+    <arg direction="in" name="listener" type="o" tp:type="DeviceEventListener">
+    <tp:docstring>
+      a DeviceEventListener which will intercept key events.
+    </tp:docstring>
+    </arg>
+    <arg direction="in" name="keys" type="a(iisi)" tp:type="KeySet">
+    <tp:docstring>
+      a KeySet indicating which keys to intercept, or KEYSET_ALL_KEYS.
+    </tp:docstring>
+    </arg>
+    <arg direction="in" name="mask" type="u" tp:type="ControllerEventMask">
+    <tp:docstring>
+      a ControllerEventMask filtering the intercepted key events.
+    </tp:docstring>
+    </arg>
+    <arg direction="in" name="type" type="au" tp:type="KeyEventTypeSeq">
+    <tp:docstring>
+      a KeyEventTypeSeq that may created by ORing event types together.
+    </tp:docstring>
+    </arg>
+    <arg direction="in" name="mode" type="(bbb)" tp:type="EventListenerMode">
+    <tp:docstring>
+      an EventListenerMode indicating whether the listener should receive the events synchronously, potentially consuming them,or just be notified asynchronously of those events that havebeen generated.@note Some platforms have limited support for global, preemptive EventListenerMode.Such a registration may fail if another client already has priority for preemptiveaccess to one or more of the members of the KeySet.  AT consumers have the optionof re-trying the request without the global flag, or without the preemptive flag,or of re-trying with a different KeySet.  The best support for pre-emptiveglobal keyboard listeners is provided on platforms whose Xserver implementationprovides the XEvIE extension.
+    </tp:docstring>
+    </arg>
+    <arg direction="out" type="b" tp:type="boolean">
+    <tp:docstring>
+      \c True if the DeviceEventListener was successfully registeredfor the requested KeySet, ControllerEventMask, event types, and EventListenerMode; otherwise returns \c False.
+    </tp:docstring>
+    </arg>
+  </method>
+  <method name="deregisterKeystrokeListener">
+    <tp:docstring>
+      De-register a previously registered keyboard eventlistener.
+    </tp:docstring>
+    <arg direction="in" name="listener" type="o" tp:type="DeviceEventListener">
+    <tp:docstring>
+      a DeviceEventListener which will intercept key events.
+    </tp:docstring>
+    </arg>
+    <arg direction="in" name="keys" type="a(iisi)" tp:type="KeySet">
+    <tp:docstring>
+      a KeySet indicating which keys to intercept, or KEYSET_ALL_KEYS.
+    </tp:docstring>
+    </arg>
+    <arg direction="in" name="mask" type="u" tp:type="ControllerEventMask">
+    <tp:docstring>
+      a ControllerEventMask filtering the intercepted key events.
+    </tp:docstring>
+    </arg>
+    <arg direction="in" name="type" type="au" tp:type="KeyEventTypeSeq">
+    <tp:docstring>
+      an EventType mask that may created by ORing event types together.
+    </tp:docstring>
+    </arg>
+  </method>
+  <method name="registerDeviceEventListener">
+    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+      <p>Register to intercept events, and either pass them on or
+        consume them. To listen to keyboard events use registerKeystrokeListener
+        instead.</p>
+    </tp:docstring>
+    <arg direction="in" name="listener" type="o" tp:type="DeviceEventListener">
+    <tp:docstring>
+      a DeviceEventListener which will intercept events.
+    </tp:docstring>
+    </arg>
+    <arg direction="in" name="types" type="u" tp:type="EventTypeSeq">
+    <tp:docstring>
+      an EventTypeSeq indicating which event types to listen for.
+    </tp:docstring>
+    </arg>
+    <arg direction="out" type="b" tp:type="boolean">
+    <tp:docstring>
+      \c True if successful, \c False if not
+    </tp:docstring>
+    </arg>
+  </method>
+  <method name="deregisterDeviceEventListener">
+    <tp:docstring>
+      De-register a previously registered keyboard eventlistener.
+    </tp:docstring>
+    <arg direction="in" name="listener" type="o" tp:type="DeviceEventListener">
+    <tp:docstring>
+      a DeviceEventListener which will intercept events.
+    </tp:docstring>
+    </arg>
+    <arg direction="in" name="types" type="u" tp:type="EventTypeSeq">
+    <tp:docstring>
+      an EventTypeSeq indicating which event types to stoplistening for.
+    </tp:docstring>
+    </arg>
+  </method>
+  <method name="notifyListenersSync">
+    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+      <p>Notify the Registry instance that a device event has taken place, and
+        allow pre-emptive listeners the opportunity to 'consume' the event
+        and thus prevent its further issuance/forwarding.  This is the 
+        method used by accessibility bridges to forward &quot;toolkit dependent&quot;
+        device events to the Registry from the application's process space.    </p>
+
+      <p>@note AT clients do not normally need to use this method, it is intended for use
+        by toolkit bridges and special-purpose applications.    </p>
+    </tp:docstring>
+    <arg direction="in" name="event" type="(uinnisb)" tp:type="DeviceEvent"/>
+    <arg direction="out" type="b" tp:type="boolean">
+    <tp:docstring>
+      \c True if the event was consumed by a (pre-emptive) listener,\c False if not (in which case the device event will be forwardedas normal to any application which would normally receive it, e.g.the currently active application in the case of mouse or keyboard events).
+    </tp:docstring>
+    </arg>
+  </method>
+  <method name="notifyListenersAsync">
+    <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+      <p>Notify the Registry instance that a device event has taken place in
+        an asynchronous manner.  This is the 
+        method used by accessibility bridges to forward &quot;toolkit dependent&quot;
+        device events to the Registry from the application's process space.
+        If the event in question is potentially pre-emptible.
+        ::notifyListenersSync should be used instead.    </p>
+
+      <p>@note AT clients do not normally need to use this method, it is intended for use
+        by toolkit bridges and special-purpose applications.</p>
+    </tp:docstring>
+    <arg direction="in" name="event" type="(uinnisb)" tp:type="DeviceEvent"/>
+  </method>
+  <method name="generateKeyboardEvent">
+    <tp:docstring>
+      Synthesize a keyboard event.
+    </tp:docstring>
+    <arg direction="in" name="keycode" type="i">
+    <tp:docstring>
+      a long integer indicating the keycode ofthe keypress to be synthesized.
+    </tp:docstring>
+    </arg>
+    <arg direction="in" name="keystring" type="s">
+    <tp:docstring>
+      an optional UTF-8 string indicating a complexkeyboard input event.
+    </tp:docstring>
+    </arg>
+    <arg direction="in" name="type" type="u" tp:type="KeySynthType">
+    <tp:docstring>
+      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 aninternationalized or complex text input method, ora composed character).@note keycode may be truncated before beingprocessed, as keycode length may be platform-dependentand keycode ranges are generally much smaller thanCORBA_long. One or the other of keycode or keystring are generally NULL, (but not both), depending on the value of \c type.
+    </tp:docstring>
+    </arg>
+  </method>
+  <method name="generateMouseEvent">
+    <tp:docstring>
+      Synthesize a mouse event.
+    </tp:docstring>
+    <arg direction="in" name="x" type="i">
+    <tp:docstring>
+      a long integer indicating the screen x coord for the mouse event.
+    </tp:docstring>
+    </arg>
+    <arg direction="in" name="y" type="i">
+    <tp:docstring>
+      a long integer indicating the screen y coord for the mouse event.
+    </tp:docstring>
+    </arg>
+    <arg direction="in" name="eventName" type="s">
+    <tp:docstring>
+      a string indicating the type of mouse event, e.g. &quot;button1up&quot;
+    </tp:docstring>
+    </arg>
+  </method>
+</interface>
+</node>