* Copyright 2001, 2002 Ximian, Inc.
*
* This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+ * version 2.1 of the License, or (at your option) any later version.
*
* 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.
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser 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.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
*/
#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"
+#include "registry.h"
G_BEGIN_DECLS
-#define SPI_DEVICE_EVENT_CONTROLLER_TYPE (spi_device_event_controller_get_type ())
-#define SPI_DEVICE_EVENT_CONTROLLER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SPI_DEVICE_EVENT_CONTROLLER_TYPE, SpiDEController))
-#define SPI_DEVICE_EVENT_CONTROLLER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SPI_DEVICE_EVENT_CONTROLLER_TYPE, SpiDEControllerClass))
-#define SPI_IS_DEVICE_EVENT_CONTROLLER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SPI_DEVICE_EVENT_CONTROLLER_TYPE))
+#define SPI_DEVICE_EVENT_CONTROLLER_TYPE (spi_device_event_controller_get_type ())
+#define SPI_DEVICE_EVENT_CONTROLLER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SPI_DEVICE_EVENT_CONTROLLER_TYPE, SpiDEController))
+#define SPI_DEVICE_EVENT_CONTROLLER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SPI_DEVICE_EVENT_CONTROLLER_TYPE, SpiDEControllerClass))
+#define SPI_IS_DEVICE_EVENT_CONTROLLER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SPI_DEVICE_EVENT_CONTROLLER_TYPE))
#define SPI_IS_DEVICE_EVENT_CONTROLLER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SPI_DEVICE_EVENT_CONTROLLER_TYPE))
#define SPI_DEVICE_EVENT_CONTROLLER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SPI_DEVICE_EVENT_CONTROLLER_TYPE, SpiDEControllerClass))
-struct _SpiDEController {
- GObject parent;
- DBusConnection *bus;
- SpiRegistry *registry;
- GList *key_listeners;
- GList *mouse_listeners;
- GList *keygrabs_list;
- GQueue *message_queue;
- guint message_queue_idle;
- gpointer priv;
+struct _SpiDEController
+{
+ GObject parent;
+ DBusConnection *bus;
+ GList *key_listeners;
+ GList *mouse_listeners;
+ GList *keygrabs_list;
+ GQueue *message_queue;
+ guint message_queue_idle;
+
+ guint mouse_mask_state;
+ gboolean have_mouse_event_listener;
};
-typedef enum {
+typedef enum
+{
SPI_DEVICE_TYPE_KBD,
- SPI_DEVICE_TYPE_MOUSE,
SPI_DEVICE_TYPE_LAST_DEFINED
} SpiDeviceTypeCategory;
-typedef struct {
+typedef struct
+{
char *bus_name;
char *path;
SpiDeviceTypeCategory type;
gulong types;
} DEControllerListener;
-typedef struct {
+typedef struct
+{
DEControllerListener listener;
- GSList *keys;
+ GSList *keys;
Accessibility_ControllerEventMask mask;
- Accessibility_EventListenerMode *mode;
+ Accessibility_EventListenerMode *mode;
} DEControllerKeyListener;
typedef struct
gboolean fix,
guint *modmask);
- guint (*mouse_check) (SpiDEController *controller,
- gint *x,
- gint *y,
- gboolean *moved);
+ guint (*mouse_check) (SpiDEController *controller,
+ gint *x,
+ gint *y,
+ gboolean *moved);
- gboolean (*register_global_keygrabs) (SpiDEController *controller,
- DEControllerKeyListener *key_listener);
+ gboolean (*register_global_keygrabs) (SpiDEController *controller,
+ DEControllerKeyListener *key_listener);
- void (*deregister_global_keygrabs) (SpiDEController *controller,
- DEControllerKeyListener *key_listener);
+ void (*deregister_global_keygrabs) (SpiDEController *controller,
+ DEControllerKeyListener *key_listener);
gboolean (*synth_keycode_press) (SpiDEController *controller,
- guint keycode);
+ guint keycode);
gboolean (*synth_keycode_release) (SpiDEController *controller,
- guint keycode);
+ guint keycode);
gboolean (*lock_modifiers) (SpiDEController *controller,
unsigned modifiers);
Accessibility_ControllerEventMask mod_mask);
void (*emit_modifier_event) (SpiDEController *controller,
- guint prev_mask,
- guint current_mask);
+ guint prev_mask,
+ guint current_mask);
void (*generate_mouse_event) (SpiDEController *controller,
gint x,
void (*finalize) (SpiDEController *controller);
} SpiDEControllerPlat;
-typedef struct {
+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);
+GType spi_device_event_controller_get_type (void);
-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_device_event_controller_start_poll_mouse (SpiDEController *dec);
+void spi_device_event_controller_stop_poll_mouse (SpiDEController *dec);
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);
+SpiDEController *spi_registry_dec_new (DBusConnection *bus);
gboolean
-spi_controller_notify_keylisteners (SpiDEController *controller,
- Accessibility_DeviceEvent *key_event,
- dbus_bool_t is_system_global);
+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_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);
+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_ */