diff options
author | Mike Gorse <mgorse@suse.com> | 2013-08-07 09:58:14 -0500 |
---|---|---|
committer | Mike Gorse <mgorse@suse.com> | 2013-08-08 11:12:09 -0500 |
commit | 7ec6f416a192b7ff86d4b90fe7f405de41165342 (patch) | |
tree | d80e0aff2d65857d454a0e511c6f0d39aa40c595 /registryd/deviceeventcontroller.h | |
parent | 2e85fd3bba015d173b1cb16c718dfa2e1c1fbdcb (diff) | |
download | at-spi2-core-7ec6f416a192b7ff86d4b90fe7f405de41165342.tar.gz |
Allow building without X11
Separate out X11-specific code in preparation for Wayland support and to
avoid calling X under Mac OS. It should now be possible to build without
X, although keyboard and mouse-related functionality will likely not
work.
https://bugzilla.gnome.org/show_bug.cgi?id=682199
Diffstat (limited to 'registryd/deviceeventcontroller.h')
-rw-r--r-- | registryd/deviceeventcontroller.h | 106 |
1 files changed, 105 insertions, 1 deletions
diff --git a/registryd/deviceeventcontroller.h b/registryd/deviceeventcontroller.h index 0678d7c4..9efbee83 100644 --- a/registryd/deviceeventcontroller.h +++ b/registryd/deviceeventcontroller.h @@ -24,12 +24,15 @@ #ifndef SPI_DEVICE_EVENT_CONTROLLER_H_ #define SPI_DEVICE_EVENT_CONTROLLER_H_ +#ifdef HAVE_X11 #include <X11/Xlib.h> +#endif #include <dbus/dbus.h> typedef struct _SpiDEController SpiDEController; #include "registry.h" +#include "de-types.h" G_BEGIN_DECLS @@ -47,25 +50,126 @@ struct _SpiDEController { GList *key_listeners; GList *mouse_listeners; GList *keygrabs_list; - Display *xevie_display; GQueue *message_queue; guint message_queue_idle; + gpointer priv; }; +typedef enum { + SPI_DEVICE_TYPE_KBD, + SPI_DEVICE_TYPE_MOUSE, + SPI_DEVICE_TYPE_LAST_DEFINED +} SpiDeviceTypeCategory; + +typedef struct { + char *bus_name; + char *path; + SpiDeviceTypeCategory type; + gulong types; +} DEControllerListener; + +typedef struct { + DEControllerListener listener; + + GSList *keys; + Accessibility_ControllerEventMask mask; + Accessibility_EventListenerMode *mode; +} DEControllerKeyListener; + +typedef struct +{ + gint (*get_keycode) (SpiDEController *controller, + gint keysym, + gchar *key_str, + gboolean fix, + guint *modmask); + + guint (*mouse_check) (SpiDEController *controller, + gint *x, + gint *y, + gboolean *moved); + + gboolean (*register_global_keygrabs) (SpiDEController *controller, + DEControllerKeyListener *key_listener); + + void (*deregister_global_keygrabs) (SpiDEController *controller, + DEControllerKeyListener *key_listener); + + gboolean (*synth_keycode_press) (SpiDEController *controller, + guint keycode); + + gboolean (*synth_keycode_release) (SpiDEController *controller, + guint keycode); + + gboolean (*lock_modifiers) (SpiDEController *controller, + unsigned modifiers); + + gboolean (*unlock_modifiers) (SpiDEController *controller, + unsigned modifiers); + + gboolean (*synth_keystring) (SpiDEController *controller, + guint synth_type, + gint keycode, + const char *keystring); + + gboolean (*grab_key) (SpiDEController *controller, + guint key_val, + Accessibility_ControllerEventMask mod_mask); + + void (*ungrab_key) (SpiDEController *controller, + guint key_val, + Accessibility_ControllerEventMask mod_mask); + + void (*emit_modifier_event) (SpiDEController *controller, + guint prev_mask, + guint current_mask); + + void (*generate_mouse_event) (SpiDEController *controller, + gint x, + gint y, + const char *eventName); + + void (*init) (SpiDEController *controller); + void (*finalize) (SpiDEController *controller); +} SpiDEControllerPlat; + typedef struct { GObjectClass parent_class; + SpiDEControllerPlat plat; } SpiDEControllerClass; GType spi_device_event_controller_get_type (void); SpiDEController *spi_device_event_controller_new (SpiRegistry *registry, DBusConnection *bus); +gboolean spi_clear_error_state (void); + void spi_device_event_controller_start_poll_mouse (SpiRegistry *registry); void spi_device_event_controller_stop_poll_mouse (void); void spi_remove_device_listeners (SpiDEController *controller, const char *bus_name); SpiDEController *spi_registry_dec_new (SpiRegistry *reg, DBusConnection *bus); + +gboolean +spi_controller_notify_mouselisteners (SpiDEController *controller, + const Accessibility_DeviceEvent *event); + +gboolean +spi_controller_notify_keylisteners (SpiDEController *controller, + Accessibility_DeviceEvent *key_event, + dbus_bool_t is_system_global); + +gboolean spi_controller_update_key_grabs (SpiDEController *controller, + Accessibility_DeviceEvent *recv); + +gboolean spi_dec_synth_keysym (SpiDEController *controller, long keysym); + +void spi_dec_dbus_emit(SpiDEController *controller, const char *interface, const char *name, const char *minor, int a1, int a2); + +#ifdef HAVE_X11 +void spi_dec_setup_x11 (SpiDEControllerClass *klass); +#endif G_END_DECLS #endif /* DEVICEEVENTCONTROLLER_H_ */ |