Rémi Bernon : winebus.sys: Add some buttons to HID keyboard input report.

Alexandre Julliard julliard at winehq.org
Fri Jun 4 14:32:29 CDT 2021


Module: wine
Branch: master
Commit: 001b70774f70ddcf2b956d2264201780e2c622d5
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=001b70774f70ddcf2b956d2264201780e2c622d5

Author: Rémi Bernon <rbernon at codeweavers.com>
Date:   Fri Jun  4 12:47:06 2021 +0200

winebus.sys: Add some buttons to HID keyboard input report.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/winebus.sys/controller.h | 3 ++-
 dlls/winebus.sys/main.c       | 8 +++++---
 2 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/dlls/winebus.sys/controller.h b/dlls/winebus.sys/controller.h
index a941b543c08..2f4a72a94cd 100644
--- a/dlls/winebus.sys/controller.h
+++ b/dlls/winebus.sys/controller.h
@@ -33,7 +33,7 @@ static const BYTE REPORT_HEADER[] = {
 #define IDX_HEADER_USAGE 3
 
 static const BYTE REPORT_BUTTONS[] = {
-    USAGE_PAGE(1, HID_USAGE_PAGE_BUTTON),
+    USAGE_PAGE(1, /* placeholder */ HID_USAGE_PAGE_BUTTON),
     USAGE_MINIMUM(1, /* placeholder */ 1),
     USAGE_MAXIMUM(1, /* placeholder */ 3),
     LOGICAL_MINIMUM(1, 0),
@@ -44,6 +44,7 @@ static const BYTE REPORT_BUTTONS[] = {
     REPORT_SIZE(1, 1),
     INPUT(1, Data|Var|Abs),
 };
+#define IDX_BUTTON_USAGE_PAGE 1
 #define IDX_BUTTON_MIN_USAGE 3
 #define IDX_BUTTON_MAX_USAGE 5
 #define IDX_BUTTON_COUNT 15
diff --git a/dlls/winebus.sys/main.c b/dlls/winebus.sys/main.c
index a572d11f822..a512015d478 100644
--- a/dlls/winebus.sys/main.c
+++ b/dlls/winebus.sys/main.c
@@ -546,12 +546,14 @@ static NTSTATUS keyboard_get_reportdescriptor(DEVICE_OBJECT *device, BYTE *buffe
 {
     TRACE("buffer %p, length %u.\n", buffer, length);
 
-    *ret_length = sizeof(REPORT_HEADER) + sizeof(REPORT_TAIL);
-    if (length < sizeof(REPORT_HEADER) + sizeof(REPORT_TAIL))
+    *ret_length = sizeof(REPORT_HEADER) + sizeof(REPORT_BUTTONS) + sizeof(REPORT_TAIL);
+    if (length < sizeof(REPORT_HEADER) + sizeof(REPORT_BUTTONS) + sizeof(REPORT_TAIL))
         return STATUS_BUFFER_TOO_SMALL;
 
     memcpy(buffer, REPORT_HEADER, sizeof(REPORT_HEADER));
-    memcpy(buffer + sizeof(REPORT_HEADER), REPORT_TAIL, sizeof(REPORT_TAIL));
+    add_button_block(buffer + sizeof(REPORT_HEADER), 0, 101);
+    buffer[sizeof(REPORT_HEADER) + IDX_BUTTON_USAGE_PAGE] = HID_USAGE_PAGE_KEYBOARD;
+    memcpy(buffer + sizeof(REPORT_HEADER) + sizeof(REPORT_BUTTONS), REPORT_TAIL, sizeof(REPORT_TAIL));
     buffer[IDX_HEADER_PAGE] = HID_USAGE_PAGE_GENERIC;
     buffer[IDX_HEADER_USAGE] = HID_USAGE_GENERIC_KEYBOARD;
 




More information about the wine-cvs mailing list