From d72842f2b3e9cccca6815c9c0fc0dfaf55307f87 Mon Sep 17 00:00:00 2001 From: homayk228 <43516026+SouceCalve@users.noreply.github.com> Date: Wed, 26 Nov 2025 23:11:53 +0700 Subject: [PATCH] [ADD] Added support for RT7 and DPI change DPI change - not fully done, still need some work for most dpi's, but 100-300 and 3200 should work! --- .gitignore | 5 ++ Mouse.cpp | 4 +- Mouse.h | 9 ++- main.cpp | 194 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 206 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index e464c60..e1ec761 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,7 @@ /build +/CMakeFiles +bloody +Makefile +cmake_install.cmake +CMakeCache.txt diff --git a/Mouse.cpp b/Mouse.cpp index 016f140..9615615 100644 --- a/Mouse.cpp +++ b/Mouse.cpp @@ -151,6 +151,8 @@ uint8_t Mouse::getBackLightLevel() { return response[8]; } + + void Mouse::listDevices() { std::cout<<"Available devices:"< devices; libusb_device_handle* currentDevice = nullptr; libusb_context* context = nullptr; - int writeToMouse(uint8_t data[], size_t size); - int readFromMouse(uint8_t* request, size_t requestSize, - uint8_t* response, size_t responseSize); + + //int readFromMouse(uint8_t* request, size_t requestSize, uint8_t* response, size_t responseSize); void discoverDevices(); diff --git a/main.cpp b/main.cpp index c52a139..6ea139c 100644 --- a/main.cpp +++ b/main.cpp @@ -1,9 +1,10 @@ #include #include "Mouse.h" - +#include int main() { Mouse m; - int address, level; + int address, level, DPI_level; + int default_dpi = 3200; m.init(); do { m.listDevices(); @@ -18,6 +19,195 @@ int main() { std::cin >> level; }while(m.setBackLightLevel(level) < 0); + uint8_t data[72] = {A4TECH_MAGIC, DPI_SET_OPCODE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1a,0x1a,0x88,0x02,0x00, }; + + do { + std::cout << "Select DPI(100-4000):"; + std::cin >> DPI_level; + }while(DPI_level < 0 || DPI_level > 4000); + + switch(DPI_level){ + case 100: + printf("Setting it to 100, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 200: + printf("Setting it to 200, boss\n"); + memcpy(data + 10, (uint8_t[]){0x10, 0x10, 0x81}, 3); + break; + case 300: + printf("Setting it to 300, boss\n"); + memcpy(data + 10, (uint8_t[]){0x10, 0x10, 0x81}, 3); + break; + case 400: + printf("Setting it to 400, boss\n"); //остановился здесь(3200 тоже прописал) + memcpy(data + 10, (uint8_t[]){0x0d, 0x0d, 0x82}, 3); + break; + case 500: + printf("Setting it to 500, boss\n"); + memcpy(data + 10, (uint8_t[]){0x10, 0x10, 0x82}, 3); + break; + case 600: + printf("Setting it to 600, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 700: + printf("Setting it to 700, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 800: + printf("Setting it to 800, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 900: + printf("Setting it to 900, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 1000: + printf("Setting it to 1000, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 1100: + printf("Setting it to 1100, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 1200: + printf("Setting it to 1200, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 1300: + printf("Setting it to 1300, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 1400: + printf("Setting it to 1400, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 1500: + printf("Setting it to 1500, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 1600: + printf("Setting it to 1600, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 1700: + printf("Setting it to 1700, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 1800: + printf("Setting it to 1800, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 1900: + printf("Setting it to 1900, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 2000: + printf("Setting it to 2000, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 2100: + printf("Setting it to 2100, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 2200: + printf("Setting it to 2200, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 2300: + printf("Setting it to 2300, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 2400: + printf("Setting it to 2400, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 2500: + printf("Setting it to 2500, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 2600: + printf("Setting it to 2600, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 2700: + printf("Setting it to 2700, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 2800: + printf("Setting it to 2800, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 2900: + printf("Setting it to 2900, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 3000: + printf("Setting it to 3000, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 3100: + printf("Setting it to 3100, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 3200: + printf("Setting it to 3200, boss\n"); + memcpy(data + 10, (uint8_t[]){0x1a, 0x1a, 0x88}, 3); + break; + case 3300: + printf("Setting it to 3300, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 3400: + printf("Setting it to 3400, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 3500: + printf("Setting it to 3500, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 3600: + printf("Setting it to 3600, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 3700: + printf("Setting it to 3700, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 3800: + printf("Setting it to 3800, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 3900: + printf("Setting it to 3900, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + case 4000: + printf("Setting it to 4000, boss\n"); + memcpy(data + 10, (uint8_t[]){0x07, 0x07, 0x81}, 3); + break; + default: + printf("Setting it to %d, boss\n", default_dpi); + break; + + } + + //uint8_t data[72] = {A4TECH_MAGIC, DPI_SET_OPCODE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1a,0x1a,0x88,0x02,0x00, }; + + int error = m.writeToMouse(data, sizeof(data)); + printf("Code: %d\n", error); + /*for(int x = 0; x<71; x++){ + std::cout<<(int)data[x]<