--- a/input/device.c +++ b/input/device.c @@ -658,6 +658,19 @@ static int hidp_add_connection(const struct input_device *idev, err = write(sk, buf, sizeof(buf)); } + if (req->vendor == 0x056a && req->product == 0x81) { + unsigned char buf[3]; + int sk = g_io_channel_unix_get_fd(iconn->ctrl_io); + + buf[0] = 0x53; /* HIDP_TRANS_SET_REPORT | HIDP_DATA_RTYPE_FEATURE */ + buf[1] = 0x03; buf[2] = 0x00; + write(sk, buf, sizeof(buf)); + + buf[0] = 0x53; /* HIDP_TRANS_SET_REPORT | HIDP_DATA_RTYPE_FEATURE */ + /* 0x06 - high reporting speed, 0x05 - low speed */ + buf[1] = 0x05; buf[2] = 0x00; + write(sk, buf, sizeof(buf)); + } err = ioctl_connadd(req); cleanup: