[ADD] Added report rate changing
Cannot confirm that working, tho
This commit is contained in:
@@ -154,10 +154,11 @@ uint8_t Mouse::getBackLightLevel() {
|
||||
return response[8];
|
||||
}
|
||||
|
||||
uint8_t Mouse::setDPI(uint8_t dpi){
|
||||
uint8_t Mouse::setDPI(uint8_t rate, uint8_t dpi){
|
||||
if(dpi < 0 || dpi > 40) dpi=32;
|
||||
uint8_t data[72] = {A4TECH_MAGIC, DPI_SET_OPCODE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1a,0x1a,0x88,0x02,0x00, };
|
||||
memcpy(data + 10, dpi_binary+dpi*3, 3);
|
||||
data[14] = rate_binary[rate];
|
||||
return writeToMouse(data, sizeof(data));
|
||||
}
|
||||
|
||||
|
||||
3
Mouse.h
3
Mouse.h
@@ -36,6 +36,7 @@ static const int BACKLIGHT_READ = 0x00;
|
||||
|
||||
static const int DPI_SET_OPCODE = 0x0d;
|
||||
static const uint8_t dpi_binary[120] = {0x07,0x07,0x81,0x10,0x10,0x81,0x10,0x10,0x81,0x0d,0x0d,0x82,0x10,0x10,0x82,0x0d,0x0d,0x83,0x10,0x10,0x83,0x10,0x10,0x83,0x0f,0x0f,0x84,0x10,0x10,0x84,0x0e,0x0e,0x85,0x10,0x10,0x85,0x10,0x10,0x85,0x0f,0x0f,0x86,0x10,0x10,0x86,0x0f,0x0f,0x87,0x10,0x10,0x87,0x10,0x10,0x87,0x0f,0x0f,0x88,0x10,0x10,0x88,0x11,0x11,0x88,0x12,0x12,0x88,0x13,0x13,0x88,0x14,0x14,0x88,0x15,0x15,0x88,0x16,0x16,0x88,0x17,0x17,0x88,0x18,0x18,0x88,0x19,0x19,0x88,0x1a,0x1a,0x88,0x1b,0x1b,0x88,0x1c,0x1c,0x88,0x1d,0x1d,0x88,0x1e,0x1e,0x88,0x1e,0x1e,0x88,0x1f,0x1f,0x88,0x1f,0x1f,0x88};
|
||||
static const uint8_t rate_binary[4] = {0x08,0x04,0x02,0x02}; //4 entryes because 500/125-1 produces 3, not 2
|
||||
|
||||
class Mouse {
|
||||
public:
|
||||
@@ -47,7 +48,7 @@ public:
|
||||
uint8_t getBackLightLevel();
|
||||
int readFromMouse(uint8_t *request, size_t requestSize, uint8_t *response, size_t responseSize);
|
||||
int writeToMouse(uint8_t data[], size_t size);
|
||||
uint8_t setDPI(uint8_t dpi);
|
||||
uint8_t setDPI(uint8_t rate, uint8_t dpi);
|
||||
private:
|
||||
std::map<int, libusb_device_handle*> devices;
|
||||
libusb_device_handle* currentDevice = nullptr;
|
||||
|
||||
13
main.cpp
13
main.cpp
@@ -3,8 +3,7 @@
|
||||
|
||||
int main() {
|
||||
Mouse m;
|
||||
int address, level, DPI_level;
|
||||
int default_dpi = 3200;
|
||||
int address, level, DPI_level, rate;
|
||||
m.init();
|
||||
do {
|
||||
m.listDevices();
|
||||
@@ -25,8 +24,14 @@ int main() {
|
||||
if(DPI_level < 100 || DPI_level > 4000) std::cout<<"Bad number. Try again!\n"<<std::endl;
|
||||
}while(DPI_level < 100 || DPI_level > 4000);
|
||||
|
||||
printf("Setting it to %d, boss!\n", DPI_level);
|
||||
int error = m.setDPI(DPI_level/100-1);
|
||||
do {
|
||||
std::cout << "Select Report Rate(in hz)(125, 250, 500): ";
|
||||
std::cin >> rate;
|
||||
if(rate !=125 & rate != 250 & rate != 500) std::cout<<"Bad number. Try again!\n"<<std::endl;
|
||||
}while(rate !=125 & rate != 250 & rate != 500);
|
||||
|
||||
printf("Setting it boss!\n");
|
||||
int error = m.setDPI((rate/125)-1, (DPI_level/100)-1); // rate: 125 = 0 250 = 1 500 = 3
|
||||
if(error != 0){
|
||||
std::cout<<"Sorry boss, i cant... err: "<<(int)error<<std::endl;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user