/* deviceeventcontroller.c: implement the DeviceEventController interface */
-#include <config.h>
+#include "config.h"
#undef SPI_XKB_DEBUG
#undef SPI_DEBUG
#include <dbus/dbus.h>
#include "paths.h"
-#include "keymasks.h"
#include "de-types.h"
#include "de-marshaller.h"
+#include "keymasks.h"
+
+#ifdef HAVE_X11
#include "display.h"
#include "event-source.h"
+#endif
#include "deviceeventcontroller.h"
#include "reentrant-list.h"
#include "introspection.h"
-long ucs2keysym (long ucs);
-long keysym2ucs(long keysym);
-
#define CHECK_RELEASE_DELAY 20
#define BIT(c, x) (c[x/8]&(1<<(x%8)))
static SpiDEController *saved_controller;
gint y;
};
typedef struct _SpiPoint SpiPoint;
+
static unsigned int mouse_mask_state = 0;
static unsigned int key_modifier_mask =
- Mod1Mask | Mod2Mask | Mod3Mask | Mod4Mask | Mod5Mask | ShiftMask | LockMask | ControlMask | SPI_KEYMASK_NUMLOCK;
-static unsigned int _numlock_physical_mask = Mod2Mask; /* a guess, will be reset */
+ SPI_KEYMASK_MOD1 | SPI_KEYMASK_MOD2 | SPI_KEYMASK_MOD3 | SPI_KEYMASK_MOD4 |
+ SPI_KEYMASK_MOD5 | SPI_KEYMASK_SHIFT | SPI_KEYMASK_SHIFTLOCK |
+ SPI_KEYMASK_CONTROL | SPI_KEYMASK_NUMLOCK;
+static unsigned int _numlock_physical_mask = SPI_KEYMASK_MOD2; /* a guess, will be reset */
static gboolean have_mouse_listener = FALSE;
static gboolean have_mouse_event_listener = FALSE;
SpiDEControllerClass *klass;
klass = SPI_DEVICE_EVENT_CONTROLLER_GET_CLASS (controller);
if (klass->plat.emit_modifier_event)
- return klass->plat.emit_modifier_event (controller, prev_mask, current_mask);
+ klass->plat.emit_modifier_event (controller, prev_mask, current_mask);
}
static void
SpiDEControllerClass *klass;
klass = SPI_DEVICE_EVENT_CONTROLLER_GET_CLASS (controller);
if (klass->plat.generate_mouse_event)
- return klass->plat.generate_mouse_event (controller, x, y, eventName);
+ klass->plat.generate_mouse_event (controller, x, y, eventName);
}
DBusMessage *
return TRUE;
else
{
- g_timeout_add (20, spi_dec_poll_mouse_moving, data);
+ guint id;
+ id = g_timeout_add (20, spi_dec_poll_mouse_moving, data);
+ g_source_set_name_by_id (id, "[at-spi2-core] spi_dec_poll_mouse_moving");
return FALSE;
}
}
return TRUE;
else
{
- g_timeout_add (100, spi_dec_poll_mouse_idle, data);
+ guint id;
+ id = g_timeout_add (100, spi_dec_poll_mouse_idle, data);
+ g_source_set_name_by_id (id, "[at-spi2-core] check_release");
return FALSE;
}
}
grab_mask.mod_mask = key_listener->mask;
if (g_slist_length (key_listener->keys) == 0) /* special case means AnyKey/AllKeys */
{
- grab_mask.key_val = AnyKey;
+ grab_mask.key_val = 0L; /* AnyKey */
#ifdef SPI_DEBUG
fprintf (stderr, "AnyKey grab!");
#endif
if (!have_mouse_listener)
{
have_mouse_listener = TRUE;
- if (!have_mouse_event_listener)
- g_timeout_add (100, spi_dec_poll_mouse_idle, controller);
+ if (!have_mouse_event_listener) {
+ guint id;
+ id = g_timeout_add (100, spi_dec_poll_mouse_idle, controller);
+ g_source_set_name_by_id (id, "[at-spi2-core] spi_dec_poll_mouse_idle");
+ }
}
spi_dbus_add_disconnect_match (controller->bus, listener->bus_name);
notify_mouse_listener (controller, listener, TRUE);
{
const char *dest = dbus_message_get_destination (message);
GSList *l;
+ dbus_bool_t result;
gchar *bus_name_dup;
dbus_message_ref (message);
dbus_pending_call_set_notify (pending, reset_hung_process, message,
"Ping");
if (!message)
return NULL;
- dbus_connection_send_with_reply (bus, message, &pending, -1);
+ result = dbus_connection_send_with_reply (bus, message, &pending, -1);
dbus_message_unref (message);
- if (!pending)
+ if (!result || !pending)
return NULL;
bus_name_dup = g_strdup (dest);
dbus_pending_call_set_notify (pending, reset_hung_process_from_ping,
Accessibility_KeyDefinition *kd = (Accessibility_KeyDefinition *)g_malloc(sizeof(Accessibility_KeyDefinition));
if (!spi_dbus_message_iter_get_struct(&iter_array, DBUS_TYPE_INT32, &kd->keycode, DBUS_TYPE_INT32, &kd->keysym, DBUS_TYPE_STRING, &keystring, DBUS_TYPE_INVALID))
{
+ g_free (kd);
break;
}
kd->keystring = g_strdup (keystring);
if (!spi_dbus_message_iter_get_struct(&iter_array, DBUS_TYPE_INT32, &kd->keycode, DBUS_TYPE_INT32, &kd->keysym, DBUS_TYPE_STRING, &keystring, DBUS_TYPE_INVALID))
{
+ g_free(kd);
break;
}
kd->keystring = g_strdup (keystring);
* in our arg list; it can contain either
* a keycode or a keysym.
*/
- spi_dec_synth_keysym (controller, (KeySym) keycode);
+ spi_dec_synth_keysym (controller, keycode);
break;
case Accessibility_KEY_STRING:
if (!spi_dec_plat_synth_keystring (controller, synth_type, keycode, keystring))
fprintf (stderr, "Keystring synthesis failure, string=%s\n",
keystring);
break;
+ case Accessibility_KEY_LOCKMODIFIERS:
+ spi_dec_plat_lock_modifiers (controller, keycode);
+ break;
+ case Accessibility_KEY_UNLOCKMODIFIERS:
+ spi_dec_plat_unlock_modifiers (controller, keycode);
+ break;
}
reply = dbus_message_new_method_return (message);
return reply;
dbus_message_ref (message);
g_queue_push_tail (saved_controller->message_queue, message);
g_queue_push_tail (saved_controller->message_queue, user_data);
- if (!saved_controller->message_queue_idle)
+ if (!saved_controller->message_queue_idle) {
saved_controller->message_queue_idle = g_idle_add (message_queue_dispatch, NULL);
+ g_source_set_name_by_id (saved_controller->message_queue_idle, "[at-spi2-core] message_queue_dispatch");
+ }
return DBUS_HANDLER_RESULT_HANDLED;
}
if (!have_mouse_event_listener)
{
have_mouse_event_listener = TRUE;
- if (!have_mouse_listener)
- g_timeout_add (100, spi_dec_poll_mouse_idle, registry->dec);
+ if (!have_mouse_listener) {
+ guint id;
+ id = g_timeout_add (100, spi_dec_poll_mouse_idle, registry->dec);
+ g_source_set_name_by_id (id, "[at-spi2-core] spi_dec_poll_mouse_idle");
+ }
}
}