<div><br></div><div>Uri (and others),</div><div><br></div><div>I found the similar question in a few corners of the internet and I think adding at least the additional default mouse buttons should not be all that much work.</div><div>With some guidance I could probably do it myself, though the guidance would need to be quite substantial :)</div><div>The mouse and the main buttons is already forwarded and that is the main part.</div><div>with xev it is clear to see which buttons work on the host, but not on the guest.</div><div>Anyone with some spare time (which I know is always limited for everyone), but help me where to fix this in the code and i will write a patch - or give me a good start - or start yourself.</div><div><br></div><div>a semi working mouse in the guest is very annoying and can be one of the critical points why to use spice (or not) - at least i know it is in my case.</div><div><br></div><div>Thanks!!<br></div><div><br></div><br><br><blockquote type="cite" style="margin:0 0 0 0.5em;border-left:1px #00f solid;padding-left:1em;">De : Uri Lublin <uril@redhat.com><br>
À : bruts@netc.fr;<br>
   spice-devel@lists.freedesktop.org<br>
Sujet : Re: [Spice-devel] spice-vdagent: how to enable additional mouse buttons?<br>
Date : 11/05/2020 17:15:31 Europe/Paris<br>
<br>
On 5/11/20 4:47 PM, bruts@netc.fr wrote:<br>
> <br>
> <br>
> Uri,<br>
> <br>
> <br>
> <br>
> Would it be as simple as adding:<br>
> <br>
> <br>
> <br>
> ioctl(uinput->fd, UI_SET_KEYBIT,  BTN_BACK);<br>
> <br>
> ioctl(uinput->fd, UI_SET_KEYBIT,  BTN_FORWARD);<br>
> <br>
> <br>
> <br>
> and re-compiling / testing?<br>
<br>
I'm sorry, but it is not that simple.<br>
<br>
<br>
That's the agent side.<br>
You also need the client side, and<br>
to add those buttons to the protocol (including client/server, possibly <br>
with a proper capability).<br>
<br>
Uri.<br>
<br>
> <br>
> <br>
> <br>
> 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.<br>
> <br>
> <br>
> <br>
> I guess all of these values might be tested:<br>
> <br>
> <br>
> <br>
> #define BTN_MISC        0x100<br>
> #define BTN_0            0x100<br>
> #define BTN_1            0x101<br>
> #define BTN_2            0x102<br>
> #define BTN_3            0x103<br>
> #define BTN_4            0x104<br>
> #define BTN_5            0x105<br>
> #define BTN_6            0x106<br>
> #define BTN_7            0x107<br>
> #define BTN_8            0x108<br>
> #define BTN_9            0x109<br>
> <br>
> #define BTN_MOUSE        0x110<br>
> #define BTN_LEFT        0x110<br>
> #define BTN_RIGHT        0x111<br>
> #define BTN_MIDDLE        0x112<br>
> #define BTN_SIDE        0x113<br>
> #define BTN_EXTRA        0x114<br>
> #define BTN_FORWARD        0x115<br>
> #define BTN_BACK        0x116<br>
> #define BTN_TASK        0x117<br>
> <br>
> <br>
> <br>
> Is there any way to test the btn value? Like xev is not showing me anything related to this value?<br>
> <br>
> <br>
> <br>
> Your input is appreciated!<br>
> <br>
> <br>
> <br>
> Thanks<br>
> <br>
> <br>
> <br>
> <br>
> <br>
> De : Uri Lublin <uril@redhat.com><br>
> À : bruts@netc.fr;<br>
>     spice-devel@lists.freedesktop.org<br>
> Sujet : Re: [Spice-devel] spice-vdagent: how to enable additional mouse buttons?<br>
> Date : 11/05/2020 15:23:30 Europe/Paris<br>
> <br>
> On 5/11/20 4:08 PM, bruts@netc.fr wrote:<br>
>> Hi,<br>
>><br>
>><br>
>><br>
>> Yes most likely.<br>
>><br>
>> I find these lines of code:<br>
>><br>
>><br>
>><br>
>> /* buttons */<br>
>>      ioctl(uinput->fd, UI_SET_EVBIT, EV_KEY);<br>
>>      ioctl(uinput->fd, UI_SET_KEYBIT, BTN_LEFT);<br>
>>      ioctl(uinput->fd, UI_SET_KEYBIT, BTN_MIDDLE);<br>
>>      ioctl(uinput->fd, UI_SET_KEYBIT, BTN_RIGHT);<br>
>><br>
>>      /* wheel */<br>
>>      ioctl(uinput->fd, UI_SET_EVBIT, EV_REL);<br>
>>      ioctl(uinput->fd, UI_SET_RELBIT, REL_WHEEL);<br>
>><br>
>><br>
>> I will probably need to declare the additional mouse buttons of my mouse (Logitech G403), so I run xev to find some information:<br>
>><br>
>><br>
>><br>
>> (BTN_LEFT, BTN_RIGHT, button 8, button 9)<br>
>><br>
>><br>
>><br>
>> ButtonPress event, serial 48, synthetic NO, window 0x3000001,<br>
>>      root 0x3ad, subw 0x0, time 361327, (127,94), root:(128,144),<br>
>>      state 0x0, button 1, same_screen YES<br>
>><br>
>> ButtonRelease event, serial 48, synthetic NO, window 0x3000001,<br>
>>      root 0x3ad, subw 0x0, time 361426, (127,94), root:(128,144),<br>
>>      state 0x100, button 1, same_screen YES<br>
>><br>
>> ButtonPress event, serial 48, synthetic NO, window 0x3000001,<br>
>>      root 0x3ad, subw 0x0, time 362448, (127,94), root:(128,144),<br>
>>      state 0x0, button 3, same_screen YES<br>
>><br>
>> ButtonRelease event, serial 48, synthetic NO, window 0x3000001,<br>
>>      root 0x3ad, subw 0x0, time 362556, (127,94), root:(128,144),<br>
>>      state 0x400, button 3, same_screen YES<br>
>><br>
>> ButtonPress event, serial 48, synthetic NO, window 0x3000001,<br>
>>      root 0x3ad, subw 0x0, time 366829, (127,94), root:(128,144),<br>
>>      state 0x0, button 8, same_screen YES<br>
>><br>
>> ButtonRelease event, serial 48, synthetic NO, window 0x3000001,<br>
>>      root 0x3ad, subw 0x0, time 366949, (127,94), root:(128,144),<br>
>>      state 0x0, button 8, same_screen YES<br>
>><br>
>> ButtonPress event, serial 48, synthetic NO, window 0x3000001,<br>
>>      root 0x3ad, subw 0x0, time 368093, (127,94), root:(128,144),<br>
>>      state 0x0, button 9, same_screen YES<br>
>><br>
>> ButtonRelease event, serial 48, synthetic NO, window 0x3000001,<br>
>>      root 0x3ad, subw 0x0, time 368250, (127,94), root:(128,144),<br>
>>      state 0x0, button 9, same_screen YES<br>
>><br>
>><br>
>><br>
>> Now the next question is obvious: how do I adjust the code to add support for button 8,9 ?<br>
>><br>
>><br>
>><br>
>> I thought BTN_LEFT and BTN_RIGHT would be declared in uinput.h but they are global variables? or where are they declared?<br>
> <br>
> I found them in<br>
> /usr/include/linux/input-event-codes.h.<br>
> There is also BTN_BACK but I'm not sure it's mapped to any of button-8<br>
> or 9.<br>
> <br>
> Uri.<br>
> <br>
>><br>
>> Any help with adding support for these buttons would be very appreciated and finally make me stop using virtualbox lol.<br>
>><br>
>> Thanks!<br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> De : Uri Lublin <uril@redhat.com><br>
>> À : bruts@netc.fr;<br>
>>     spice-devel@lists.freedesktop.org<br>
>> Sujet : Re: [Spice-devel] spice-vdagent: how to enable additional mouse buttons?<br>
>> Date : 03/05/2020 17:33:55 Europe/Paris<br>
>><br>
>> On 5/1/20 3:51 PM, bruts@netc.fr wrote:<br>
>>><br>
>>> I am using spice-vdagent on most of my qemu-kvm vm's, while this is very<br>
>>> convenient, mouse button 8 and 9 are not working (those are the side<br>
>>> buttons of the mouse, one is often used for BACK function of the<br>
>>> browser, which my thumb is actually addicted to).<br>
>>> How could i make these buttons work with spice-vdagent?<br>
>><br>
>> Hi,<br>
>><br>
>> Currently 5 mouse buttons are supported. I think some code is needed to<br>
>> be added in order to support more buttons.<br>
>><br>
>> Uri.<br>
>><br>
>>><br>
>>> Thanks for the suggestions,<br>
>>><br>
>>> Bruts<br>
>><br>
>><br>
>><br>
> <br>
> <br>
> <br>
<br></blockquote>