Comment 5 for bug 575465

Revision history for this message
ekilfoil (ekilfoil) wrote : Re: unable to use mouse buttons to trigger events in mangler

I was incorrect. It seems that querying the master pointer does not give the button state of the slave pointer even for normal mice.

I did some more digging on this today, and I found that an HP branded wireless USB mouse has the same issue. With this mouse (as well as the logitech wireless mouse), the return from:

    xdev = XListInputDevices(GDK_WINDOW_XDISPLAY(rootwin), &ndevices_return);

lists the USB device twice, but both have xdev[num].use == 3 (IsXExtensionKeyboard as defined in X11/XI.h).

I think the problem is that one of those devices should have the use member set to 4. The attached xinput list provided by Locke above shows this correctly with one device as a pointer and one as a keyboard, but I'm assuming the xinput program is using the XI2 API.

With a simple little program to list the devices and print the use member:

13 devices found
Virtual core pointer: use is 0
Virtual core keyboard: use is 1
Virtual core XTEST pointer: is a pointer
Virtual core XTEST keyboard: use is 3
Power Button: use is 3
Power Button: use is 3
G15 Gaming Keyboard: use is 3
G15 Gaming Keyboard: use is 3
Logitech USB-PS/2 Optical Mouse: is a pointer
Macintosh mouse button emulation: is a pointer
G15 Extra Keys: use is 3
BTC USB Multimedia Cordless Kit: use is 3
BTC USB Multimedia Cordless Kit: use is 3

While xinput prints:

      BTC USB Multimedia Cordless Kit id=14 [slave pointer (2)]
      BTC USB Multimedia Cordless Kit id=13 [slave keyboard (3)]