diff --git a/Controllers/CorsairPeripheralController/CorsairK100Controller.cpp b/Controllers/CorsairPeripheralController/CorsairK100Controller.cpp deleted file mode 100644 index f57c9cc4..00000000 --- a/Controllers/CorsairPeripheralController/CorsairK100Controller.cpp +++ /dev/null @@ -1,172 +0,0 @@ -/*-----------------------------------------*\ -| CorsairK100Controller.cpp | -| | -| Driver for Corsair K100 Keyboard | -\*-----------------------------------------*/ - -#include "CorsairK100Controller.h" -#include "LogManager.h" - -static unsigned int keys_k100[] = {0x25, 0x31, 0x27, 0x35, 0x66, 0x65, 0x41, 0x2A, 0x6E, 0x5B, 0x36, 0x1A, 0x10, 0x00, 0x68, 0x42, - 0x62, 0x5C, 0x37, 0x1B, 0x16, 0x12, 0x19, 0x67, 0x43, 0x26, 0x77, 0x5D, 0x38, 0x1C, 0x04, 0x03, - 0x17, 0x44, 0x48, 0x7A, 0x39, 0x1D, 0x11, 0x05, 0x02, 0x28, 0x45, 0x49, 0x78, 0x58, 0x3A, 0x1E, - 0x13, 0x06, 0x15, 0x46, 0x4A, 0x79, 0x59, 0x3B, 0x1F, 0x18, 0x07, 0x01, 0x47, 0x6A, 0x4F, 0x5A, - 0x3C, 0x20, 0x14, 0x09, 0x0D, 0x6B, 0x2C, 0x69, 0x50, 0x55, 0x3D, 0x21, 0x08, 0x0A, 0x0C, 0x76, - 0x2D, 0x4E, 0x51, 0x56, 0x3E, 0x22, 0x0E, 0x0B, 0x32, 0x61, 0x4C, 0x52, 0x57, 0x3F, 0x23, 0x0F, - 0x2F, 0x33, 0x24, 0x4D, 0x53, 0x5E, 0x40, 0x29, 0x2B, 0x30, 0x34, /*Brightness,*/ - 0x4B, 0x54, 0x5F, 0x60, 0x2E, 0x7C, - 0x7F, 0x80, 0x81, 0x82, 0x83, 0x84,//Macro - 0xA6, 0xA5, 0xA4, 0xA3, 0xA2, 0xA1, 0xA0, 0x9F, 0x9E, 0x9D, 0x9C, 0x86, 0x87, 0x88, 0x89, 0x8A, - 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, - 0x9B, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF,0xB0, 0xB1, //Light Bar - 0x85, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9,//Nameplate - 0xBA, 0xBB, 0xBC/*Logo*/}; - -CorsairK100Controller::CorsairK100Controller(hid_device* dev_handle, const char* path) -{ - dev = dev_handle; - location = path; - keyboard_type = CORSAIR_TYPE_K100; - - LightingControl(); -} -CorsairK100Controller::~CorsairK100Controller() -{ - hid_close(dev); -} - -std::string CorsairK100Controller::GetDeviceLocation() -{ - return("HID: " + location); -} - -std::string CorsairK100Controller::GetFirmwareString() -{ - return ""; -} - -std::string CorsairK100Controller::GetName() -{ - return name; -} - -void CorsairK100Controller::SetName(std::string device_name) -{ - name = device_name; -} - -CorsairKeyboardType CorsairK100Controller::GetKeyboardType() -{ - return keyboard_type; -} - -std::string CorsairK100Controller::GetSerialString() -{ - wchar_t serial_string[128]; - int ret = hid_get_serial_number_string(dev, serial_string, 128); - - if(ret != 0) - { - return(""); - } - - std::wstring return_wstring = serial_string; - std::string return_string(return_wstring.begin(), return_wstring.end()); - - return(return_string); -} - -void CorsairK100Controller::LightingControl() -{ - unsigned char usb_buf[65]; - memset(usb_buf, 0x00, sizeof(usb_buf)); - //This is requered - usb_buf[0x01] = 0x08; - usb_buf[0x02] = 0x01; - usb_buf[0x03] = 0x03; - usb_buf[0x05] = 0x02; - - hid_write(dev, (unsigned char *)usb_buf, 65); - - memset(usb_buf, 0x00, sizeof(usb_buf)); - - usb_buf[0x01] = 0x08; - usb_buf[0x02] = 0x01; - usb_buf[0x03] = 0x4A; - usb_buf[0x05] = 0x01; - - hid_write(dev, (unsigned char *)usb_buf, 65); - - memset(usb_buf, 0x00, sizeof(usb_buf)); - - usb_buf[0x01] = 0x08; - usb_buf[0x02] = 0x01; - usb_buf[0x03] = 0x45; - usb_buf[0x05] = 0x00; - - hid_write(dev, (unsigned char *)usb_buf, 65); - - memset(usb_buf, 0x00, sizeof(usb_buf)); - //This is requered - usb_buf[0x01] = 0x08; - usb_buf[0x02] = 0x0D; - usb_buf[0x03] = 0x01; - usb_buf[0x04] = 0x22; - - hid_write(dev, (unsigned char *)usb_buf, 65); - - /*memset(usb_buf, 0x00, sizeof(usb_buf)); - - usb_buf[0x01] = 0x08; - usb_buf[0x02] = 0x05; - usb_buf[0x03] = 0x01; - - hid_write(dev, (unsigned char *)usb_buf, 65); - - memset(usb_buf, 0x00, sizeof(usb_buf)); - - int res = hid_read_timeout(dev, usb_buf, 50, 1000); - - if (res == 0 || usb_buf[1] != 0x01) - { - LOG_INFO("[Corsair-K100] This device did not allow to take control over it. recieved response: %02X", usb_buf[1]); - keyboard_type = CORSAIR_TYPE_UNKNOWN; - }*/ - -} - -void CorsairK100Controller::SetLEDs(std::vectorcolors) -{ - switch(keyboard_type) - { - case CORSAIR_TYPE_K100: - SetLEDsKeyboardFull(colors); - break; - - case CORSAIR_TYPE_UNKNOWN: - break; - } -} - -void CorsairK100Controller::SetLEDsKeyboardFull(std::vector colors) -{ - unsigned char usb_buf[600]; - memset(usb_buf, 0x00, sizeof(usb_buf)); - - usb_buf[0x01] = 0x08; - usb_buf[0x02] = 0x06; - usb_buf[0x03] = 0x01; - usb_buf[0x04] = 0x45; - usb_buf[0x05] = 0x02; - usb_buf[0x08] = 0x12; - - for(std::size_t color_idx = 0; color_idx < colors.size(); color_idx++) - { - RGBColor color = colors[color_idx]; - usb_buf[0x16 + keys_k100[color_idx]*3] = RGBGetRValue(color); - usb_buf[0x17 + keys_k100[color_idx]*3] = RGBGetGValue(color); - usb_buf[0x18 + keys_k100[color_idx]*3] = RGBGetBValue(color); - } - - hid_write(dev, (unsigned char *)usb_buf, 600); -} diff --git a/Controllers/CorsairPeripheralController/CorsairK100Controller.h b/Controllers/CorsairPeripheralController/CorsairK100Controller.h deleted file mode 100644 index b97911a5..00000000 --- a/Controllers/CorsairPeripheralController/CorsairK100Controller.h +++ /dev/null @@ -1,49 +0,0 @@ -/*-----------------------------------------*\ -| CorsairK100Controller.h | -| | -| Driver for Corsair K100 Keyboard | -\*-----------------------------------------*/ - -#ifndef CORSAIRK100CONTROLLER_H -#define CORSAIRK100CONTROLLER_H - -#include "RGBController.h" - -#include -#include - -typedef enum -{ - CORSAIR_TYPE_UNKNOWN = 0, - CORSAIR_TYPE_K100 = 1 -} CorsairKeyboardType; - -class CorsairK100Controller -{ -public: - CorsairK100Controller(hid_device* dev_handle, const char* path); - ~CorsairK100Controller(); - CorsairKeyboardType GetKeyboardType(); - std::string GetDeviceLocation(); - std::string GetFirmwareString(); - std::string GetName(); - std::string GetSerialString(); - - void SetLEDs(std::vector colors); - void SetLEDsKeyboardLimited(std::vector colors); - void SetName(std::string device_name); - -private: - hid_device* dev; - - std::string firmware_version; - std::string location; - std::string name; - device_type type; - CorsairKeyboardType keyboard_type; - - void LightingControl(); - void SetLEDsKeyboardFull(std::vector colors); -}; - -#endif // CORSAIRK100CONTROLLER_H diff --git a/Controllers/CorsairPeripheralController/CorsairPeripheralControllerDetect.cpp b/Controllers/CorsairPeripheralController/CorsairPeripheralControllerDetect.cpp index ccbc6ef7..835da20c 100644 --- a/Controllers/CorsairPeripheralController/CorsairPeripheralControllerDetect.cpp +++ b/Controllers/CorsairPeripheralController/CorsairPeripheralControllerDetect.cpp @@ -3,7 +3,6 @@ \*-----------------------------------------------------*/ #include #include "Detector.h" -#include "CorsairK55RGBPROXTController.h" #include "LogManager.h" #include "RGBController.h" @@ -11,7 +10,6 @@ | Corsair Peripheral specific includes | \*-----------------------------------------------------*/ #include "RGBController_CorsairPeripheral.h" -#include "RGBController_CorsairK100.h" #include "RGBController_CorsairK55RGBPROXT.h" #include "RGBController_CorsairK65Mini.h" #include "RGBController_CorsairK95PlatinumXT.h" @@ -85,13 +83,6 @@ \*-----------------------------------------------------*/ #define CORSAIR_ST100_PID 0x0A34 -/*-----------------------------------------------------*\ -| Corsair K100 Keyboard product ID | -| This keyboard uses a separate driver | -\*-----------------------------------------------------*/ -#define CORSAIR_K100_OPTICAL_PID 0x1B7C -#define CORSAIR_K100_MXRED_PID 0x1B7D - /*-----------------------------------------------------*\ | Corsair K55 RGB PRO XT Keyboard product ID | | This keyboard uses a separate driver | @@ -110,27 +101,6 @@ \*-----------------------------------------------------*/ #define CORSAIR_K95_PLATINUM_XT_PID 0x1B89 -void DetectCorsairK100Controllers(hid_device_info* info, const std::string& name) -{ - hid_device* dev = hid_open_path(info->path); - - if(dev) - { - CorsairK100Controller* controller = new CorsairK100Controller(dev, info->path); - controller->SetName(name); - - if(controller->GetKeyboardType() != CORSAIR_TYPE_UNKNOWN) - { - RGBController_CorsairK100* rgb_controller = new RGBController_CorsairK100(controller); - ResourceManager::get()->RegisterRGBController(rgb_controller); - } - else - { - delete controller; - } - } -} /* DetectCorsairPeripheralControllers() */ - void DetectCorsairK55RGBPROXTControllers(hid_device_info* info, const std::string& name) { hid_device* dev = hid_open_path(info->path); @@ -259,12 +229,6 @@ REGISTER_HID_DETECTOR_P("Corsair ST100 RGB", DetectCorsairPeriphe REGISTER_HID_DETECTOR_I("Corsair ST100 RGB", DetectCorsairPeripheralControllers, CORSAIR_VID, CORSAIR_ST100_PID, 0); #endif -/*-----------------------------------------------------------------------------------------------------*\ -| Corsair K100 Keyboard | -\*-----------------------------------------------------------------------------------------------------*/ -REGISTER_HID_DETECTOR_IP("Corsair K100", DetectCorsairK100Controllers, CORSAIR_VID, CORSAIR_K100_OPTICAL_PID, 1, 0xFF42); -REGISTER_HID_DETECTOR_IP("Corsair K100", DetectCorsairK100Controllers, CORSAIR_VID, CORSAIR_K100_MXRED_PID, 1, 0xFF42); - /*-----------------------------------------------------------------------------------------------------*\ | Corsair K65 Mini Keyboard | \*-----------------------------------------------------------------------------------------------------*/ diff --git a/Controllers/CorsairPeripheralController/RGBController_CorsairK100.cpp b/Controllers/CorsairPeripheralController/RGBController_CorsairK100.cpp deleted file mode 100644 index 2edca35c..00000000 --- a/Controllers/CorsairPeripheralController/RGBController_CorsairK100.cpp +++ /dev/null @@ -1,383 +0,0 @@ -/*-----------------------------------------*\ -| RGBController_CorsairK100.cpp | -| | -| Driver for Corsair K100 Keyboard | -\*-----------------------------------------*/ - -#include "RGBControllerKeyNames.h" -#include "RGBController_CorsairK100.h" -#include "LogManager.h" - -using namespace std::chrono_literals; - -#define NA 0xFFFFFFFF - -static unsigned int matrix_map_k100[7][24] = - { { NA, 112, NA, 8, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 16, NA, NA, NA,}, - { 113, 0, NA, 10, 18, 28, 36, NA, 46, 55, 64, 74, NA, 84, 93, 102, 6, 15, 24, 33, 26, 35, 44, 53 }, - { 114, 1, 11, 19, 29, 37, 47, 56, 65, 75, 85, 94, NA, 103, 7, 25, NA, 42, 51, 60, 62, 72, 82, 91 }, - { 115, 2, NA, 12, 20, 30, 38, NA, 48, 57, 66, 76, 86, 95, 104, 70, 80, 34, 43, 52, 9, 17, 27, 100 }, - { 116, 3, NA, 13, 21, 31, 39, NA, 49, 58, 67, 77, 87, 96, 105, 98, 111, NA, NA, NA, 45, 54, 63, NA }, - { 117, 4, 110, 22, 32, 40, 50, NA, 59, NA, 68, 78, 88, 97, 106, 61, NA, NA, 81, NA, 73, 83, 92, 108 }, - { 118, 5, 14, 23, NA, NA, NA, NA, 41, NA, NA, NA, NA, 69, 79, 89, 71, 90, 99, 107, 101, NA, 109, NA } }; - -static const char* led_names_k100[] = -{ - KEY_EN_ESCAPE, //0 - KEY_EN_BACK_TICK, //1 - KEY_EN_TAB, //2 - KEY_EN_CAPS_LOCK, //3 - KEY_EN_LEFT_SHIFT, //4 - KEY_EN_LEFT_CONTROL, //5 - KEY_EN_F12, //6 - KEY_EN_EQUALS, //7 - "Key: Lock", //8 - KEY_EN_NUMPAD_7, //9 - KEY_EN_F1, //12 - KEY_EN_1, //13 - KEY_EN_Q, //14 - KEY_EN_A, //15 - KEY_EN_LEFT_WINDOWS, //17 - KEY_EN_PRINT_SCREEN, //18 - KEY_EN_MEDIA_MUTE, //20 - KEY_EN_NUMPAD_8, //21 - KEY_EN_F2, //24 - KEY_EN_2, //25 - KEY_EN_W, //26 - KEY_EN_S, //27 - KEY_EN_Z, //28 - KEY_EN_LEFT_ALT, //29 - KEY_EN_SCROLL_LOCK, //30 - KEY_EN_BACKSPACE, //31 - KEY_EN_MEDIA_STOP, //32 - KEY_EN_NUMPAD_9, //33 - KEY_EN_F3, //36 - KEY_EN_3, //37 - KEY_EN_E, //38 - KEY_EN_D, //39 - KEY_EN_X, //40 - KEY_EN_PAUSE_BREAK, //42 - KEY_EN_DELETE, //43 - KEY_EN_MEDIA_PREVIOUS, //44 - KEY_EN_F4, //48 - KEY_EN_4, //49 - KEY_EN_R, //50 - KEY_EN_F, //51 - KEY_EN_C, //52 - KEY_EN_SPACE, //53 - KEY_EN_INSERT, //54 - KEY_EN_END, //55 - KEY_EN_MEDIA_PLAY_PAUSE, //56 - KEY_EN_NUMPAD_4, //57 - KEY_EN_F5, //60 - KEY_EN_5, //61 - KEY_EN_T, //62 - KEY_EN_G, //63 - KEY_EN_V, //64 - KEY_EN_HOME, //66 - KEY_EN_PAGE_DOWN, //67 - KEY_EN_MEDIA_NEXT, //68 - KEY_EN_NUMPAD_5, //69 - KEY_EN_F6, //72 - KEY_EN_6, //73 - KEY_EN_Y, //74 - KEY_EN_H, //75 - KEY_EN_B, //76 - KEY_EN_PAGE_UP, //78 - KEY_EN_RIGHT_SHIFT, //79 - KEY_EN_NUMPAD_LOCK, //80 - KEY_EN_NUMPAD_6, //81 - KEY_EN_F7, //84 - KEY_EN_7, //85 - KEY_EN_U, //86 - KEY_EN_J, //87 - KEY_EN_N, //88 - KEY_EN_RIGHT_ALT, //89 - KEY_EN_RIGHT_BRACKET, //90 - KEY_EN_RIGHT_CONTROL, //91 - KEY_EN_NUMPAD_DIVIDE, //92 - KEY_EN_NUMPAD_1, //93 - KEY_EN_F8, //96 - KEY_EN_8, //97 - KEY_EN_I, //98 - KEY_EN_K, //99 - KEY_EN_M, //100 - KEY_EN_RIGHT_WINDOWS, //101 - KEY_EN_ANSI_BACK_SLASH, //102 - KEY_EN_UP_ARROW, //103 - KEY_EN_NUMPAD_TIMES, //104 - KEY_EN_NUMPAD_2, //105 - KEY_EN_F9, //108 - KEY_EN_9, //109 - KEY_EN_O, //110 - KEY_EN_L, //111 - KEY_EN_COMMA, //112 - KEY_EN_MENU, //113 - KEY_EN_LEFT_ARROW, //115 - KEY_EN_NUMPAD_MINUS, //116 - KEY_EN_NUMPAD_3, //117 - KEY_EN_F10, //120 - KEY_EN_0, //121 - KEY_EN_P, //122 - KEY_EN_SEMICOLON, //123 - KEY_EN_PERIOD, //124 - KEY_EN_ANSI_ENTER, //126 - KEY_EN_DOWN_ARROW, //127 - KEY_EN_NUMPAD_PLUS, //128 - KEY_EN_NUMPAD_0, //129 - KEY_EN_F11, //132 - KEY_EN_MINUS, //133 - KEY_EN_LEFT_BRACKET, //134 - KEY_EN_QUOTE, //135 - KEY_EN_FORWARD_SLASH, //136 - // "Key: Brightness", //137 - KEY_EN_RIGHT_ARROW, //139 - KEY_EN_NUMPAD_ENTER, //140 - KEY_EN_NUMPAD_PERIOD, //141 - "Key: / (ISO)", - KEY_EN_ISO_BACK_SLASH, - "Key: Preset", - "Key: G1", - "Key: G2", - "Key: G3", - "Key: G4", - "Key: G5", - "Key: G6", -}; -static const char* led_names_lightbar[] = -{ - "Underglow 1", - "Underglow 2", - "Underglow 3", - "Underglow 4", - "Underglow 5", - "Underglow 6", - "Underglow 7", - "Underglow 8", - "Underglow 9", - "Underglow 10", - "Underglow 11", - "Underglow 12", - "Underglow 13", - "Underglow 14", - "Underglow 15", - "Underglow 16", - "Underglow 17", - "Underglow 18", - "Underglow 19", - "Underglow 20", - "Underglow 21", - "Underglow 22", - "Underglow 23", - "Underglow 24", - "Underglow 25", - "Underglow 26", - "Underglow 27", - "Underglow 28", - "Underglow 29", - "Underglow 30", - "Underglow 31", - "Underglow 32", - "Underglow 33", - "Underglow 34", - "Underglow 35", - "Underglow 36", - "Underglow 37", - "Underglow 38", - "Underglow 39", - "Underglow 40", - "Underglow 41", - "Underglow 42", - "Underglow 43", - "Underglow 44", -}; -static const char* led_names_nameplate[] = -{ - "Nameplate 1", - "Nameplate 2", - "Nameplate 3", - "Nameplate 4", - "Nameplate 5", - "Nameplate 6", - "Nameplate 7", - "Nameplate 8", - "Nameplate 9", -}; -static const char* led_names_logo[] = -{ - "Logo", - "Logo", - "Logo", -}; - -typedef struct -{ - const char* name; - const unsigned int size; - const zone_type type; - const char** led_names; - matrix_map_type* matrix; -} led_zone_layout; - -/**------------------------------------------------------------------*\ - @name Corsair K100 Keyboard - @category Keyboard - @type USB - @save :x: - @direct :white_check_mark: - @effects :x: - @detectors DetectCorsairK100Controllers - @comment -\*-------------------------------------------------------------------*/ - -RGBController_CorsairK100::RGBController_CorsairK100(CorsairK100Controller* controller_ptr) -{ - controller = controller_ptr; - - name = controller->GetName(); - vendor = "Corsair"; - description = "Corsair K100 Keyboard Device"; - type = DEVICE_TYPE_KEYBOARD; - version = controller->GetFirmwareString(); - location = controller->GetDeviceLocation(); - serial = controller->GetSerialString(); - - logical_layout = controller->GetKeyboardType(); - - mode Direct; - Direct.name = "Direct"; - Direct.value = 0; - Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR; - Direct.color_mode = MODE_COLORS_PER_LED; - modes.push_back(Direct); - - SetupZones(); - - /*-----------------------------------------------------*\ - | The Corsair K100 requires a packet within | - | 1 minutes of sending the lighting change in order | - | to not revert back into rainbow mode. Start a thread | - | to continuously send a keepalive packet every 50 sec | - \*-----------------------------------------------------*/ - keepalive_thread_run = true; - keepalive_thread = new std::thread(&RGBController_CorsairK100::KeepaliveThread, this); -} - -RGBController_CorsairK100::~RGBController_CorsairK100() -{ - /*-----------------------------------------------------*\ - | Close keepalive thread | - \*-----------------------------------------------------*/ - keepalive_thread_run = false; - keepalive_thread->join(); - delete keepalive_thread; - - /*---------------------------------------------------------*\ - | Delete the matrix map | - \*---------------------------------------------------------*/ - for(unsigned int zone_index = 0; zone_index < zones.size(); zone_index++) - { - if(zones[zone_index].type == ZONE_TYPE_MATRIX) - { - delete zones[zone_index].matrix_map; - } - } - - delete controller; -} - -void RGBController_CorsairK100::SetupZones() -{ - std::vector selected_zone; - - switch(logical_layout) - { - case CORSAIR_TYPE_K100: - selected_zone.push_back({ZONE_EN_KEYBOARD, 119, ZONE_TYPE_MATRIX, led_names_k100, new matrix_map_type{7, 24, (unsigned int *)&matrix_map_k100}}); - selected_zone.push_back({"Underglow", 44, ZONE_TYPE_LINEAR, led_names_lightbar, NULL}); - selected_zone.push_back({"Nameplate", 9, ZONE_TYPE_LINEAR, led_names_nameplate, NULL}); - selected_zone.push_back({"Logo", 3, ZONE_TYPE_LINEAR, led_names_logo, NULL}); - break; - - case CORSAIR_TYPE_UNKNOWN: - break; - } - - /*---------------------------------------------------------*\ - | Set up zones | - \*---------------------------------------------------------*/ - for(unsigned int zone_idx = 0; zone_idx < selected_zone.size(); zone_idx++) - { - zone new_zone; - - new_zone.name = selected_zone[zone_idx].name; - new_zone.type = selected_zone[zone_idx].type; - new_zone.leds_min = selected_zone[zone_idx].size; - new_zone.leds_max = selected_zone[zone_idx].size; - new_zone.leds_count = selected_zone[zone_idx].size; - - if (new_zone.type == ZONE_TYPE_MATRIX) - { - new_zone.matrix_map = selected_zone[zone_idx].matrix; - } - else - { - new_zone.matrix_map = NULL; - } - - zones.push_back(new_zone); - - for(unsigned int led_idx = 0; led_idx < selected_zone[zone_idx].size; led_idx++) - { - led new_led; - new_led.name = selected_zone[zone_idx].led_names[led_idx]; - leds.push_back(new_led); - } - } - - SetupColors(); -} - -void RGBController_CorsairK100::ResizeZone(int /*zone*/, int /*new_size*/) -{ - /*---------------------------------------------------------*\ - | This device does not support resizing zones | - \*---------------------------------------------------------*/ -} - -void RGBController_CorsairK100::DeviceUpdateLEDs() -{ - last_update_time = std::chrono::steady_clock::now(); - - controller->SetLEDs(colors); -} - -void RGBController_CorsairK100::UpdateZoneLEDs(int /*zone*/) -{ - controller->SetLEDs(colors); -} - -void RGBController_CorsairK100::UpdateSingleLED(int /*led*/) -{ - controller->SetLEDs(colors); -} - -void RGBController_CorsairK100::DeviceUpdateMode() -{ - -} - -void RGBController_CorsairK100::KeepaliveThread() -{ - while(keepalive_thread_run.load()) - { - if(active_mode == 0) - { - if((std::chrono::steady_clock::now() - last_update_time) > std::chrono::milliseconds(50000)) - { - DeviceUpdateLEDs(); - } - } - std::this_thread::sleep_for(3000ms); - } -} diff --git a/Controllers/CorsairPeripheralController/RGBController_CorsairK100.h b/Controllers/CorsairPeripheralController/RGBController_CorsairK100.h deleted file mode 100644 index 7779f461..00000000 --- a/Controllers/CorsairPeripheralController/RGBController_CorsairK100.h +++ /dev/null @@ -1,40 +0,0 @@ -/*-----------------------------------------*\ -| RGBController_CorsairK100.cpp | -| | -| Driver for Corsair K100 Keyboard | -\*-----------------------------------------*/ - -#ifndef RGBCONTROLLER_CORSAIRK100_H -#define RGBCONTROLLER_CORSAIRK100_H - -#include "RGBController.h" -#include "CorsairK100Controller.h" - -class RGBController_CorsairK100 : public RGBController -{ -public: - RGBController_CorsairK100(CorsairK100Controller* controller_ptr); - ~RGBController_CorsairK100(); - - void SetupZones(); - void ResizeZone(int zone, int new_size); - - void DeviceUpdateLEDs(); - void UpdateZoneLEDs(int zone); - void UpdateSingleLED(int led); - - void DeviceUpdateMode(); - - void KeepaliveThread(); - -private: - CorsairK100Controller* controller; - CorsairKeyboardType logical_layout; - - std::thread* keepalive_thread; - std::atomic keepalive_thread_run; - std::chrono::time_point last_update_time; - -}; - -#endif // RGBCONTROLLER_CORSAIRK100_H diff --git a/Controllers/CorsairPeripheralV2Controller/CorsairPeripheralV2ControllerDetect.cpp b/Controllers/CorsairPeripheralV2Controller/CorsairPeripheralV2ControllerDetect.cpp index 2d6e8a38..0b67c4c9 100644 --- a/Controllers/CorsairPeripheralV2Controller/CorsairPeripheralV2ControllerDetect.cpp +++ b/Controllers/CorsairPeripheralV2Controller/CorsairPeripheralV2ControllerDetect.cpp @@ -65,7 +65,9 @@ REGISTER_HID_DETECTOR_IP("Corsair K60 RGB PRO TKL", DetectCorsai REGISTER_HID_DETECTOR_IP("Corsair K70 RGB PRO", DetectCorsairV2HardwareControllers, CORSAIR_VID, CORSAIR_K70_RGB_PRO_PID, 1, 0xFF42); REGISTER_HID_DETECTOR_IP("Corsair K70 RGB TKL", DetectCorsairV2HardwareControllers, CORSAIR_VID, CORSAIR_K70_RGB_TKL_PID, 1, 0xFF42); REGISTER_HID_DETECTOR_IP("Corsair K70 RGB TKL Champion Series", DetectCorsairV2HardwareControllers, CORSAIR_VID, CORSAIR_K70_RGB_TKL_CS_PID, 1, 0xFF42); -REGISTER_HID_DETECTOR_IP("Corsair K100 RGB Optical", DetectCorsairV2HardwareControllers, CORSAIR_VID, CORSAIR_K100_OPTICAL_PID, 1, 0xFF42); +REGISTER_HID_DETECTOR_IP("Corsair K100 RGB Optical", DetectCorsairV2HardwareControllers, CORSAIR_VID, CORSAIR_K100_OPTICAL_V1_PID, 1, 0xFF42); +REGISTER_HID_DETECTOR_IP("Corsair K100 RGB Optical", DetectCorsairV2HardwareControllers, CORSAIR_VID, CORSAIR_K100_OPTICAL_V2_PID, 1, 0xFF42); +REGISTER_HID_DETECTOR_IP("Corsair K100 MX Red", DetectCorsairV2HardwareControllers, CORSAIR_VID, CORSAIR_K100_MXRED_PID, 1, 0xFF42); /*-----------------------------------------------------------------------------------------------------*\ | Mice | diff --git a/Controllers/CorsairPeripheralV2Controller/CorsairPeripheralV2Devices.cpp b/Controllers/CorsairPeripheralV2Controller/CorsairPeripheralV2Devices.cpp index 703acf51..54213bc5 100644 --- a/Controllers/CorsairPeripheralV2Controller/CorsairPeripheralV2Devices.cpp +++ b/Controllers/CorsairPeripheralV2Controller/CorsairPeripheralV2Devices.cpp @@ -820,7 +820,7 @@ static const corsair_v2_device k70_rgb_tkl_cs_device = }; /*-------------------------------------------------------------*\ -| Corsair k70 RGB Pro 1B1C:1BC4 | +| Corsair K70 RGB Pro 1B1C:1BC4 | | | | Zone "Keyboard" | | Matrix | @@ -852,7 +852,40 @@ static const corsair_v2_device k70_rgb_pro_device = }; /*-------------------------------------------------------------*\ -| Corsair k100 RGB Optical 1B1C:1BC5 | +| Corsair K100 MX Red 1B1C:1B7D | +| | +| Zone "Keyboard" | +| Matrix | +| 12 Rows, 24 Columns | +\*-------------------------------------------------------------*/ + +static const corsair_v2_zone k100_mx_red_zone = +{ + ZONE_EN_KEYBOARD, + ZONE_TYPE_MATRIX, + 12, + 24 +}; + +static const corsair_v2_device k100_mx_red_device = +{ + CORSAIR_K100_MXRED_PID, + DEVICE_TYPE_KEYBOARD, + 12, + 24, + { + &k100_mx_red_zone, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr + }, + &corsair_k100_layout +}; + +/*-------------------------------------------------------------*\ +| Corsair K100 RGB Optical V1 1B1C:1B7C | | | | Zone "Keyboard" | | Matrix | @@ -867,9 +900,34 @@ static const corsair_v2_zone k100_rgb_opt_zone = 24 }; -static const corsair_v2_device k100_rgb_opt_device = +static const corsair_v2_device k100_rgb_opt_v1_device = { - CORSAIR_K100_OPTICAL_PID, + CORSAIR_K100_OPTICAL_V1_PID, + DEVICE_TYPE_KEYBOARD, + 12, + 24, + { + &k100_rgb_opt_zone, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr + }, + &corsair_k100_layout +}; + +/*-------------------------------------------------------------*\ +| Corsair K100 RGB Optical V2 1B1C:1BC5 | +| | +| Zone "Keyboard" | +| Matrix | +| 12 Rows, 24 Columns | +\*-------------------------------------------------------------*/ + +static const corsair_v2_device k100_rgb_opt_v2_device = +{ + CORSAIR_K100_OPTICAL_V2_PID, DEVICE_TYPE_KEYBOARD, 12, 24, @@ -1035,7 +1093,9 @@ const corsair_v2_device* corsair_v2_device_list_data[] = &k70_rgb_pro_device, &k70_rgb_tkl_device, &k70_rgb_tkl_cs_device, - &k100_rgb_opt_device, + &k100_mx_red_device, + &k100_rgb_opt_v1_device, + &k100_rgb_opt_v2_device, /*-----------------------------------------------------------------*\ | MICE | diff --git a/Controllers/CorsairPeripheralV2Controller/CorsairPeripheralV2Devices.h b/Controllers/CorsairPeripheralV2Controller/CorsairPeripheralV2Devices.h index c07b8593..4ea29d8f 100644 --- a/Controllers/CorsairPeripheralV2Controller/CorsairPeripheralV2Devices.h +++ b/Controllers/CorsairPeripheralV2Controller/CorsairPeripheralV2Devices.h @@ -66,7 +66,9 @@ typedef struct #define CORSAIR_K70_RGB_PRO_PID 0x1BC4 #define CORSAIR_K70_RGB_TKL_PID 0x1B73 #define CORSAIR_K70_RGB_TKL_CS_PID 0x1BB9 -#define CORSAIR_K100_OPTICAL_PID 0x1BC5 +#define CORSAIR_K100_OPTICAL_V1_PID 0x1B7C +#define CORSAIR_K100_OPTICAL_V2_PID 0x1BC5 +#define CORSAIR_K100_MXRED_PID 0x1B7D /*-----------------------------------------------------*\ | Corsair V2 Protocol Mice | diff --git a/OpenRGB.pro b/OpenRGB.pro index 2375384a..1353027e 100644 --- a/OpenRGB.pro +++ b/OpenRGB.pro @@ -431,12 +431,10 @@ HEADERS += Controllers/CorsairLightingNodeController/CorsairLightingNodeController.h \ Controllers/CorsairLightingNodeController/RGBController_CorsairLightingNode.h \ Controllers/CorsairPeripheralController/CorsairPeripheralController.h \ - Controllers/CorsairPeripheralController/CorsairK100Controller.h \ Controllers/CorsairPeripheralController/CorsairK55RGBPROXTController.h \ Controllers/CorsairPeripheralController/CorsairK65MiniController.h \ Controllers/CorsairPeripheralController/CorsairK95PlatinumXTController.h \ Controllers/CorsairPeripheralController/RGBController_CorsairPeripheral.h \ - Controllers/CorsairPeripheralController/RGBController_CorsairK100.h \ Controllers/CorsairPeripheralController/RGBController_CorsairK55RGBPROXT.h \ Controllers/CorsairPeripheralController/RGBController_CorsairK65Mini.h \ Controllers/CorsairPeripheralController/RGBController_CorsairK95PlatinumXT.h \ @@ -1085,12 +1083,10 @@ SOURCES += Controllers/CorsairLightingNodeController/RGBController_CorsairLightingNode.cpp \ Controllers/CorsairPeripheralController/CorsairPeripheralController.cpp \ Controllers/CorsairPeripheralController/CorsairPeripheralControllerDetect.cpp \ - Controllers/CorsairPeripheralController/CorsairK100Controller.cpp \ Controllers/CorsairPeripheralController/CorsairK55RGBPROXTController.cpp \ Controllers/CorsairPeripheralController/CorsairK65MiniController.cpp \ Controllers/CorsairPeripheralController/CorsairK95PlatinumXTController.cpp \ Controllers/CorsairPeripheralController/RGBController_CorsairPeripheral.cpp \ - Controllers/CorsairPeripheralController/RGBController_CorsairK100.cpp \ Controllers/CorsairPeripheralController/RGBController_CorsairK55RGBPROXT.cpp \ Controllers/CorsairPeripheralController/RGBController_CorsairK65Mini.cpp \ Controllers/CorsairPeripheralController/RGBController_CorsairK95PlatinumXT.cpp \