Fwd: [PATCH] HID: wacom: make the WL connection friendly for the desktop

From: Ping Cheng
Date: Thu Sep 11 2014 - 14:08:28 EST


On Thu, Sep 11, 2014 at 10:14 AM, Benjamin Tissoires
<benjamin.tissoires@xxxxxxxxxx> wrote:
>
> Currently, tablets connected to the WL receiver all share the same
> VID/PID. There is no way for the user space to know which one is which
> besides parsing the name. We can force the PID to be set to the
> actual hardware. This way, the input device will have the correct PID
> which can be match in libwacom.


Nice job, Benjamin! Thank you, on behalf of wireless tablet users ;-).

>
> With only this trick, the pad input does not inherit the ID_INPUT_TABLET
> udev property from its parent. We can force udev to accept it by declaring
> a BTN_STYLUS which is never used.


BTN_STYLUS can be confusing to userland clients that retrieve it to
decide tool types. But, without it, the client is already confused
with joystick. So, unless we introduce a new tool type, which I
proposed a few years ago and was rejected, we may have to keep clients
confused. With that said, the patch is

>
> This way, tablets connected through WL can be used from the user point of
> view in the same way they are used while connected through wire.
>
> Signed-off-by: Benjamin Tissoires <benjamin.tissoires@xxxxxxxxxx>


Reviewed-by: Ping Cheng <pingc@xxxxxxxxx>

Cheers,

Ping

> ---
>
> Hi guys,
>
> to continue on Ping's work regarding the Wireless reciever, here is a patch
> which allows to have the same user experience regardless the transport layer.
> Unfortunately, a libwacom patch is also required, but once both are applied,
> there is no differences between the wired and wireless connections. Yeah!
>
> Cheers,
> Benjamin
>
> drivers/hid/wacom_sys.c | 2 +-
> drivers/hid/wacom_wac.c | 3 +++
> 2 files changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/hid/wacom_sys.c b/drivers/hid/wacom_sys.c
> index 9e4e188..a8b7f16 100644
> --- a/drivers/hid/wacom_sys.c
> +++ b/drivers/hid/wacom_sys.c
> @@ -1035,7 +1035,7 @@ static struct input_dev *wacom_allocate_input(struct wacom *wacom)
> input_dev->uniq = hdev->uniq;
> input_dev->id.bustype = hdev->bus;
> input_dev->id.vendor = hdev->vendor;
> - input_dev->id.product = hdev->product;
> + input_dev->id.product = wacom_wac->pid ? wacom_wac->pid : hdev->product;
> input_dev->id.version = hdev->version;
> input_set_drvdata(input_dev, wacom);
>
> diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
> index c3cbbfb..b8180e4 100644
> --- a/drivers/hid/wacom_wac.c
> +++ b/drivers/hid/wacom_wac.c
> @@ -1990,6 +1990,9 @@ int wacom_setup_pad_input_capabilities(struct input_dev *input_dev,
> input_set_abs_params(input_dev, ABS_X, 0, 1, 0, 0);
> input_set_abs_params(input_dev, ABS_Y, 0, 1, 0, 0);
>
> + /* kept for making udev and libwacom accepting the pad */
> + __set_bit(BTN_STYLUS, input_dev->keybit);
> +
> switch (features->type) {
> case GRAPHIRE_BT:
> __set_bit(BTN_0, input_dev->keybit);
> --
> 2.1.0
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/