summaryrefslogtreecommitdiff
path: root/hw/usb/hid-logitech-hidpp20.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/usb/hid-logitech-hidpp20.c')
-rw-r--r--hw/usb/hid-logitech-hidpp20.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/hw/usb/hid-logitech-hidpp20.c b/hw/usb/hid-logitech-hidpp20.c
index 7f679d7828..ba9807079e 100644
--- a/hw/usb/hid-logitech-hidpp20.c
+++ b/hw/usb/hid-logitech-hidpp20.c
@@ -315,12 +315,46 @@ static const HidppFeature features_t650[] = {
{ 0x1830, HIDPP20_FEAT_TYPE_HIDDEN | HIDPP20_FEAT_TYPE_INTERNAL, feat_unknown },
};
+static const HidppFeature features_t400[] = {
+ { 0x0001, 0, feat_featureset },
+ { 0x0002, 0, feat_featureinfo },
+ { 0x0003, 0, feat_devicefwversion },
+ { 0x0005, 0, feat_devicename },
+ { 0x00C0, 0, feat_dfucontrol },
+ { 0x1000, 0, feat_batterystatus },
+ { 0x1802, HIDPP20_FEAT_TYPE_HIDDEN | HIDPP20_FEAT_TYPE_INTERNAL, feat_unknown },
+ { 0x1810, HIDPP20_FEAT_TYPE_HIDDEN | HIDPP20_FEAT_TYPE_INTERNAL, feat_unknown },
+ { 0x1830, HIDPP20_FEAT_TYPE_HIDDEN | HIDPP20_FEAT_TYPE_INTERNAL, feat_unknown },
+ { 0x1850, HIDPP20_FEAT_TYPE_HIDDEN | HIDPP20_FEAT_TYPE_INTERNAL, feat_unknown },
+ { 0x1860, HIDPP20_FEAT_TYPE_HIDDEN | HIDPP20_FEAT_TYPE_INTERNAL, feat_unknown },
+ { 0x1890, HIDPP20_FEAT_TYPE_HIDDEN | HIDPP20_FEAT_TYPE_INTERNAL, feat_unknown },
+ { 0x18A0, HIDPP20_FEAT_TYPE_HIDDEN | HIDPP20_FEAT_TYPE_INTERNAL, feat_unknown },
+ { 0x18E3, HIDPP20_FEAT_TYPE_HIDDEN | HIDPP20_FEAT_TYPE_INTERNAL, feat_unknown },
+ { 0x1B00, 0, feat_reprogcontrols },
+ { 0x1D4B, 0, NULL }, /* WirelessDeviceStatus events */
+ { 0x1DF3, HIDPP20_FEAT_TYPE_HIDDEN | HIDPP20_FEAT_TYPE_INTERNAL, feat_unknown },
+ { 0x1E00, HIDPP20_FEAT_TYPE_HIDDEN, feat_unknown },
+ { 0x1E80, HIDPP20_FEAT_TYPE_HIDDEN | HIDPP20_FEAT_TYPE_INTERNAL, feat_unknown },
+ { 0x1F03, HIDPP20_FEAT_TYPE_HIDDEN | HIDPP20_FEAT_TYPE_INTERNAL, feat_unknown },
+ { 0x1F04, HIDPP20_FEAT_TYPE_HIDDEN | HIDPP20_FEAT_TYPE_INTERNAL, feat_unknown },
+// { 0x2100, 0, feat_verticalscrolling },
+ { 0x2101, HIDPP20_FEAT_TYPE_HIDDEN, feat_unknown },
+// { 0x2120, 0, feat_hiresscrolling },
+// { 0x2200, 0, feat_mousepointer },
+// { 0x6110, HIDPP20_FEAT_TYPE_HIDDEN, feat_touchmouserawpoints },
+// { 0x1B03, 0, feat_reprogcontrolsv3 },
+};
+
void hidpp20_init_features(LHidDevice *hd) {
switch (hd->info.wireless_pid) {
case WPID_M525:
hd->info.features = features_m525;
hd->info.features_count = ARRAY_SIZE(features_m525);
break;
+ case WPID_T400:
+ hd->info.features = features_t400;
+ hd->info.features_count = ARRAY_SIZE(features_t400);
+ break;
case WPID_T650:
hd->info.features = features_t650;
hd->info.features_count = ARRAY_SIZE(features_t650);