summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hw/usb/hid-logitech-hidpp20.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/hw/usb/hid-logitech-hidpp20.c b/hw/usb/hid-logitech-hidpp20.c
index 4bebe0af44..001eea0479 100644
--- a/hw/usb/hid-logitech-hidpp20.c
+++ b/hw/usb/hid-logitech-hidpp20.c
@@ -238,6 +238,20 @@ static HIDPP20_FEATURE(feat_unknown)
return -HIDPP20_ERR_CODE_UNSUPPORTED;
}
+static HIDPP20_FEATURE(feat_reprogcontrols)
+{
+ /* TODO: if controls really matter, add hd->info.controls{,_count} */
+ switch (fn) {
+ case 0: /* ctrlIDCount = GetCount() */
+ params[0] = 0;
+ return 1;
+ case 1: /* ctrlIDIndex+flags list = GetCtrlIDInfo(ctrlIDIndex) */
+ return -HIDPP20_ERR_CODE_OUTOFRANGE;
+ default:
+ return -HIDPP20_ERR_CODE_INVALID_FUNCTION_ID;
+ }
+}
+
/* root feature not included! */
static const HidppFeature features_m525[] = {
{ 0x0001, 0, feat_featureset },
@@ -246,6 +260,7 @@ static const HidppFeature features_m525[] = {
{ 0x1000, 0, feat_batterystatus },
{ 0x1D4B, 0, NULL }, /* WirelessDeviceStatus events */
{ 0x1DF3, HIDPP20_FEAT_TYPE_HIDDEN, feat_unknown },
+ { 0x1B00, 0, feat_reprogcontrols },
{ 0x1DF0, HIDPP20_FEAT_TYPE_HIDDEN, feat_unknown },
{ 0x1F03, HIDPP20_FEAT_TYPE_HIDDEN, feat_unknown },
};