#include <glib.h>
#include <accessible.h>
-#include "droute/droute.h"
-#include "droute/introspect-loader.h"
+#include <droute/droute.h>
+#include <droute/introspect-loader.h>
/*
* This file contains an implementation of the D-Bus introspectable interface.
* Adds the introspectable interface to the DRoute object provided
*/
void
-spi_initialize_introspectable (DRouteData *data)
+spi_initialize_introspectable (DRouteData *data, DRouteGetDatumFunction verify_object)
{
droute_add_interface (data, "org.freedesktop.atspi.Introspectable",
methods, NULL,
- (DRouteGetDatumFunction) spi_dbus_get_path, NULL);
+ verify_object, NULL);
};
goto oom;
dbus_message_iter_open_container (&iter_struct, DBUS_TYPE_ARRAY, "s",
&iter_sub_array);
- for (l = data->interfaces; l; l = g_slist_next (l))
+ if (data) for (l = data->interfaces; l; l = g_slist_next (l))
{
DRouteInterface *iface_def = (DRouteInterface *) l->data;
void *datum = NULL;
#include "deviceeventcontroller.h"
#include "reentrant-list.h"
+#include "libspi/keymasks.h"
KeySym ucs2keysym (long ucs);
long keysym2ucs(KeySym keysym);
/* Our parent GObject type */
#define PARENT_TYPE G_OBJECT_TYPE
+<<<<<<< HEAD:registryd/registry.c
+=======
+
+>>>>>>> 6d509d490749c6bac3149a5ec45862352ffcf290:registryd/registry.c
int _dbg = 0;
<!-- Accessibility interfaces and subinterfaces -->
-<xi:include href="Accessibility_Accessible.xml"/>
-<xi:include href="Accessibility_Action.xml"/>
-<xi:include href="Accessibility_Component.xml"/>
-<xi:include href="Accessibility_Document.xml"/>
-<xi:include href="Accessibility_Hyperlink.xml"/>
-<xi:include href="Accessibility_Image.xml"/>
-<xi:include href="Accessibility_Selection.xml"/>
-<xi:include href="Accessibility_StreamableContent.xml"/>
-<xi:include href="Accessibility_Table.xml"/>
-<xi:include href="Accessibility_Text.xml"/>
-<xi:include href="Accessibility_Value.xml"/>
+<xi:include href="org.freedesktop.atspi.Accessible.xml"/>
+<xi:include href="org.freedesktop.atspi.Action.xml"/>
+<xi:include href="org.freedesktop.atspi.Component.xml"/>
+<xi:include href="org.freedesktop.atspi.Document.xml"/>
+<xi:include href="org.freedesktop.atspi.Hyperlink.xml"/>
+<xi:include href="org.freedesktop.atspi.Image.xml"/>
+<xi:include href="org.freedesktop.atspi.Selection.xml"/>
+<xi:include href="org.freedesktop.atspi.StreamableContent.xml"/>
+<xi:include href="org.freedesktop.atspi.Table.xml"/>
+<xi:include href="org.freedesktop.atspi.Text.xml"/>
+<xi:include href="org.freedesktop.atspi.Tree.xml"/>
+<xi:include href="org.freedesktop.atspi.Value.xml"/>
<!-- Interfaces derived from Accessibility::Text -->
-<xi:include href="Accessibility_EditableText.xml"/>
-<xi:include href="Accessibility_Hypertext.xml"/>
+<xi:include href="org.freedesktop.atspi.EditableText.xml"/>
+<xi:include href="org.freedesktop.atspi.Hypertext.xml"/>
<xi:include href="Accessibility_State.xml"/>
<!-- Utility interfaces and interfaces derived from Accessibility::Accessible -->
-<xi:include href="Accessibility_Application.xml"/>
-<xi:include href="Accessibility_Event.xml"/>
-<xi:include href="Accessibility_Registry.xml"/>
+<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.DeviceEventController.xml"/>
+<xi:include href="org.freedesktop.atspi.DeviceEventListener.xml"/>
<xi:include href="Accessibility_Role.xml"/>
-<xi:include href="Accessibility_LoginHelper.xml"/>
-<xi:include href="Accessibility_Selector.xml"/>
+<xi:include href="org.freedesktop.atspi.LoginHelper.xml"/>
+<xi:include href="org.freedesktop.atspi.Selector.xml"/>
</tp:spec>
+++ /dev/null
-<node name="/node" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
-
-<tp:title>AT-SPI - Assistive Technology Service Provider Interface </tp:title>
-<tp:copyright>Copyright 2008 Novell, Inc.</tp:copyright>
-<tp:copyright>Copyright 2001, 2002 Sun Microsystems Inc.</tp:copyright>
-<tp:license xmlns="http://www.w3.org/1999/xhtml">
- <p>This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.</p>
-
- <p>This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.</p>
-
- <p>You should have received a copy of the GNU Library General Public
- License along with this library; if not, write to the
- Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA.</p>
-</tp:license>
-<tp:struct name="EventDetails">
- <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- <p>A struct encapsulating detailed information about an Event.
- This struct supercedes the previous use of the 'any' field
- in EventDetails; the content previously stored in Event::any_data
- is now stored in EventDetails::any_data, and Event::any_data
- points to an instance of the EventDetails structure, if
- the object's implementation supports event detail reporting,
- otherwise Event::any_data contains CORBA_OBJECT_NIL. </p>
-
- <p>@since AT-SPI 1.7.0</p>
- </tp:docstring>
- <tp:member type="o" tp:name="host_application"/>
- <tp:member type="u" tp:name="source_role"/>
- <tp:member type="s" tp:name="source_name"/>
- <tp:member type="v" tp:name="any_data"/>
-</tp:struct>
-<tp:struct name="Event">
- <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- <p>A structure encapsulating information about an event
- for which notification was requested. Usually such notification
- is requested via a call to Registry::registerGlobalEventListener.
- The structure contains a colon-delimited string indicating the event
- type, a reference to the generating Accessible, two detail fields whose
- interpretation is event-type-specific, and a final field containing
- event-type-specific data. </p>
-
- <p>@note Since AT-SPI 1.7.0 the 'any' field contains an EventDetails
- struct, which encapsulates additional information about the event
- and its generating object.</p>
- </tp:docstring>
- <tp:member type="s" tp:name="type">
- <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- <p>A colon-delimited string indicating the type of the event.
- The string can be interpreted as
- \c class:type:subtype
- For instance ¨object:text-changed:insert¨ is an event
- from the 'Object' class, which corresponds to Accessible objects
- general, the type of the event is a ¨text-changed¨ event (i.e. a change in the
- content of an implementor of the Text interface), and the
- specific subtype of the change is an insertion event. </p>
-
- <p>Event classes include the following:
- \li focus: an object has received keyboard focus. This event has no type or subtype.
- \li window: a toplevel window has changed state.
- \li object: an object (i.e. Accessible) has undergone some change in state, content,
- or hierarchy
- \li document:a change to a document's content has occurred, or its
- content loading status has changed.
- \li mouse: an event originating from the pointing device. Rarely used;
- in most cases clients will wish to register for pointer events via
- the DeviceEventController::registerDeviceEvent method instead.
- \li keyboard: an event indicating that the keyboard state (for example, the
- modifier state) has changed significantly.
- "keyboard:" events are not sent for individual keystrokes except as
- a side-effect of certain keys, for instance modifier keys.
- Clients interested in key events should listen for DeviceEvents
- via DeviceEventController::registerKeystrokeListener instead. </p>
-
- <p>@note For more information on specific event types, see the documentation for
- each of the individual interfaces supported by some Accessible objects. </p>
-
- <p>@see Accessible, Component, Image, Selection, Table, Text, Value.</p>
- </tp:docstring>
- </tp:member>
- <tp:member type="o" tp:name="source">
- <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- <p>The Accessible object which is the source of the event. The source object is the object
- to which the change inferred by the event emission occurs; for instance,
- the object emitting a ¨object:parent-changed¨ event is the child, not the parent.
- Likewise, the event source of an ¨object:children-changed:insert¨ event is the parent,
- not the inserted child.</p>
- </tp:docstring>
- </tp:member>
- <tp:member type="i" tp:name="detail1">
- <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- <p>An integer whose meaning is event type dependent. It may indicate the offset of
- text being inserted, in the case of ¨object:text-changed:insert¨, or the index of a
- newly added child in the case of ¨object:children-changed:add¨.
- @note since most AT-SPI clients react to events via an asynchronous queue, for
- performance reasons, this field may be of limited utility unless the client maintains
- a large client-side cache of the hierarchy and contained data. This is because by the time
- such an event is asynchronously processed, the state of the originating object may have
- changed. In other words, the data in the detail1 member is not state-coherent outside
- of the event handler. More useful results are gotten by examination of the 'any_data' field.</p>
- </tp:docstring>
- </tp:member>
- <tp:member type="i" tp:name="detail2">
- <tp:docstring>
- see description of detail2
- </tp:docstring>
- </tp:member>
- <tp:member type="v" tp:name="any_data">
- <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- <p>A generic storage location for event-type-specific data which provides more specific
- information about the event; for instance, in AT-SPI versions prior to 1.7.0,
- in the case of ¨object:text-changed:insert¨ events, this field contains a string
- indicating the inserted text. </p>
-
- <p>@note Since AT-SPI 1.7.0, the data contained in this field is an EventDetails struct.</p>
- </tp:docstring>
- </tp:member>
-</tp:struct>
-<interface name="org.freedesktop.atspi.EventListener">
- <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- <p>A generic interface implemented by objects for the
- receipt of event notifications. EventListener is the interface from which
- Accessibility::Registry is derived, and via which clients of the Registry
- receive notification of changes to an application's user interface and content.</p>
- </tp:docstring>
- <method name="notifyEvent">
- <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
- <p>Synchronously notify an EventListener that an event has occurred, by passing it an
- Event struct.
- @param e The Event about which the listener is being notified.</p>
- </tp:docstring>
- <arg direction="in" name="e" type="(soiiv)" tp:type="Event"/>
- </method>
- <method name="unImplemented_">
- <tp:docstring>
- \cond
- </tp:docstring>
- </method>
- <method name="unImplemented2_">
- </method>
- <method name="unImplemented3_">
- </method>
- <method name="unImplemented4_">
- </method>
-</interface>
-</node>
--- /dev/null
+<node name="/node" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
+
+<tp:title>AT-SPI - Assistive Technology Service Provider Interface </tp:title>
+<tp:copyright>Copyright 2008 Novell, Inc.</tp:copyright>
+<tp:copyright>Copyright 2001 Sun Microsystems Inc.</tp:copyright>
+<tp:license xmlns="http://www.w3.org/1999/xhtml">
+ <p>This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.</p>
+
+ <p>This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.</p>
+
+ <p>You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the
+ Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.</p>
+</tp:license>
+<tp:enum name="KeyEventType" type="u">
+ <tp:docstring>
+ Deprecated, DO NOT USE!
+ </tp:docstring>
+ <tp:enumvalue suffix="KEY_PRESSED"/>
+ <tp:enumvalue suffix="KEY_RELEASED" value="1"/>
+</tp:enum>
+<tp:enum name="EventType" type="u">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>Used to specify the event types of interest to an EventListener, or
+ to identify the type of an event for which notification has been sent.
+ @see EventTypeSeq, DeviceEvent::type</p>
+ </tp:docstring>
+ <tp:enumvalue suffix="KEY_PRESSED_EVENT">
+ <tp:docstring>
+ < key on a keyboard device was pressed.
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="KEY_RELEASED_EVENT" value="1">
+ <tp:docstring>
+ < key on a keyboard device was released.
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="BUTTON_PRESSED_EVENT" value="2">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>< button on a non-keyboard human interface device
+ (HID) was pressed </p>
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="BUTTON_RELEASED_EVENT" value="3">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>< button on a non-keyboard human interface device
+ (HID) was pressed </p>
+ </tp:docstring>
+ </tp:enumvalue>
+</tp:enum>
+<tp:enum name="KeySynthType" type="u">
+ <tp:docstring>
+ Used when synthesizing keyboard input via DeviceEventController:generateKeyboardEvent.
+ </tp:docstring>
+ <tp:enumvalue suffix="KEY_PRESS">
+ <tp:docstring>
+ emulate the pressing of a hardware keyboard key.
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="KEY_RELEASE" value="1">
+ <tp:docstring>
+ emulate the release of a hardware keyboard key.
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="KEY_PRESSRELEASE" value="2">
+ <tp:docstring>
+ a hardware keyboard key is pressed and immediately released.
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="KEY_SYM" value="3">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>a symbolic key event is generated, without specifying a hardware key.
+ @note if the keysym is not present in the current keyboard map,
+ the DeviceEventController instance has a limited ability to generate
+ such keysyms on-the-fly. Reliability of generateKeyboardEvent calls
+ using out-of-keymap keysyms will vary from system to system, and on the
+ number of different out-of-keymap being generated in quick succession.
+ In practice this is rarely significant, since the keysyms of interest to
+ AT clients and keyboard emulators are usually part of the current keymap, i.e.
+ present on the system keyboard for the current locale (even if a physical
+ hardware keyboard is not connected.</p>
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="KEY_STRING" value="4">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>a string is converted to its equivalent keyboard events and emitted.
+ If the string consists of complex character or composed characters
+ which are not in the current keymap, string emission is subject to the
+ out-of-keymap limitations described for KeySynthType::KEY_SYM.
+ In practice this limitation primarily effects Chinese and Japanese locales.</p>
+ </tp:docstring>
+ </tp:enumvalue>
+</tp:enum>
+<tp:enum name="ModifierType" type="u">
+ <tp:enumvalue suffix="MODIFIER_SHIFT">
+ <tp:docstring>
+ The left or right 'Shift' key
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="MODIFIER_SHIFTLOCK" value="1">
+ <tp:docstring>
+ The ShiftLock or CapsLock key
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="MODIFIER_CONTROL" value="2">
+ <tp:docstring>
+ 'Control'/'Ctrl'
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="MODIFIER_ALT" value="3">
+ <tp:docstring>
+ The Alt key (as opposed to AltGr)
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="MODIFIER_META" value="4">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>depending on the platform this may map to 'Window', 'Function', 'Meta',
+ 'Menu', or 'NumLock'.
+ Such 'Meta keys' will map to one of META, META2, META3.
+ On X Windows platforms these META values map to
+ the modifier masks Mod1Mask, Mod2Mask, Mod3Mask, e.g. an event having
+ ModifierType::MODIFIER_META2 means that the 'Mod2Mask' bit is
+ set in the corresponding XEvent.</p>
+ </tp:docstring>
+ </tp:enumvalue>
+ <tp:enumvalue suffix="MODIFIER_META2" value="5"/>
+ <tp:enumvalue suffix="MODIFIER_META3" value="6"/>
+ <tp:enumvalue suffix="MODIFIER_NUMLOCK" value="7">
+ <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+ <p>A symbolic meta key name that is mapped by AT-SPI to the
+ appropriate META value, for the convenience of the client.</p>
+ </tp:docstring>
+ </tp:enumvalue>
+</tp:enum>
+<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>< 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>< If \c True, specifies that
+ Listener is allowed to pre-empt the delivery of the event,
+ effectively "consuming" 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>< 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 "system keygrab" (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
+ "system global key shortcuts" 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>
+ < 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>< 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>< 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>< an unsigned short int consisting of zero or more of the following
+ values OR'ed together:
+ \li \c 1<<::MODIFIER_SHIFT (=1, corresponds to Xlib's ShiftMask)
+ \li \c 1<<::MODIFIER_SHIFTLOCK (=2, corresponds to Xlib's LockMask)
+ \li \c 1<<::MODIFIER_CONTROL (=4, corresponds to Xlib's ControlMask)
+ \li \c 1<<::MODIFIER_ALT (=8, corresponds to Xlib's Mod1Mask)
+ \li \c 1<<::MODIFIER_META (=16, corresponds to Xlib's Mod2Mask)
+ \li \c 1<<::MODIFIER_META2 (=32, corresponds to Xlib's Mod3Mask)
+ \li \c 1<<::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>< 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>< 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>< \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 "as-is" 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 "keysym" 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 "keysymdef.h" as provided by Xlib, with the leading "XK_" 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>
+</node>
-XML= \
+XML_SPEC= \
Accessibility.xml \
- Accessibility_Accessible.xml \
- Accessibility_Action.xml \
- Accessibility_Application.xml \
- Accessibility_Component.xml \
- Accessibility_Document.xml \
- Accessibility_EditableText.xml \
- Accessibility_Event.xml \
- Accessibility_Hyperlink.xml \
- Accessibility_Hypertext.xml \
- Accessibility_Image.xml \
- Accessibility_LoginHelper.xml \
- Accessibility_Registry.xml \
+ org.freedesktop.atspi.Accessible.xml \
+ org.freedesktop.atspi.Action.xml \
+ org.freedesktop.atspi.Application.xml \
+ org.freedesktop.atspi.Component.xml \
+ org.freedesktop.atspi.Document.xml \
+ org.freedesktop.atspi.EditableText.xml \
+ org.freedesktop.atspi.Hyperlink.xml \
+ org.freedesktop.atspi.Hypertext.xml \
+ org.freedesktop.atspi.Image.xml \
+ org.freedesktop.atspi.LoginHelper.xml \
+ Accessibility_Registry_Common.xml \
+ org.freedesktop.atspi.Registry.xml \
+ org.freedesktop.atspi.DeviceEventController.xml \
+ org.freedesktop.atspi.DeviceEventListener.xml \
Accessibility_Role.xml \
- Accessibility_Selection.xml \
- Accessibility_Selector.xml \
+ org.freedesktop.atspi.Selection.xml \
+ org.freedesktop.atspi.Selector.xml \
Accessibility_State.xml \
- Accessibility_StreamableContent.xml \
- Accessibility_Table.xml \
- Accessibility_Text.xml \
- Accessibility_Value.xml
+ org.freedesktop.atspi.StreamableContent.xml \
+ org.freedesktop.atspi.Table.xml \
+ org.freedesktop.atspi.Text.xml \
+ org.freedesktop.atspi.Tree.xml \
+ org.freedesktop.atspi.Value.xml
-spec.xml: $(XML)
+spec.xml: $(XML_SPEC)
xsltproc --xinclude $(top_srcdir)/tools/identity.xsl $< >$@
-EXTRA_DIST = $(XML)
+EXTRA_DIST = $(XML_SPEC)
BUILT_SOURCES = spec.xml
CLEANFILES = spec.xml
+
+INTROSPECT_FILES = $(addprefix introspection/,$(patsubst %.xml,%,$(filter org.freedesktop.atspi%,$(XML_SPEC))))
+
+$(INTROSPECT_FILES): introspection/%: %.xml ../tools/spec-to-introspect.xsl
+ xsltproc ../tools/spec-to-introspect.xsl $< |sed -e 's@xmlns:tp="http://telepathy\.freedesktop\.org/wiki/DbusSpec.extensions-v0"@@g' >$@
+
+introspectdir = $(pkgdatadir)/dbus
+dist_introspect_DATA = $(INTROSPECT_FILES)