Proposal: make "hardware_id_wacom" more generic
Peter Hutterer
peter.hutterer at who-t.net
Mon May 14 00:34:06 UTC 2018
On Sat, May 12, 2018 at 09:55:59PM -0400, ferreiradaselva wrote:
> It feels a bit off that a vendor-specific event is exposed to the client.
>
> Why not something like:
>
> ```
> void (*hardware_specific_id)(void *data,
> struct zwp_tablet_tool_vX *zwp_tablet_tool_vX,
> uint32_t length,
> uint8_t *id);
> ```
>
> The tablet name is already exposed on the event
> zwp_tablet_v2_listener.name. Using the name provided, the client could
> decide if would care or not about the specific model.
>
> So, in the case o Wacom, the `length` would be `8` and the current
> `hardware_id_hi` and `hardware_id_lo` would be passed to `*model`.
in the last 10 years of working with wacom, I haven't come across
tablets using hardware serials like wacom does. an earlier version of the
tablet protocol had something similar to what you suggested but we opted for
the vendor-specific code instead. There's a high chance that whatever
another vendor comes up with doesn't work exactly the same way, so we may
end up with a generic solution that doesn't work for any use-case but
Wacom's. Plus, we've made the real use-case more complicated.
> This way, this event could be used for any other vendor (and if they don't
> have such id, the `length` would be `0`) and the client-side wouldn't
> contain vendor-specific API.
Not really. You still need vendor-specific code to interpret the data,
you're just pretending that the way you get this data is generic.
for all we know the next use-case may be a string, or an enum, or
some form of a bitmask. And if that is the case, we can just add a separate
event that handles this in a well-specified manner.
Cheers,
Peter
More information about the wayland-devel
mailing list