[Spice-devel] [RFC PATCH spice-common v2 02/20] A version 2 of the MousePosition message
Frediano Ziglio
fziglio at redhat.com
Tue Aug 28 10:46:34 UTC 2018
>
> On Mon, Aug 27, 2018 at 12:13:47PM -0400, Frediano Ziglio wrote:
> > >
> > > Hi,
> > >
> > > > +typedef struct SpiceMsgcMousePositionV2 {
> > > > + uint32_t x;
> > > > + uint32_t y;
> > > > + uint32_t buttons_state;
> > > > + uint32_t channel_id;
> > > > + uint32_t monitor_id;
> > > > +} SpiceMsgcMousePositionV2;
> > >
> > > When touching the mouse messages anyway I'd suggest to design it more
> > > like the linux input layer events (or qemu input subsystem, which was
> > > inspiried by the linux input layer too).
> > >
> > > cheers,
> > > Gerd
> > >
> >
> > Designing a multi-OS protocol on a specific OS seems to me a design
> > mistake. I would prefer to design it looking at existent hardware
> > or designing looking at multiple OSes.
>
> Well, the linux input layer (specifically the evdev protocol, see
> /usr/include/linux/input.h) is roughly two decades old and managed to
> handle all sorts of hardware without major protocol changes. So it
> can't be that bad ...
>
> The fundamental idea is to have one message per value. Each message is
> has type, code and value. So for a mouse button press you would have
> four messages:
>
> type code value
>
> relative move x axis 23
> relative move y axis -42
> key event left button down
> sync
>
> The "sync" indicates the end of the message group. This can be extended
> easily. You can add an axis for the scroll wheel without changing the
> wire protocol, it'll be just an additional message. Old software
> versions can simply skip messages they doesn't understand.
>
> You can also send the display that way:
>
> type code value
>
> display channel id 0
> display monitor id 2
> absolute position x axis 582
> [ ... ]
>
> cheers,
> Gerd
>
>
Well, so instead of tagging messages the protocol is tagging single fields,
something like the difference between a plain text and XML (although there's
no hierarchy in evdev schema). Is possible but this suggestion is more about
base protocol change. I hope we don't continue all this discussion expanding
day by day or in a couple of days we could end up discussing the size of
the bytes; of course this sentence is irritating but keeping focus on a discussion
which is spreading all over is hard, we are moving in a "all or nothing"
discussion.
There was some discussion time ago on protobuf or cap'n proto too.
Frediano
More information about the Spice-devel
mailing list