From c5d704334fc1f179900a4e1c4433f5ccbbc0541f Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Fri, 3 May 2019 11:59:02 +0200 Subject: [PATCH] hid: Add HidP_SetUsages implementation. Signed-off-by: Piotr Caban Signed-off-by: Aric Stewart Signed-off-by: Alexandre Julliard --- dlls/hid/hid.spec | 2 +- dlls/hid/hidp.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/dlls/hid/hid.spec b/dlls/hid/hid.spec index 5714d6cc793..b50e04d197f 100644 --- a/dlls/hid/hid.spec +++ b/dlls/hid/hid.spec @@ -38,7 +38,7 @@ @ stub HidP_SetScaledUsageValue @ stdcall HidP_SetUsageValue(long long long long long ptr ptr long) @ stub HidP_SetUsageValueArray -@ stub HidP_SetUsages +@ stdcall HidP_SetUsages(long long long ptr ptr ptr ptr long) @ stdcall HidP_TranslateUsagesToI8042ScanCodes(ptr long long ptr ptr ptr) @ stub HidP_UnsetUsages @ stub HidP_UsageListDifference diff --git a/dlls/hid/hidp.c b/dlls/hid/hidp.c index 7c58426179e..e4d482047c7 100644 --- a/dlls/hid/hidp.c +++ b/dlls/hid/hidp.c @@ -616,6 +616,38 @@ NTSTATUS WINAPI HidP_SetUsageValue(HIDP_REPORT_TYPE ReportType, USAGE UsagePage, } +NTSTATUS WINAPI HidP_SetUsages(HIDP_REPORT_TYPE ReportType, USAGE UsagePage, USHORT LinkCollection, + PUSAGE UsageList, PULONG UsageLength, PHIDP_PREPARSED_DATA PreparsedData, + PCHAR Report, ULONG ReportLength) +{ + WINE_HID_ELEMENT *element; + NTSTATUS rc; + ULONG i; + + TRACE("(%i, %x, %i, %p, %p, %p, %p, %i)\n", ReportType, UsagePage, LinkCollection, UsageList, + UsageLength, PreparsedData, Report, ReportLength); + + for (i = 0; i < *UsageLength; i++) + { + rc = find_value(ReportType, UsagePage, LinkCollection, + UsageList[i], PreparsedData, Report, &element); + if (rc == HIDP_STATUS_SUCCESS) + { + rc = set_report_data((BYTE*)Report, ReportLength, + element->valueStartBit, element->bitCount, -1); + + if (rc != HIDP_STATUS_SUCCESS) + { + *UsageLength = i; + return rc; + } + } + } + + return HIDP_STATUS_SUCCESS; +} + + NTSTATUS WINAPI HidP_TranslateUsagesToI8042ScanCodes(USAGE *ChangedUsageList, ULONG UsageListLength, HIDP_KEYBOARD_DIRECTION KeyAction, HIDP_KEYBOARD_MODIFIER_STATE *ModifierState,