|
|
|
@ -25,7 +25,7 @@ |
|
|
|
|
|
|
|
|
|
#define REPORT_MAX_SIZE 0x40 // 64 Bytes
|
|
|
|
|
|
|
|
|
|
#define REPORT_UNKNOWN_0_SIZE 0x2 |
|
|
|
|
#define REPORT_POLLING_RATE_SIZE 0x2 |
|
|
|
|
#define REPORT_DPI_SETTINGS_SIZE 0x39 // 2b with old software, 5 profiles to 7 ?
|
|
|
|
|
#define REPORT_UNKNOWN_1_SIZE 0x2 |
|
|
|
|
#define REPORT_UNKNOWN_2_SIZE 0x24 |
|
|
|
@ -38,7 +38,7 @@ |
|
|
|
|
#define REPORT_WIRELESS_MOUSE_SIZE 0x1 |
|
|
|
|
#define REPORT_WIRELESS_FIRMWARE_VERSION_SIZE 0x4 // -> 0x7
|
|
|
|
|
|
|
|
|
|
#define COMMAND_UNKNOWN_0 0x82 |
|
|
|
|
#define COMMAND_POLLING_RATE 0x82 |
|
|
|
|
#define COMMAND_DPI_SETTINGS 0x83 |
|
|
|
|
#define COMMAND_UNKNOWN_1 0x92 |
|
|
|
|
#define COMMAND_UNKNOWN_2 0x84 |
|
|
|
@ -87,16 +87,35 @@ struct REPORT_DPI_SETTINGS |
|
|
|
|
} __attribute__((packed)); |
|
|
|
|
static_assert(sizeof(struct REPORT_DPI_SETTINGS) == REPORT_MAX_SIZE, "Report DPI_SETTINGS not of right size"); |
|
|
|
|
|
|
|
|
|
struct REPORT_UNKNOWN_0 |
|
|
|
|
struct REPORT_POLLING_RATE |
|
|
|
|
{ |
|
|
|
|
report_header_t header; |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* HTX 4K, wireless: |
|
|
|
|
* 4000 Hz: 40 |
|
|
|
|
* 2000 Hz: 20 |
|
|
|
|
* 1000 Hz: 01 |
|
|
|
|
* 500 Hz: 02 |
|
|
|
|
* 250 Hz: 04 |
|
|
|
|
* 125 Hz: 08 |
|
|
|
|
*/ |
|
|
|
|
uint8_t value0; |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* HTX 4K, wireless: |
|
|
|
|
* 4000 Hz: 00 |
|
|
|
|
* 2000 Hz: 87 |
|
|
|
|
* 1000 Hz: 3b |
|
|
|
|
* 500 Hz: 08 |
|
|
|
|
* 250 Hz: 00 |
|
|
|
|
* 125 Hz: 3b |
|
|
|
|
*/ |
|
|
|
|
uint8_t value1; |
|
|
|
|
|
|
|
|
|
uint8_t zeros[REPORT_MAX_SIZE - sizeof(report_header_t) - 2]; |
|
|
|
|
} __attribute__((packed)); |
|
|
|
|
static_assert(sizeof(struct REPORT_UNKNOWN_0) == REPORT_MAX_SIZE, "Report UNKNOWN_0 not of right size"); |
|
|
|
|
static_assert(sizeof(struct REPORT_POLLING_RATE) == REPORT_MAX_SIZE, "Report POLLING_RATE not of right size"); |
|
|
|
|
|
|
|
|
|
struct REPORT_UNKNOWN_1 |
|
|
|
|
{ |
|
|
|
|