If I exec pyatspi.Registry.registerKeystrokeListener, this is sent over the bus:
method call sender=:1.507 -> dest=:1.425 serial=16 path=/org/a11y/atspi/registry/deviceeventcontroller; interface=org.a11y.atspi.DeviceEventController; member=RegisterKeystrokeListener
which look ok.
However, if I exec pyatspi.Registry.registerEventListener, the bus gets:
method call sender=:1.514 -> dest=org.freedesktop.DBus serial=3 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
which I don't think is correct. The result is that orca for example is not getting mouse movement events.
some more info from IRC:
<mgorse> If I move the mouse, then press a key, then I get the event
<fer> yeah, but not just moving the mouse
<mgorse> I don't know much of anything about libX11. it's going to be fun trying to debug this.
<fer> mgorse: debuggin at-registryd gives me this:
<fer> spi_dec_mouse_check is only called after global_filter_fn
<fer> and that global filter is supposed to be only for key events
<fer> and the polling on the mouse is only done when spi_controller_register_device_listener is called
<fer> that is, RegisterDeviceEventListener dbus method
<fer> that I cannot find exposed on pyatspi2
<mgorse> Oh; that makes sense. The old at-spi-registryd knew when it had a ouse listener. at-spi2-registryd currently doesn't.
<fer> mgorse: so, what is the solution?
<mgorse> fer: I'd like for at-spi to optionally support direct dbus connections anyhow, so I think that the right way to fix it would be to add a RegisterEventListener method or signal, as you suggested
<mgorse> Events are currently sent out as signals, and dbus-aemon routes them based on the match rules, but that breaks down when the registry daemon wants to check whether anyone is listening
Fixed in at-spi2-core and pyatspi2; you will need to update both.