[Spice-devel] spice-vdagent: how to enable additional mouse buttons?

Uri Lublin uril at redhat.com
Mon May 11 15:15:31 UTC 2020


On 5/11/20 4:47 PM, bruts at netc.fr wrote:
> 
> 
> Uri,
> 
> 
> 
> Would it be as simple as adding:
> 
> 
> 
> ioctl(uinput->fd, UI_SET_KEYBIT,  BTN_BACK);
> 
> ioctl(uinput->fd, UI_SET_KEYBIT,  BTN_FORWARD);
> 
> 
> 
> and re-compiling / testing?

I'm sorry, but it is not that simple.


That's the agent side.
You also need the client side, and
to add those buttons to the protocol (including client/server, possibly 
with a proper capability).

Uri.

> 
> 
> 
> I am not an experienced coder and have not had the time yet to get a good overview of the spice-vdagent code, so this might be a too simple approach.
> 
> 
> 
> I guess all of these values might be tested:
> 
> 
> 
> #define BTN_MISC        0x100
> #define BTN_0            0x100
> #define BTN_1            0x101
> #define BTN_2            0x102
> #define BTN_3            0x103
> #define BTN_4            0x104
> #define BTN_5            0x105
> #define BTN_6            0x106
> #define BTN_7            0x107
> #define BTN_8            0x108
> #define BTN_9            0x109
> 
> #define BTN_MOUSE        0x110
> #define BTN_LEFT        0x110
> #define BTN_RIGHT        0x111
> #define BTN_MIDDLE        0x112
> #define BTN_SIDE        0x113
> #define BTN_EXTRA        0x114
> #define BTN_FORWARD        0x115
> #define BTN_BACK        0x116
> #define BTN_TASK        0x117
> 
> 
> 
> Is there any way to test the btn value? Like xev is not showing me anything related to this value?
> 
> 
> 
> Your input is appreciated!
> 
> 
> 
> Thanks
> 
> 
> 
> 
> 
> De : Uri Lublin <uril at redhat.com>
> À : bruts at netc.fr;
>     spice-devel at lists.freedesktop.org
> Sujet : Re: [Spice-devel] spice-vdagent: how to enable additional mouse buttons?
> Date : 11/05/2020 15:23:30 Europe/Paris
> 
> On 5/11/20 4:08 PM, bruts at netc.fr wrote:
>> Hi,
>>
>>
>>
>> Yes most likely.
>>
>> I find these lines of code:
>>
>>
>>
>> /* buttons */
>>      ioctl(uinput->fd, UI_SET_EVBIT, EV_KEY);
>>      ioctl(uinput->fd, UI_SET_KEYBIT, BTN_LEFT);
>>      ioctl(uinput->fd, UI_SET_KEYBIT, BTN_MIDDLE);
>>      ioctl(uinput->fd, UI_SET_KEYBIT, BTN_RIGHT);
>>
>>      /* wheel */
>>      ioctl(uinput->fd, UI_SET_EVBIT, EV_REL);
>>      ioctl(uinput->fd, UI_SET_RELBIT, REL_WHEEL);
>>
>>
>> I will probably need to declare the additional mouse buttons of my mouse (Logitech G403), so I run xev to find some information:
>>
>>
>>
>> (BTN_LEFT, BTN_RIGHT, button 8, button 9)
>>
>>
>>
>> ButtonPress event, serial 48, synthetic NO, window 0x3000001,
>>      root 0x3ad, subw 0x0, time 361327, (127,94), root:(128,144),
>>      state 0x0, button 1, same_screen YES
>>
>> ButtonRelease event, serial 48, synthetic NO, window 0x3000001,
>>      root 0x3ad, subw 0x0, time 361426, (127,94), root:(128,144),
>>      state 0x100, button 1, same_screen YES
>>
>> ButtonPress event, serial 48, synthetic NO, window 0x3000001,
>>      root 0x3ad, subw 0x0, time 362448, (127,94), root:(128,144),
>>      state 0x0, button 3, same_screen YES
>>
>> ButtonRelease event, serial 48, synthetic NO, window 0x3000001,
>>      root 0x3ad, subw 0x0, time 362556, (127,94), root:(128,144),
>>      state 0x400, button 3, same_screen YES
>>
>> ButtonPress event, serial 48, synthetic NO, window 0x3000001,
>>      root 0x3ad, subw 0x0, time 366829, (127,94), root:(128,144),
>>      state 0x0, button 8, same_screen YES
>>
>> ButtonRelease event, serial 48, synthetic NO, window 0x3000001,
>>      root 0x3ad, subw 0x0, time 366949, (127,94), root:(128,144),
>>      state 0x0, button 8, same_screen YES
>>
>> ButtonPress event, serial 48, synthetic NO, window 0x3000001,
>>      root 0x3ad, subw 0x0, time 368093, (127,94), root:(128,144),
>>      state 0x0, button 9, same_screen YES
>>
>> ButtonRelease event, serial 48, synthetic NO, window 0x3000001,
>>      root 0x3ad, subw 0x0, time 368250, (127,94), root:(128,144),
>>      state 0x0, button 9, same_screen YES
>>
>>
>>
>> Now the next question is obvious: how do I adjust the code to add support for button 8,9 ?
>>
>>
>>
>> I thought BTN_LEFT and BTN_RIGHT would be declared in uinput.h but they are global variables? or where are they declared?
> 
> I found them in
> /usr/include/linux/input-event-codes.h.
> There is also BTN_BACK but I'm not sure it's mapped to any of button-8
> or 9.
> 
> Uri.
> 
>>
>> Any help with adding support for these buttons would be very appreciated and finally make me stop using virtualbox lol.
>>
>> Thanks!
>>
>>
>>
>>
>>
>>
>>
>> De : Uri Lublin <uril at redhat.com>
>> À : bruts at netc.fr;
>>     spice-devel at lists.freedesktop.org
>> Sujet : Re: [Spice-devel] spice-vdagent: how to enable additional mouse buttons?
>> Date : 03/05/2020 17:33:55 Europe/Paris
>>
>> On 5/1/20 3:51 PM, bruts at netc.fr wrote:
>>>
>>> I am using spice-vdagent on most of my qemu-kvm vm's, while this is very
>>> convenient, mouse button 8 and 9 are not working (those are the side
>>> buttons of the mouse, one is often used for BACK function of the
>>> browser, which my thumb is actually addicted to).
>>> How could i make these buttons work with spice-vdagent?
>>
>> Hi,
>>
>> Currently 5 mouse buttons are supported. I think some code is needed to
>> be added in order to support more buttons.
>>
>> Uri.
>>
>>>
>>> Thanks for the suggestions,
>>>
>>> Bruts
>>
>>
>>
> 
> 
> 



More information about the Spice-devel mailing list