[PATCH] hid: Implement support for side and extra buttons

Noah Bergbauer posted 1 patch 2 years, 4 months ago
Test checkpatch failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20211126140437.79745-1-noah@statshelix.com
Maintainers: Gerd Hoffmann <kraxel@redhat.com>
hw/input/hid.c   | 2 ++
hw/usb/dev-hid.c | 6 +++---
2 files changed, 5 insertions(+), 3 deletions(-)
[PATCH] hid: Implement support for side and extra buttons
Posted by Noah Bergbauer 2 years, 4 months ago
Simply set the respective bits and update the descriptor accordingly.

Signed-off-by: Noah Bergbauer <noah@statshelix.com>
---
 hw/input/hid.c   | 2 ++
 hw/usb/dev-hid.c | 6 +++---
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/hw/input/hid.c b/hw/input/hid.c
index 8aab0521f4..e7ecebdf8f 100644
--- a/hw/input/hid.c
+++ b/hw/input/hid.c
@@ -114,6 +114,8 @@ static void hid_pointer_event(DeviceState *dev, QemuConsole *src,
         [INPUT_BUTTON_LEFT]   = 0x01,
         [INPUT_BUTTON_RIGHT]  = 0x02,
         [INPUT_BUTTON_MIDDLE] = 0x04,
+        [INPUT_BUTTON_SIDE] = 0x08,
+        [INPUT_BUTTON_EXTRA] = 0x10,
     };
     HIDState *hs = (HIDState *)dev;
     HIDPointerEvent *e;
diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c
index 1c7ae97c30..bdd6d1ffaf 100644
--- a/hw/usb/dev-hid.c
+++ b/hw/usb/dev-hid.c
@@ -461,14 +461,14 @@ static const uint8_t qemu_mouse_hid_report_descriptor[] = {
     0xa1, 0x00,		/*   Collection (Physical) */
     0x05, 0x09,		/*     Usage Page (Button) */
     0x19, 0x01,		/*     Usage Minimum (1) */
-    0x29, 0x03,		/*     Usage Maximum (3) */
+    0x29, 0x05,		/*     Usage Maximum (5) */
     0x15, 0x00,		/*     Logical Minimum (0) */
     0x25, 0x01,		/*     Logical Maximum (1) */
-    0x95, 0x03,		/*     Report Count (3) */
+    0x95, 0x05,		/*     Report Count (5) */
     0x75, 0x01,		/*     Report Size (1) */
     0x81, 0x02,		/*     Input (Data, Variable, Absolute) */
     0x95, 0x01,		/*     Report Count (1) */
-    0x75, 0x05,		/*     Report Size (5) */
+    0x75, 0x03,		/*     Report Size (3) */
     0x81, 0x01,		/*     Input (Constant) */
     0x05, 0x01,		/*     Usage Page (Generic Desktop) */
     0x09, 0x30,		/*     Usage (X) */
-- 
2.34.0


Re: [PATCH] hid: Implement support for side and extra buttons
Posted by Noah Bergbauer 2 years, 4 months ago
ping https://patchew.org/QEMU/20211126140437.79745-1-noah@statshelix.com/

On Fri, Nov 26, 2021 at 3:04 PM Noah Bergbauer <noah@statshelix.com> wrote:

> Simply set the respective bits and update the descriptor accordingly.
>
> Signed-off-by: Noah Bergbauer <noah@statshelix.com>
> ---
>  hw/input/hid.c   | 2 ++
>  hw/usb/dev-hid.c | 6 +++---
>  2 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/hw/input/hid.c b/hw/input/hid.c
> index 8aab0521f4..e7ecebdf8f 100644
> --- a/hw/input/hid.c
> +++ b/hw/input/hid.c
> @@ -114,6 +114,8 @@ static void hid_pointer_event(DeviceState *dev,
> QemuConsole *src,
>          [INPUT_BUTTON_LEFT]   = 0x01,
>          [INPUT_BUTTON_RIGHT]  = 0x02,
>          [INPUT_BUTTON_MIDDLE] = 0x04,
> +        [INPUT_BUTTON_SIDE] = 0x08,
> +        [INPUT_BUTTON_EXTRA] = 0x10,
>      };
>      HIDState *hs = (HIDState *)dev;
>      HIDPointerEvent *e;
> diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c
> index 1c7ae97c30..bdd6d1ffaf 100644
> --- a/hw/usb/dev-hid.c
> +++ b/hw/usb/dev-hid.c
> @@ -461,14 +461,14 @@ static const uint8_t
> qemu_mouse_hid_report_descriptor[] = {
>      0xa1, 0x00,                /*   Collection (Physical) */
>      0x05, 0x09,                /*     Usage Page (Button) */
>      0x19, 0x01,                /*     Usage Minimum (1) */
> -    0x29, 0x03,                /*     Usage Maximum (3) */
> +    0x29, 0x05,                /*     Usage Maximum (5) */
>      0x15, 0x00,                /*     Logical Minimum (0) */
>      0x25, 0x01,                /*     Logical Maximum (1) */
> -    0x95, 0x03,                /*     Report Count (3) */
> +    0x95, 0x05,                /*     Report Count (5) */
>      0x75, 0x01,                /*     Report Size (1) */
>      0x81, 0x02,                /*     Input (Data, Variable, Absolute) */
>      0x95, 0x01,                /*     Report Count (1) */
> -    0x75, 0x05,                /*     Report Size (5) */
> +    0x75, 0x03,                /*     Report Size (3) */
>      0x81, 0x01,                /*     Input (Constant) */
>      0x05, 0x01,                /*     Usage Page (Generic Desktop) */
>      0x09, 0x30,                /*     Usage (X) */
> --
> 2.34.0
>
>
[PATCH] hid: trivial change to support side and extra buttons
Posted by Noah Bergbauer 2 years, 2 months ago
ping https://patchew.org/QEMU/20211126140437.79745-1-noah@statshelix.com/

This patch is really small because all of the necessary functionality is
already in place. It's just a matter of setting the respective flags
(instead of just ignoring the buttons) and allocating these bits in the HID
descriptor.

On Sat, Dec 4, 2021 at 12:20 PM Noah Bergbauer <noah@statshelix.com> wrote:

> ping https://patchew.org/QEMU/20211126140437.79745-1-noah@statshelix.com/
>
> On Fri, Nov 26, 2021 at 3:04 PM Noah Bergbauer <noah@statshelix.com>
> wrote:
>
>> Simply set the respective bits and update the descriptor accordingly.
>>
>> Signed-off-by: Noah Bergbauer <noah@statshelix.com>
>> ---
>>  hw/input/hid.c   | 2 ++
>>  hw/usb/dev-hid.c | 6 +++---
>>  2 files changed, 5 insertions(+), 3 deletions(-)
>>
>> diff --git a/hw/input/hid.c b/hw/input/hid.c
>> index 8aab0521f4..e7ecebdf8f 100644
>> --- a/hw/input/hid.c
>> +++ b/hw/input/hid.c
>> @@ -114,6 +114,8 @@ static void hid_pointer_event(DeviceState *dev,
>> QemuConsole *src,
>>          [INPUT_BUTTON_LEFT]   = 0x01,
>>          [INPUT_BUTTON_RIGHT]  = 0x02,
>>          [INPUT_BUTTON_MIDDLE] = 0x04,
>> +        [INPUT_BUTTON_SIDE] = 0x08,
>> +        [INPUT_BUTTON_EXTRA] = 0x10,
>>      };
>>      HIDState *hs = (HIDState *)dev;
>>      HIDPointerEvent *e;
>> diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c
>> index 1c7ae97c30..bdd6d1ffaf 100644
>> --- a/hw/usb/dev-hid.c
>> +++ b/hw/usb/dev-hid.c
>> @@ -461,14 +461,14 @@ static const uint8_t
>> qemu_mouse_hid_report_descriptor[] = {
>>      0xa1, 0x00,                /*   Collection (Physical) */
>>      0x05, 0x09,                /*     Usage Page (Button) */
>>      0x19, 0x01,                /*     Usage Minimum (1) */
>> -    0x29, 0x03,                /*     Usage Maximum (3) */
>> +    0x29, 0x05,                /*     Usage Maximum (5) */
>>      0x15, 0x00,                /*     Logical Minimum (0) */
>>      0x25, 0x01,                /*     Logical Maximum (1) */
>> -    0x95, 0x03,                /*     Report Count (3) */
>> +    0x95, 0x05,                /*     Report Count (5) */
>>      0x75, 0x01,                /*     Report Size (1) */
>>      0x81, 0x02,                /*     Input (Data, Variable, Absolute) */
>>      0x95, 0x01,                /*     Report Count (1) */
>> -    0x75, 0x05,                /*     Report Size (5) */
>> +    0x75, 0x03,                /*     Report Size (3) */
>>      0x81, 0x01,                /*     Input (Constant) */
>>      0x05, 0x01,                /*     Usage Page (Generic Desktop) */
>>      0x09, 0x30,                /*     Usage (X) */
>> --
>> 2.34.0
>>
>>
Re: [PATCH] hid: trivial change to support side and extra buttons
Posted by Laurent Vivier 2 years, 1 month ago
Gerd,

if you acknowledge the patch I can merge it via the trivial branch.

Thanks,
Laurent

Le 22/01/2022 à 10:57, Noah Bergbauer a écrit :
> ping https://patchew.org/QEMU/20211126140437.79745-1-noah@statshelix.com/ 
> <https://patchew.org/QEMU/20211126140437.79745-1-noah@statshelix.com/>
> 
> This patch is really small because all of the necessary functionality is already in place. It's just 
> a matter of setting the respective flags (instead of just ignoring the buttons) and allocating these 
> bits in the HID descriptor.
> 
> On Sat, Dec 4, 2021 at 12:20 PM Noah Bergbauer <noah@statshelix.com <mailto:noah@statshelix.com>> wrote:
> 
>     ping https://patchew.org/QEMU/20211126140437.79745-1-noah@statshelix.com/
>     <https://patchew.org/QEMU/20211126140437.79745-1-noah@statshelix.com/>
> 
>     On Fri, Nov 26, 2021 at 3:04 PM Noah Bergbauer <noah@statshelix.com
>     <mailto:noah@statshelix.com>> wrote:
> 
>         Simply set the respective bits and update the descriptor accordingly.
> 
>         Signed-off-by: Noah Bergbauer <noah@statshelix.com <mailto:noah@statshelix.com>>
>         ---
>           hw/input/hid.c   | 2 ++
>           hw/usb/dev-hid.c | 6 +++---
>           2 files changed, 5 insertions(+), 3 deletions(-)
> 
>         diff --git a/hw/input/hid.c b/hw/input/hid.c
>         index 8aab0521f4..e7ecebdf8f 100644
>         --- a/hw/input/hid.c
>         +++ b/hw/input/hid.c
>         @@ -114,6 +114,8 @@ static void hid_pointer_event(DeviceState *dev, QemuConsole *src,
>                   [INPUT_BUTTON_LEFT]   = 0x01,
>                   [INPUT_BUTTON_RIGHT]  = 0x02,
>                   [INPUT_BUTTON_MIDDLE] = 0x04,
>         +        [INPUT_BUTTON_SIDE] = 0x08,
>         +        [INPUT_BUTTON_EXTRA] = 0x10,
>               };
>               HIDState *hs = (HIDState *)dev;
>               HIDPointerEvent *e;
>         diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c
>         index 1c7ae97c30..bdd6d1ffaf 100644
>         --- a/hw/usb/dev-hid.c
>         +++ b/hw/usb/dev-hid.c
>         @@ -461,14 +461,14 @@ static const uint8_t qemu_mouse_hid_report_descriptor[] = {
>               0xa1, 0x00,                /*   Collection (Physical) */
>               0x05, 0x09,                /*     Usage Page (Button) */
>               0x19, 0x01,                /*     Usage Minimum (1) */
>         -    0x29, 0x03,                /*     Usage Maximum (3) */
>         +    0x29, 0x05,                /*     Usage Maximum (5) */
>               0x15, 0x00,                /*     Logical Minimum (0) */
>               0x25, 0x01,                /*     Logical Maximum (1) */
>         -    0x95, 0x03,                /*     Report Count (3) */
>         +    0x95, 0x05,                /*     Report Count (5) */
>               0x75, 0x01,                /*     Report Size (1) */
>               0x81, 0x02,                /*     Input (Data, Variable, Absolute) */
>               0x95, 0x01,                /*     Report Count (1) */
>         -    0x75, 0x05,                /*     Report Size (5) */
>         +    0x75, 0x03,                /*     Report Size (3) */
>               0x81, 0x01,                /*     Input (Constant) */
>               0x05, 0x01,                /*     Usage Page (Generic Desktop) */
>               0x09, 0x30,                /*     Usage (X) */
>         -- 
>         2.34.0
> 


Re: [PATCH] hid: trivial change to support side and extra buttons
Posted by Gerd Hoffmann 2 years, 1 month ago
On Tue, Feb 22, 2022 at 10:32:49AM +0100, Laurent Vivier wrote:
> Gerd,
> 
> if you acknowledge the patch I can merge it via the trivial branch.

Acked-by: Gerd Hoffmann <kraxel@redhat.com>

thanks,
  Gerd


Re: [PATCH] hid: Implement support for side and extra buttons
Posted by Laurent Vivier 2 years, 1 month ago
Le 26/11/2021 à 15:04, Noah Bergbauer a écrit :
> Simply set the respective bits and update the descriptor accordingly.
> 
> Signed-off-by: Noah Bergbauer <noah@statshelix.com>
> ---
>   hw/input/hid.c   | 2 ++
>   hw/usb/dev-hid.c | 6 +++---
>   2 files changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/hw/input/hid.c b/hw/input/hid.c
> index 8aab0521f4..e7ecebdf8f 100644
> --- a/hw/input/hid.c
> +++ b/hw/input/hid.c
> @@ -114,6 +114,8 @@ static void hid_pointer_event(DeviceState *dev, QemuConsole *src,
>           [INPUT_BUTTON_LEFT]   = 0x01,
>           [INPUT_BUTTON_RIGHT]  = 0x02,
>           [INPUT_BUTTON_MIDDLE] = 0x04,
> +        [INPUT_BUTTON_SIDE] = 0x08,
> +        [INPUT_BUTTON_EXTRA] = 0x10,
>       };
>       HIDState *hs = (HIDState *)dev;
>       HIDPointerEvent *e;
> diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c
> index 1c7ae97c30..bdd6d1ffaf 100644
> --- a/hw/usb/dev-hid.c
> +++ b/hw/usb/dev-hid.c
> @@ -461,14 +461,14 @@ static const uint8_t qemu_mouse_hid_report_descriptor[] = {
>       0xa1, 0x00,		/*   Collection (Physical) */
>       0x05, 0x09,		/*     Usage Page (Button) */
>       0x19, 0x01,		/*     Usage Minimum (1) */
> -    0x29, 0x03,		/*     Usage Maximum (3) */
> +    0x29, 0x05,		/*     Usage Maximum (5) */
>       0x15, 0x00,		/*     Logical Minimum (0) */
>       0x25, 0x01,		/*     Logical Maximum (1) */
> -    0x95, 0x03,		/*     Report Count (3) */
> +    0x95, 0x05,		/*     Report Count (5) */
>       0x75, 0x01,		/*     Report Size (1) */
>       0x81, 0x02,		/*     Input (Data, Variable, Absolute) */
>       0x95, 0x01,		/*     Report Count (1) */
> -    0x75, 0x05,		/*     Report Size (5) */
> +    0x75, 0x03,		/*     Report Size (3) */
>       0x81, 0x01,		/*     Input (Constant) */
>       0x05, 0x01,		/*     Usage Page (Generic Desktop) */
>       0x09, 0x30,		/*     Usage (X) */

Applied to my trivial-patches branch.

Thanks,
Laurent