summaryrefslogtreecommitdiff
path: root/registryd/deviceeventcontroller.h
diff options
context:
space:
mode:
authorMike Gorse <mgorse@suse.com>2013-08-07 09:58:14 -0500
committerMike Gorse <mgorse@suse.com>2013-08-08 11:12:09 -0500
commit7ec6f416a192b7ff86d4b90fe7f405de41165342 (patch)
treed80e0aff2d65857d454a0e511c6f0d39aa40c595 /registryd/deviceeventcontroller.h
parent2e85fd3bba015d173b1cb16c718dfa2e1c1fbdcb (diff)
downloadat-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.h106
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_ */