failed to make it in.
git-svn-id: http://svn.gnome.org/svn/at-spi/trunk@193
e2bd861d-eb25-0410-b326-
f6ed22b6b98c
&key_set,
controller_event_mask,
&key_events,
&key_set,
controller_event_mask,
&key_events,
- (CORBA_boolean) ((sync_type & SPI_KEYLISTENER_ALL_WINDOWS)!=0),
+ ((sync_type & SPI_KEYLISTENER_ALL_WINDOWS)!=0) ? CORBA_TRUE : CORBA_FALSE,
+ cspi_return_val_if_ev ("registering keystroke listener", FALSE);
+
cspi_release_unref (device_event_controller);
return TRUE;
cspi_release_unref (device_event_controller);
return TRUE;
Accessibility_DeviceEventController device_event_controller =
Accessibility_Registry_getDeviceEventController (cspi_registry (), cspi_ev ());
Accessibility_DeviceEventController device_event_controller =
Accessibility_Registry_getDeviceEventController (cspi_registry (), cspi_ev ());
+ g_print ("keyval %d\n", (int) keyval);
cspi_return_val_if_ev ("getting event controller", FALSE);
Accessibility_DeviceEventController_generateKeyEvent (device_event_controller,
cspi_return_val_if_ev ("getting event controller", FALSE);
Accessibility_DeviceEventController_generateKeyEvent (device_event_controller,
-get_accessible_from_servant (PortableServer_Servant servant)
+get_atkobject_from_servant (PortableServer_Servant servant)
{
SpiBase *object = SPI_BASE (bonobo_object_from_servant (servant));
{
SpiBase *object = SPI_BASE (bonobo_object_from_servant (servant));
{
const gchar *name;
CORBA_char *retval;
{
const gchar *name;
CORBA_char *retval;
- AtkObject *object = get_accessible_from_servant (servant);
+ AtkObject *object = get_atkobject_from_servant (servant);
g_return_val_if_fail (object != NULL, CORBA_string_dup (""));
g_return_val_if_fail (object != NULL, CORBA_string_dup (""));
const CORBA_char *name,
CORBA_Environment *ev)
{
const CORBA_char *name,
CORBA_Environment *ev)
{
- AtkObject *object = get_accessible_from_servant (servant);
+ AtkObject *object = get_atkobject_from_servant (servant);
g_return_if_fail (object != NULL);
g_return_if_fail (object != NULL);
{
const gchar *descr;
CORBA_char *retval;
{
const gchar *descr;
CORBA_char *retval;
- AtkObject *object = get_accessible_from_servant (servant);
+ AtkObject *object = get_atkobject_from_servant (servant);
g_return_val_if_fail (object != NULL, CORBA_string_dup (""));
g_return_val_if_fail (object != NULL, CORBA_string_dup (""));
const CORBA_char *descr,
CORBA_Environment *ev)
{
const CORBA_char *descr,
CORBA_Environment *ev)
{
- AtkObject *object = get_accessible_from_servant (servant);
+ AtkObject *object = get_atkobject_from_servant (servant);
g_return_if_fail (object != NULL);
g_return_if_fail (object != NULL);
CORBA_Environment *ev)
{
AtkObject *parent;
CORBA_Environment *ev)
{
AtkObject *parent;
- AtkObject *object = get_accessible_from_servant (servant);
+ AtkObject *object = get_atkobject_from_servant (servant);
g_return_val_if_fail (object != NULL, CORBA_OBJECT_NIL);
g_return_val_if_fail (object != NULL, CORBA_OBJECT_NIL);
impl_accessibility_accessible_get_index_in_parent (PortableServer_Servant servant,
CORBA_Environment *ev)
{
impl_accessibility_accessible_get_index_in_parent (PortableServer_Servant servant,
CORBA_Environment *ev)
{
- AtkObject *object = get_accessible_from_servant (servant);
+ AtkObject *object = get_atkobject_from_servant (servant);
g_return_val_if_fail (object != NULL, -1);
g_return_val_if_fail (object != NULL, -1);
impl_accessibility_accessible_get_child_count (PortableServer_Servant servant,
CORBA_Environment *ev)
{
impl_accessibility_accessible_get_child_count (PortableServer_Servant servant,
CORBA_Environment *ev)
{
- AtkObject *object = get_accessible_from_servant (servant);
+ AtkObject *object = get_atkobject_from_servant (servant);
g_return_val_if_fail (object != NULL, 0);
g_return_val_if_fail (object != NULL, 0);
CORBA_Environment *ev)
{
AtkObject *child;
CORBA_Environment *ev)
{
AtkObject *child;
- AtkObject *object = get_accessible_from_servant (servant);
+ AtkObject *object = get_atkobject_from_servant (servant);
g_return_val_if_fail (object != NULL, 0);
g_return_val_if_fail (object != NULL, 0);
impl_accessibility_accessible_get_state (PortableServer_Servant servant,
CORBA_Environment *ev)
{
impl_accessibility_accessible_get_state (PortableServer_Servant servant,
CORBA_Environment *ev)
{
- AtkObject *object = get_accessible_from_servant (servant);
+ AtkObject *object = get_atkobject_from_servant (servant);
bonobo_return_val_if_fail (object != NULL, NULL, ev);
bonobo_return_val_if_fail (object != NULL, NULL, ev);
gint n_relations;
gint i;
AtkRelationSet *relation_set;
gint n_relations;
gint i;
AtkRelationSet *relation_set;
- AtkObject *object = get_accessible_from_servant (servant);
+ AtkObject *object = get_atkobject_from_servant (servant);
bonobo_return_val_if_fail (object != NULL, NULL, ev);
bonobo_return_val_if_fail (object != NULL, NULL, ev);
{
AtkRole role;
Accessibility_Role retval;
{
AtkRole role;
Accessibility_Role retval;
- AtkObject *object = get_accessible_from_servant (servant);
+ AtkObject *object = get_atkobject_from_servant (servant);
g_return_val_if_fail (object != NULL, 0);
g_return_val_if_fail (object != NULL, 0);
{
AtkRole role;
Accessibility_Role retval;
{
AtkRole role;
Accessibility_Role retval;
- AtkObject *object = get_accessible_from_servant (servant);
+ AtkObject *object = get_atkobject_from_servant (servant);
g_return_val_if_fail (object != NULL, 0);
g_return_val_if_fail (object != NULL, 0);
{
SpiRelation *new_relation = g_object_new (SPI_RELATION_TYPE, NULL);
{
SpiRelation *new_relation = g_object_new (SPI_RELATION_TYPE, NULL);
- spi_base_construct (SPI_BASE (new_relation), ATK_OBJECT (obj));
+ spi_base_construct (SPI_BASE (new_relation), G_OBJECT (obj));
-LDADD = ../libspi/libspi.la -lXtst $(REGISTRYD_LIBS)
+LDADD = ../libspi/libspi.la $(XTST_LIBS) $(REGISTRYD_LIBS)
serverinfodir = $(libdir)/bonobo/servers
serverinfo_DATA = Accessibility_Registry.server
serverinfodir = $(libdir)/bonobo/servers
serverinfo_DATA = Accessibility_Registry.server
static void
spi_desktop_init (SpiDesktop *desktop)
{
static void
spi_desktop_init (SpiDesktop *desktop)
{
- spi_base_construct_default (SPI_BASE (desktop));
+ spi_base_construct (SPI_BASE (desktop), g_object_new (ATK_TYPE_OBJECT, NULL));
desktop->applications = NULL;
desktop->applications = NULL;
- atk_object_set_name (ATK_OBJECT(SPI_BASE (desktop)->gobj), "main");
+ atk_object_set_name (ATK_OBJECT (SPI_BASE (desktop)->gobj), "main");
static gboolean kbd_registered = FALSE;
static gboolean kbd_registered = FALSE;
-static Display *display;
-
static Window root_window;
typedef enum {
static Window root_window;
typedef enum {
-static DEControllerGrabMask *
+static Display *
+spi_get_display (void )
+{
+ static Display *display = NULL;
+ /* We must open a new connection to the server to avoid clashing with the GDK event loop */
+ /*
+ * TODO: fixme, this makes the foolish assumption that registryd uses
+ * the same display as the apps, and the the DISPLAY environment variable is set.
+ */
+
+ if (!display)
+ {
+ display = XOpenDisplay (g_getenv ("DISPLAY"));
+ }
+ return display;
+}
+
+static DEControllerGrabMask *
spi_grabmask_clone (DEControllerGrabMask *grabmask)
{
DEControllerGrabMask *clone = g_new0 (DEControllerGrabMask, 1);
spi_grabmask_clone (DEControllerGrabMask *grabmask)
{
DEControllerGrabMask *clone = g_new0 (DEControllerGrabMask, 1);
/* X Grabs require keycodes, not keysyms */
if (keyval >= 0)
{
/* X Grabs require keycodes, not keysyms */
if (keyval >= 0)
{
- keyval = XKeysymToKeycode(display, (KeySym) keyval);
+ keyval = XKeysymToKeycode(spi_get_display (), (KeySym) keyval);
}
grabmask.keyval = keyval;
list_ptr = g_list_find_custom (controller->keygrabs_list, &grabmask,
}
grabmask.keyval = keyval;
list_ptr = g_list_find_custom (controller->keygrabs_list, &grabmask,
/* calls to device-specific implementations and routines go here */
/* register with: keyboard hardware code handler */
/* register with: (translated) keystroke handler */
/* calls to device-specific implementations and routines go here */
/* register with: keyboard hardware code handler */
/* register with: (translated) keystroke handler */
-#ifdef SPI_DEBUG
- fprintf (stderr, "About to request events on window %ld of display %p\n",
- (unsigned long) GDK_ROOT_WINDOW(), GDK_DISPLAY());
-#endif
/* We must open a new connection to the server to avoid clashing with the GDK event loop */
/* We must open a new connection to the server to avoid clashing with the GDK event loop */
- display = XOpenDisplay (g_getenv ("DISPLAY"));
- root_window = DefaultRootWindow (display);
- XSelectInput (display,
+ root_window = DefaultRootWindow (spi_get_display ());
+ XSelectInput (spi_get_display (),
root_window,
KeyPressMask | KeyReleaseMask);
/* register with: mouse hardware device handler? */
root_window,
KeyPressMask | KeyReleaseMask);
/* register with: mouse hardware device handler? */
DEControllerKeyListener *listener,
CORBA_boolean is_system_global)
{
DEControllerKeyListener *listener,
CORBA_boolean is_system_global)
{
+ g_print ("checking keycode %d\n", (int) key_event->hw_code);
if ((key_event->modifiers == (CORBA_unsigned_short) (listener->mask & 0xFFFF)) &&
spi_key_set_contains_key (listener->keys, key_event) &&
spi_key_eventtype_seq_contains_event (listener->typeseq, key_event) &&
if ((key_event->modifiers == (CORBA_unsigned_short) (listener->mask & 0xFFFF)) &&
spi_key_set_contains_key (listener->keys, key_event) &&
spi_key_eventtype_seq_contains_event (listener->typeseq, key_event) &&
CORBA_exception_init (&ev);
}
CORBA_exception_init (&ev);
}
- while (XPending(display))
+ while (XPending(spi_get_display ()))
- XNextEvent (display, x_event);
+ XNextEvent (spi_get_display (), x_event);
if (XFilterEvent (x_event, None)) continue;
if (x_event->type == KeyPress || x_event->type == KeyRelease)
{
if (XFilterEvent (x_event, None)) continue;
if (x_event->type == KeyPress || x_event->type == KeyRelease)
{
- XAllowEvents (display, AsyncKeyboard, CurrentTime);
+ XAllowEvents (spi_get_display (), AsyncKeyboard, CurrentTime);
- XAllowEvents (display, ReplayKeyboard, CurrentTime);
+ XAllowEvents (spi_get_display (), ReplayKeyboard, CurrentTime);
- XUngrabKey (display, AnyKey, AnyModifier, root_window);
+ XUngrabKey (spi_get_display (), AnyKey, AnyModifier, root_window);
return spi_controller_grab_keyboard (controller);
}
return spi_controller_grab_keyboard (controller);
}
#endif
if (!(maskVal & ControlMask))
{
#endif
if (!(maskVal & ControlMask))
{
+ XGrabKey (spi_get_display (),
keyVal,
maskVal,
root_window,
keyVal,
maskVal,
root_window,
- fprintf(stderr, "spi_device_event_controller_object_finalize called\n");
+ fprintf(stderr, "spi_device_event_controller_object_finalize called\n");
- /* disconnect any special listeners, get rid of outstanding keygrabs */
+ /* disconnect any special listeners, get rid of outstanding keygrabs */
- spi_device_event_controller_parent_class->finalize (object);
+ spi_device_event_controller_parent_class->finalize (object);
const CORBA_boolean is_system_global,
CORBA_Environment *ev)
{
const CORBA_boolean is_system_global,
CORBA_Environment *ev)
{
- SpiDeviceEventController *controller = SPI_DEVICE_EVENT_CONTROLLER (
- bonobo_object_from_servant (servant));
- DEControllerKeyListener *dec_listener;
+ SpiDeviceEventController *controller = SPI_DEVICE_EVENT_CONTROLLER (
+ bonobo_object_from_servant (servant));
+ DEControllerKeyListener *dec_listener;
- fprintf (stderr, "registering keystroke listener %p with maskVal %lu\n",
- (void *) l, (unsigned long) mask);
+ fprintf (stderr, "registering keystroke listener %p with maskVal %lu\n",
+ (void *) l, (unsigned long) mask);
- dec_listener = spi_dec_key_listener_new (l, keys, mask, type, is_system_global, ev);
- spi_controller_register_device_listener (controller, (DEControllerListener *) dec_listener, ev);
+ dec_listener = spi_dec_key_listener_new (l, keys, mask, type,
+ is_system_global, ev);
+
+ spi_controller_register_device_listener (controller,
+ (DEControllerListener *) dec_listener,
+ ev);
static KeyCode
keycode_for_keysym (long keysym)
{
static KeyCode
keycode_for_keysym (long keysym)
{
- return XKeysymToKeycode (display, (KeySym) keysym);
+ return XKeysymToKeycode (spi_get_display (), (KeySym) keysym);
{
long key_synth_code;
#ifdef SPI_DEBUG
{
long key_synth_code;
#ifdef SPI_DEBUG
- fprintf (stderr, "synthesizing keystroke %ld\n", (long) keycode);
+ fprintf (stderr, "synthesizing keystroke %ld, type %d\n", (long) keycode, (int) synth_type);
#endif
/* TODO: hide/wrap/remove X dependency */
#endif
/* TODO: hide/wrap/remove X dependency */
switch (synth_type)
{
case Accessibility_KEY_PRESS:
switch (synth_type)
{
case Accessibility_KEY_PRESS:
- XTestFakeKeyEvent (GDK_DISPLAY(), (unsigned int) keycode, True, CurrentTime);
+ XTestFakeKeyEvent (spi_get_display (), (unsigned int) keycode, True, CurrentTime);
break;
case Accessibility_KEY_PRESSRELEASE:
break;
case Accessibility_KEY_PRESSRELEASE:
- XTestFakeKeyEvent (GDK_DISPLAY(), (unsigned int) keycode, True, CurrentTime);
+ XTestFakeKeyEvent (spi_get_display (), (unsigned int) keycode, True, CurrentTime);
case Accessibility_KEY_RELEASE:
case Accessibility_KEY_RELEASE:
- XTestFakeKeyEvent (GDK_DISPLAY(), (unsigned int) keycode, False, CurrentTime);
+ XTestFakeKeyEvent (spi_get_display (), (unsigned int) keycode, False, CurrentTime);
break;
case Accessibility_KEY_SYM:
key_synth_code = keycode_for_keysym (keycode);
break;
case Accessibility_KEY_SYM:
key_synth_code = keycode_for_keysym (keycode);
- XTestFakeKeyEvent (GDK_DISPLAY(), (unsigned int) key_synth_code, True, CurrentTime);
- XTestFakeKeyEvent (GDK_DISPLAY(), (unsigned int) key_synth_code, False, CurrentTime);
+ XTestFakeKeyEvent (spi_get_display (), (unsigned int) key_synth_code, True, CurrentTime);
+ XTestFakeKeyEvent (spi_get_display (), (unsigned int) key_synth_code, False, CurrentTime);
if (key->type == SPI_KEY_RELEASED)
{
if (key->type == SPI_KEY_RELEASED)
{
- g_print ("spacebar up\n");
+ g_print ("switch up\n");
is_down = FALSE;
scan_stop (key->timestamp);
}
else
if (!is_down)
{
is_down = FALSE;
scan_stop (key->timestamp);
}
else
if (!is_down)
{
- g_print ("spacebar down\n");
+ g_print ("switch down\n");
is_down = TRUE;
scan_start (key->timestamp);
}
is_down = TRUE;
scan_start (key->timestamp);
}
*/
switch_set.keysyms = g_new0 (unsigned long, 1);
switch_set.keycodes = g_new0 (unsigned short, 1);
*/
switch_set.keysyms = g_new0 (unsigned long, 1);
switch_set.keycodes = g_new0 (unsigned short, 1);
+ switch_set.keystrings = g_new0 (char *, 1);
switch_set.len = 1;
switch_set.keysyms[0] = (unsigned long) 0;
switch_set.keycodes[0] = (unsigned short) 0;
switch_set.len = 1;
switch_set.keysyms[0] = (unsigned long) 0;
switch_set.keycodes[0] = (unsigned short) 0;
+ switch_set.keystrings[0] = "";
switch_listener = SPI_createAccessibleKeystrokeListener (switch_callback, NULL);
SPI_registerAccessibleKeystrokeListener (switch_listener,
&switch_set,
switch_listener = SPI_createAccessibleKeystrokeListener (switch_callback, NULL);
SPI_registerAccessibleKeystrokeListener (switch_listener,
&switch_set,