From 2fd21992b089d2f0891f5b7d793840158defb957 Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Tue, 9 Feb 2021 16:18:32 -0600 Subject: [PATCH] Add Razer Chroma Addressable RGB Controller to RazerController --- .../RazerController/RazerController.cpp | 86 ++++- Controllers/RazerController/RazerController.h | 26 +- .../RazerController/RazerControllerDetect.cpp | 142 +++++--- Controllers/RazerController/RazerDevices.h | 343 +++++++++++------- 4 files changed, 417 insertions(+), 180 deletions(-) diff --git a/Controllers/RazerController/RazerController.cpp b/Controllers/RazerController/RazerController.cpp index b54996fed..b835473a8 100644 --- a/Controllers/RazerController/RazerController.cpp +++ b/Controllers/RazerController/RazerController.cpp @@ -13,9 +13,10 @@ using namespace std::chrono_literals; -RazerController::RazerController(hid_device* dev_handle, const char* path, unsigned short pid, std::string dev_name) +RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_handle, const char* path, unsigned short pid, std::string dev_name) { dev = dev_handle; + dev_argb = dev_argb_handle; dev_pid = pid; location = path; name = dev_name; @@ -323,6 +324,42 @@ razer_report RazerController::razer_create_brightness_standard_report(unsigned c return report; } +razer_argb_report RazerController::razer_create_custom_frame_argb_report(unsigned char row_index, unsigned char stop_col, unsigned char* rgb_data) +{ + razer_argb_report report; + + /*---------------------------------------------------------*\ + | Zero out the new report | + \*---------------------------------------------------------*/ + memset(&report, 0, sizeof(razer_argb_report)); + + /*---------------------------------------------------------*\ + | Fill in report header | + \*---------------------------------------------------------*/ + report.hid_id = 0; + + if(row_index < 5) + { + report.report_id = 0x04; + } + else + { + report.report_id = 0x84; + } + + report.channel_1 = row_index; + report.channel_2 = row_index; + report.pad = 0; + report.last_idx = stop_col; + + /*---------------------------------------------------------*\ + | Copy in the RGB data | + \*---------------------------------------------------------*/ + memcpy(&report.color_data, rgb_data, (stop_col + 1) * 3); + + return report; +} + razer_report RazerController::razer_create_custom_frame_linear_report(unsigned char start_col, unsigned char stop_col, unsigned char* rgb_data) { razer_report report = razer_create_report(0x03, 0x0C, 0x32); @@ -610,6 +647,29 @@ void RazerController::razer_set_brightness(unsigned char brightness) default: report = razer_create_brightness_standard_report(RAZER_STORAGE_NO_SAVE, dev_led_id, brightness); break; + + /*-------------------------------------------------*\ + | Razer Chroma ARGB controller needs all channels | + | adjusted | + \*-------------------------------------------------*/ + case RAZER_CHROMA_ADDRESSABLE_RGB_CONTROLLER_PID: + report = razer_create_brightness_extended_matrix_report(RAZER_STORAGE_NO_SAVE, RAZER_LED_ID_ARGB_CH_1, brightness); + razer_usb_send(&report); + + report = razer_create_brightness_extended_matrix_report(RAZER_STORAGE_NO_SAVE, RAZER_LED_ID_ARGB_CH_2, brightness); + razer_usb_send(&report); + + report = razer_create_brightness_extended_matrix_report(RAZER_STORAGE_NO_SAVE, RAZER_LED_ID_ARGB_CH_3, brightness); + razer_usb_send(&report); + + report = razer_create_brightness_extended_matrix_report(RAZER_STORAGE_NO_SAVE, RAZER_LED_ID_ARGB_CH_4, brightness); + razer_usb_send(&report); + + report = razer_create_brightness_extended_matrix_report(RAZER_STORAGE_NO_SAVE, RAZER_LED_ID_ARGB_CH_5, brightness); + razer_usb_send(&report); + + report = razer_create_brightness_extended_matrix_report(RAZER_STORAGE_NO_SAVE, RAZER_LED_ID_ARGB_CH_6, brightness); + break; } razer_usb_send(&report); @@ -764,6 +824,11 @@ void RazerController::razer_set_custom_frame(unsigned char row_index, unsigned c default: report = razer_create_custom_frame_standard_matrix_report(row_index, start_col, stop_col, rgb_data); break; + + case RAZER_CHROMA_ADDRESSABLE_RGB_CONTROLLER_PID: + razer_argb_report argb_report = razer_create_custom_frame_argb_report(row_index, stop_col, rgb_data); + razer_usb_send_argb(&argb_report); + return; } razer_usb_send(&report); @@ -829,13 +894,8 @@ void RazerController::razer_set_mode_custom() report = razer_create_mode_custom_extended_matrix_report(); break; - /*-------------------------------------------------*\ - | These devices use a standard matrix report and | - | transaction ID 0x80 | - \*-------------------------------------------------*/ - case RAZER_MAMBA_WIRELESS_PID: - report = razer_create_mode_custom_standard_matrix_report(RAZER_STORAGE_NO_SAVE); - break; + case RAZER_CHROMA_ADDRESSABLE_RGB_CONTROLLER_PID: + return; /*-------------------------------------------------*\ | These devices use individual LED effect reports | @@ -868,6 +928,7 @@ void RazerController::razer_set_mode_custom() case RAZER_CHROMA_MUG_PID: case RAZER_CORE_PID: case RAZER_FIREFLY_PID: + case RAZER_MAMBA_WIRELESS_PID: case RAZER_NAGA_CHROMA_PID: case RAZER_NAGA_HEX_V2_PID: case RAZER_ORBWEAVER_CHROMA_PID: @@ -893,6 +954,7 @@ void RazerController::razer_set_mode_none() case RAZER_BLACKWIDOW_ELITE_PID: case RAZER_BLACKWIDOW_ESSENTIAL_PID: case RAZER_BLACKWIDOW_LITE_PID: + case RAZER_CHROMA_ADDRESSABLE_RGB_CONTROLLER_PID: case RAZER_CHROMA_BASE_PID: case RAZER_CHROMA_HDK_PID: case RAZER_CYNOSA_CHROMA_PID: @@ -945,6 +1007,7 @@ void RazerController::razer_set_mode_spectrum_cycle() case RAZER_BASE_STATION_V2_CHROMA_PID: case RAZER_BLACKWIDOW_2019_PID: case RAZER_BLACKWIDOW_ELITE_PID: + case RAZER_CHROMA_ADDRESSABLE_RGB_CONTROLLER_PID: case RAZER_CHROMA_BASE_PID: case RAZER_CHROMA_HDK_PID: case RAZER_CYNOSA_CHROMA_PID: @@ -996,6 +1059,7 @@ void RazerController::razer_set_mode_static(unsigned char red, unsigned char grn case RAZER_BASE_STATION_V2_CHROMA_PID: case RAZER_BLACKWIDOW_2019_PID: case RAZER_BLACKWIDOW_ELITE_PID: + case RAZER_CHROMA_ADDRESSABLE_RGB_CONTROLLER_PID: case RAZER_CHROMA_BASE_PID: case RAZER_CHROMA_HDK_PID: case RAZER_CYNOSA_CHROMA_PID: @@ -1050,6 +1114,7 @@ void RazerController::razer_set_mode_wave() case RAZER_BLACKWIDOW_2019_PID: case RAZER_BLACKWIDOW_ELITE_PID: case RAZER_BLACKWIDOW_ESSENTIAL_PID: + case RAZER_CHROMA_ADDRESSABLE_RGB_CONTROLLER_PID: case RAZER_CHROMA_BASE_PID: case RAZER_CHROMA_HDK_PID: case RAZER_CYNOSA_CHROMA_PID: @@ -1099,3 +1164,8 @@ int RazerController::razer_usb_send(razer_report* report) return hid_send_feature_report(dev, (unsigned char*)report, sizeof(*report)); } + +int RazerController::razer_usb_send_argb(razer_argb_report* report) +{ + return hid_send_feature_report(dev_argb, (unsigned char*)report, sizeof(*report)); +} diff --git a/Controllers/RazerController/RazerController.h b/Controllers/RazerController/RazerController.h index bb8d3b8b5..f92b930d8 100644 --- a/Controllers/RazerController/RazerController.h +++ b/Controllers/RazerController/RazerController.h @@ -79,6 +79,12 @@ enum RAZER_LED_ID_PROFILE_BLUE = 0x0E, RAZER_LED_ID_RIGHT_SIDE = 0x10, RAZER_LED_ID_LEFT_SIDE = 0x11, + RAZER_LED_ID_ARGB_CH_1 = 0x1A, + RAZER_LED_ID_ARGB_CH_2 = 0x1B, + RAZER_LED_ID_ARGB_CH_3 = 0x1C, + RAZER_LED_ID_ARGB_CH_4 = 0x1D, + RAZER_LED_ID_ARGB_CH_5 = 0x1E, + RAZER_LED_ID_ARGB_CH_6 = 0x1F, }; /*---------------------------------------------------------*\ @@ -124,10 +130,24 @@ PACK(typedef struct razer_report unsigned char reserved; }); +/*---------------------------------------------------------*\ +| Razer ARGB Report Type (taken from OpenRazer) | +\*---------------------------------------------------------*/ +PACK(typedef struct razer_argb_report +{ + unsigned char hid_id; + unsigned char report_id; + unsigned char channel_1; + unsigned char channel_2; + unsigned char pad; + unsigned char last_idx; + unsigned char color_data[315]; +}); + class RazerController { public: - RazerController(hid_device* dev_handle, const char* path, unsigned short pid, std::string dev_name); + RazerController(hid_device* dev_handle, hid_device* dev_argb_handle, const char* path, unsigned short pid, std::string dev_name); ~RazerController(); unsigned int GetDeviceIndex(); @@ -146,6 +166,7 @@ public: private: hid_device* dev; + hid_device* dev_argb; unsigned short dev_pid; /*---------------------------------------------------------*\ @@ -182,6 +203,7 @@ private: razer_report razer_create_brightness_extended_matrix_report(unsigned char variable_storage, unsigned char led_id, unsigned char brightness); razer_report razer_create_brightness_standard_report(unsigned char variable_storage, unsigned char led_id, unsigned char brightness); + razer_argb_report razer_create_custom_frame_argb_report(unsigned char row_index, unsigned char stop_col, unsigned char* rgb_data); razer_report razer_create_custom_frame_linear_report(unsigned char start_col, unsigned char stop_col, unsigned char* rgb_data); razer_report razer_create_custom_frame_extended_matrix_report(unsigned char row_index, unsigned char start_col, unsigned char stop_col, unsigned char* rgb_data); razer_report razer_create_custom_frame_standard_matrix_report(unsigned char row_index, unsigned char start_col, unsigned char stop_col, unsigned char* rgb_data); @@ -216,6 +238,6 @@ private: int razer_usb_receive(razer_report* report); int razer_usb_send(razer_report* report); - + int razer_usb_send_argb(razer_argb_report* report); }; diff --git a/Controllers/RazerController/RazerControllerDetect.cpp b/Controllers/RazerController/RazerControllerDetect.cpp index 3b20b86c8..22ab3a1df 100644 --- a/Controllers/RazerController/RazerControllerDetect.cpp +++ b/Controllers/RazerController/RazerControllerDetect.cpp @@ -68,75 +68,123 @@ void DetectRazerControllers(hid_device_info* info, const std::string& name) if(dev) { - RazerController* controller = new RazerController(dev, info->path, info->product_id, name); + RazerController* controller = new RazerController(dev, dev, info->path, info->product_id, name); RGBController_Razer* rgb_controller = new RGBController_Razer(controller); ResourceManager::get()->RegisterRGBController(rgb_controller); } } /* DetectRazerControllers() */ +void DetectRazerARGBControllers(hid_device_info* info, const std::string& name) +{ + /*-------------------------------------------------------------------------------------------------*\ + | Razer's ARGB controller uses two different interfaces, one for 90-byte Razer report packets and | + | one for 320-byte ARGB packets. Interface 0 for 90-byte and interface 1 for 320-byte. | + \*-------------------------------------------------------------------------------------------------*/ +#ifdef _WIN32 + hid_device* dev_interface_0 = nullptr; + hid_device* dev_interface_1 = nullptr; + hid_device_info* info_temp = info; + while(info_temp) + { + if(info_temp->vendor_id == info->vendor_id // constant LOGITECH_VID + && info_temp->product_id == info->product_id ) // NON-constant + { + if(info_temp->interface_number == 0) + { + dev_interface_0 = hid_open_path(info_temp->path); + } + else if(info_temp->interface_number == 1) + { + dev_interface_1 = hid_open_path(info_temp->path); + } + } + if(dev_interface_0 && dev_interface_1) + { + break; + } + info_temp = info_temp->next; + } + if(dev_interface_0 && dev_interface_1) + { + RazerController* controller = new RazerController(dev_interface_0, dev_interface_1, info->path, info->product_id, name); + RGBController_Razer* rgb_controller = new RGBController_Razer(controller); + ResourceManager::get()->RegisterRGBController(rgb_controller); + } + else + { + // Not all of them could be opened, do some cleanup + hid_close(dev_interface_0); + hid_close(dev_interface_1); + } +#else + DetectRazerControllers(info, name); +#endif +} + /*-----------------------------------------------------------------------------------------------------*\ | Keyboards | \*-----------------------------------------------------------------------------------------------------*/ -REGISTER_HID_DETECTOR_PU("Razer Blackwidow Chroma", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_CHROMA_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Blackwidow Chroma V2", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_CHROMA_V2_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Blackwidow Chroma Tournament Edition", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_CHROMA_TE_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Blackwidow 2019", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_2019_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Blackwidow Overwatch", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_OVERWATCH_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Blackwidow X Chroma", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_X_CHROMA_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Blackwidow X Chroma Tournament Edition", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_X_CHROMA_TE_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Cynosa Chroma", DetectRazerControllers, RAZER_VID, RAZER_CYNOSA_CHROMA_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Cynosa Chroma V2", DetectRazerControllers, RAZER_VID, RAZER_CYNOSA_V2_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Deathstalker Chroma", DetectRazerControllers, RAZER_VID, RAZER_DEATHSTALKER_CHROMA_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Huntsman", DetectRazerControllers, RAZER_VID, RAZER_HUNTSMAN_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Huntsman Elite", DetectRazerControllers, RAZER_VID, RAZER_HUNTSMAN_ELITE_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Huntsman Tournament Edition", DetectRazerControllers, RAZER_VID, RAZER_HUNTSMAN_TE_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Ornata Chroma", DetectRazerControllers, RAZER_VID, RAZER_ORNATA_CHROMA_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Blackwidow Chroma", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_CHROMA_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Blackwidow Chroma V2", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_CHROMA_V2_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Blackwidow Chroma Tournament Edition", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_CHROMA_TE_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Blackwidow 2019", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_2019_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Blackwidow Overwatch", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_OVERWATCH_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Blackwidow X Chroma", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_X_CHROMA_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Blackwidow X Chroma Tournament Edition", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_X_CHROMA_TE_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Cynosa Chroma", DetectRazerControllers, RAZER_VID, RAZER_CYNOSA_CHROMA_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Cynosa Chroma V2", DetectRazerControllers, RAZER_VID, RAZER_CYNOSA_V2_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Deathstalker Chroma", DetectRazerControllers, RAZER_VID, RAZER_DEATHSTALKER_CHROMA_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Huntsman", DetectRazerControllers, RAZER_VID, RAZER_HUNTSMAN_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Huntsman Elite", DetectRazerControllers, RAZER_VID, RAZER_HUNTSMAN_ELITE_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Huntsman Tournament Edition", DetectRazerControllers, RAZER_VID, RAZER_HUNTSMAN_TE_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Ornata Chroma", DetectRazerControllers, RAZER_VID, RAZER_ORNATA_CHROMA_PID, 1, 2); /*-----------------------------------------------------------------------------------------------------*\ | Keypads | \*-----------------------------------------------------------------------------------------------------*/ -REGISTER_HID_DETECTOR_PU("Razer Orbweaver Chroma", DetectRazerControllers, RAZER_VID, RAZER_ORBWEAVER_CHROMA_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Tartarus Chroma", DetectRazerControllers, RAZER_VID, RAZER_TARTARUS_CHROMA_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Tartarus V2", DetectRazerControllers, RAZER_VID, RAZER_TARTARUS_V2_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Orbweaver Chroma", DetectRazerControllers, RAZER_VID, RAZER_ORBWEAVER_CHROMA_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Tartarus Chroma", DetectRazerControllers, RAZER_VID, RAZER_TARTARUS_CHROMA_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Tartarus V2", DetectRazerControllers, RAZER_VID, RAZER_TARTARUS_V2_PID, 1, 2); /*-----------------------------------------------------------------------------------------------------*\ | Laptops | \*-----------------------------------------------------------------------------------------------------*/ -REGISTER_HID_DETECTOR_PU("Razer Blade Pro", DetectRazerControllers, RAZER_VID, RAZER_BLADE_PRO_LATE_2016_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Blade Pro (2017)", DetectRazerControllers, RAZER_VID, RAZER_BLADE_PRO_2017_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Blade Stealth", DetectRazerControllers, RAZER_VID, RAZER_BLADE_STEALTH_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Blade Pro", DetectRazerControllers, RAZER_VID, RAZER_BLADE_PRO_LATE_2016_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Blade Pro (2017)", DetectRazerControllers, RAZER_VID, RAZER_BLADE_PRO_2017_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Blade Stealth", DetectRazerControllers, RAZER_VID, RAZER_BLADE_STEALTH_PID, 1, 2); /*-----------------------------------------------------------------------------------------------------*\ | Mice | \*-----------------------------------------------------------------------------------------------------*/ -REGISTER_HID_DETECTOR_PU("Razer Basilisk", DetectRazerControllers, RAZER_VID, RAZER_BASILISK_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Basilisk Essential", DetectRazerControllers, RAZER_VID, RAZER_BASILISK_ESSENTIAL_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Deathadder Chroma", DetectRazerControllers, RAZER_VID, RAZER_DEATHADDER_CHROMA_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Deathadder Elite", DetectRazerControllers, RAZER_VID, RAZER_DEATHADDER_ELITE_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Deathadder V2", DetectRazerControllers, RAZER_VID, RAZER_DEATHADDER_V2_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Diamondback", DetectRazerControllers, RAZER_VID, RAZER_DIAMONDBACK_CHROMA_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Mamba Elite", DetectRazerControllers, RAZER_VID, RAZER_MAMBA_ELITE_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Mamba Tournament Edition", DetectRazerControllers, RAZER_VID, RAZER_MAMBA_TE_WIRED_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Naga Chroma", DetectRazerControllers, RAZER_VID, RAZER_NAGA_CHROMA_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Naga Epic Chroma", DetectRazerControllers, RAZER_VID, RAZER_NAGA_EPIC_CHROMA_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Naga Trinity", DetectRazerControllers, RAZER_VID, RAZER_NAGA_TRINITY_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Basilisk", DetectRazerControllers, RAZER_VID, RAZER_BASILISK_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Basilisk Essential", DetectRazerControllers, RAZER_VID, RAZER_BASILISK_ESSENTIAL_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Deathadder Chroma", DetectRazerControllers, RAZER_VID, RAZER_DEATHADDER_CHROMA_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Deathadder Elite", DetectRazerControllers, RAZER_VID, RAZER_DEATHADDER_ELITE_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Deathadder V2", DetectRazerControllers, RAZER_VID, RAZER_DEATHADDER_V2_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Diamondback", DetectRazerControllers, RAZER_VID, RAZER_DIAMONDBACK_CHROMA_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Mamba Elite", DetectRazerControllers, RAZER_VID, RAZER_MAMBA_ELITE_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Mamba Tournament Edition", DetectRazerControllers, RAZER_VID, RAZER_MAMBA_TE_WIRED_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Naga Chroma", DetectRazerControllers, RAZER_VID, RAZER_NAGA_CHROMA_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Naga Epic Chroma", DetectRazerControllers, RAZER_VID, RAZER_NAGA_EPIC_CHROMA_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Naga Trinity", DetectRazerControllers, RAZER_VID, RAZER_NAGA_TRINITY_PID, 1, 2); /*-----------------------------------------------------------------------------------------------------*\ | Accessories | \*-----------------------------------------------------------------------------------------------------*/ -REGISTER_HID_DETECTOR_PU("Razer Base Station Chroma", DetectRazerControllers, RAZER_VID, RAZER_CHROMA_BASE_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Base Station V2 Chroma", DetectRazerControllers, RAZER_VID, RAZER_BASE_STATION_V2_CHROMA_PID, 1, 2); -REGISTER_HID_DETECTOR ("Razer Charging Pad Chroma", DetectRazerControllers, RAZER_VID, RAZER_CHARGING_PAD_CHROMA_PID ); -REGISTER_HID_DETECTOR_PU("Razer Chroma HDK", DetectRazerControllers, RAZER_VID, RAZER_CHROMA_HDK_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Chroma Mug Holder", DetectRazerControllers, RAZER_VID, RAZER_CHROMA_MUG_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Core", DetectRazerControllers, RAZER_VID, RAZER_CORE_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Firefly", DetectRazerControllers, RAZER_VID, RAZER_FIREFLY_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Firefly V2", DetectRazerControllers, RAZER_VID, RAZER_FIREFLY_V2_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Firefly Hyperflux", DetectRazerControllers, RAZER_VID, RAZER_FIREFLY_HYPERFLUX_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Goliathus", DetectRazerControllers, RAZER_VID, RAZER_GOLIATHUS_CHROMA_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Goliathus Extended", DetectRazerControllers, RAZER_VID, RAZER_GOLIATHUS_CHROMA_EXTENDED_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Kraken Kitty Edition", DetectRazerControllers, RAZER_VID, RAZER_KRAKEN_KITTY_EDITION_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Mouse Bungee V3 Chroma", DetectRazerControllers, RAZER_VID, RAZER_MOUSE_BUNGEE_V3_CHROMA_PID, 1, 2); -REGISTER_HID_DETECTOR_PU("Razer Nommo Chroma", DetectRazerControllers, RAZER_VID, RAZER_NOMMO_CHROMA_PID, 1, 3); -REGISTER_HID_DETECTOR_PU("Razer Nommo Pro", DetectRazerControllers, RAZER_VID, RAZER_NOMMO_PRO_PID, 1, 3); +REGISTER_HID_DETECTOR_PU("Razer Base Station Chroma", DetectRazerControllers, RAZER_VID, RAZER_CHROMA_BASE_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Base Station V2 Chroma", DetectRazerControllers, RAZER_VID, RAZER_BASE_STATION_V2_CHROMA_PID, 1, 2); +REGISTER_HID_DETECTOR ("Razer Charging Pad Chroma", DetectRazerControllers, RAZER_VID, RAZER_CHARGING_PAD_CHROMA_PID ); +REGISTER_HID_DETECTOR ("Razer Chroma Addressable RGB Controller", DetectRazerARGBControllers, RAZER_VID, RAZER_CHROMA_ADDRESSABLE_RGB_CONTROLLER_PID ); +REGISTER_HID_DETECTOR_PU("Razer Chroma HDK", DetectRazerControllers, RAZER_VID, RAZER_CHROMA_HDK_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Chroma Mug Holder", DetectRazerControllers, RAZER_VID, RAZER_CHROMA_MUG_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Core", DetectRazerControllers, RAZER_VID, RAZER_CORE_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Firefly", DetectRazerControllers, RAZER_VID, RAZER_FIREFLY_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Firefly V2", DetectRazerControllers, RAZER_VID, RAZER_FIREFLY_V2_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Firefly Hyperflux", DetectRazerControllers, RAZER_VID, RAZER_FIREFLY_HYPERFLUX_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Goliathus", DetectRazerControllers, RAZER_VID, RAZER_GOLIATHUS_CHROMA_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Goliathus Extended", DetectRazerControllers, RAZER_VID, RAZER_GOLIATHUS_CHROMA_EXTENDED_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Kraken Kitty Edition", DetectRazerControllers, RAZER_VID, RAZER_KRAKEN_KITTY_EDITION_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Mouse Bungee V3 Chroma", DetectRazerControllers, RAZER_VID, RAZER_MOUSE_BUNGEE_V3_CHROMA_PID, 1, 2); +REGISTER_HID_DETECTOR_PU("Razer Nommo Chroma", DetectRazerControllers, RAZER_VID, RAZER_NOMMO_CHROMA_PID, 1, 3); +REGISTER_HID_DETECTOR_PU("Razer Nommo Pro", DetectRazerControllers, RAZER_VID, RAZER_NOMMO_PRO_PID, 1, 3); diff --git a/Controllers/RazerController/RazerDevices.h b/Controllers/RazerController/RazerDevices.h index 3691c9222..c1a46a01f 100644 --- a/Controllers/RazerController/RazerDevices.h +++ b/Controllers/RazerController/RazerDevices.h @@ -6,150 +6,151 @@ /*-----------------------------------------------------*\ | Razer vendor ID | \*-----------------------------------------------------*/ -#define RAZER_VID 0x1532 +#define RAZER_VID 0x1532 /*-----------------------------------------------------*\ | Keyboard product IDs | | List taken from OpenRazer | | Non-RGB keyboards were omitted from this list | \*-----------------------------------------------------*/ -#define RAZER_BLACKWIDOW_2019_PID 0x0241 -#define RAZER_BLACKWIDOW_CHROMA_PID 0x0203 -#define RAZER_BLACKWIDOW_CHROMA_TE_PID 0x0209 -#define RAZER_BLACKWIDOW_CHROMA_V2_PID 0x0221 -#define RAZER_BLACKWIDOW_ELITE_PID 0x0228 -#define RAZER_BLACKWIDOW_ESSENTIAL_PID 0x0237 -#define RAZER_BLACKWIDOW_LITE_PID 0x0235 -#define RAZER_BLACKWIDOW_OVERWATCH_PID 0x0211 -#define RAZER_BLACKWIDOW_X_CHROMA_PID 0x0216 -#define RAZER_BLACKWIDOW_X_CHROMA_TE_PID 0x021A -#define RAZER_BLADE_15_ADV_2020_PID 0x0253 -#define RAZER_BLADE_2018_BASE_PID 0x023B -#define RAZER_BLADE_2018_MERCURY_PID 0x0240 -#define RAZER_BLADE_2018_PID 0x0233 -#define RAZER_BLADE_2019_ADV_PID 0x023A -#define RAZER_BLADE_2019_BASE_PID 0x0246 -#define RAZER_BLADE_EARLY_2020_BASE_PID 0x0255 -#define RAZER_BLADE_LATE_2016_PID 0x0224 -#define RAZER_BLADE_MID_2019_MERCURY_PID 0x0245 -#define RAZER_BLADE_PRO_2017_FULLHD_PID 0x022F -#define RAZER_BLADE_PRO_2017_PID 0x0225 -#define RAZER_BLADE_PRO_2019_PID 0x0234 -#define RAZER_BLADE_PRO_LATE_2016_PID 0x0210 -#define RAZER_BLADE_PRO_LATE_2019_PID 0x024C -#define RAZER_BLADE_QHD_PID 0x020F -#define RAZER_BLADE_STEALTH_2019_PID 0x0239 -#define RAZER_BLADE_STEALTH_EARLY_2020_PID 0x0252 -#define RAZER_BLADE_STEALTH_LATE_2016_PID 0x0220 -#define RAZER_BLADE_STEALTH_LATE_2017_PID 0x0232 -#define RAZER_BLADE_STEALTH_LATE_2019_PID 0x024A -#define RAZER_BLADE_STEALTH_LATE_2020_PID 0x0259 -#define RAZER_BLADE_STEALTH_MID_2017_PID 0x022D -#define RAZER_BLADE_STEALTH_PID 0x0205 -#define RAZER_BLADE_STUDIO_EDITION_2019_PID 0x024D -#define RAZER_CYNOSA_CHROMA_PID 0x022A -#define RAZER_CYNOSA_LITE_PID 0x023F -#define RAZER_CYNOSA_V2_PID 0x025E -#define RAZER_DEATHSTALKER_CHROMA_PID 0x0204 -#define RAZER_HUNTSMAN_ELITE_PID 0x0226 -#define RAZER_HUNTSMAN_PID 0x0227 -#define RAZER_HUNTSMAN_TE_PID 0x0243 -#define RAZER_ORBWEAVER_CHROMA_PID 0x0207 -#define RAZER_ORNATA_CHROMA_PID 0x021E -#define RAZER_ORNATA_CHROMA_V2_PID 0x025D -#define RAZER_TARTARUS_CHROMA_PID 0x0208 -#define RAZER_TARTARUS_V2_PID 0x022B +#define RAZER_BLACKWIDOW_2019_PID 0x0241 +#define RAZER_BLACKWIDOW_CHROMA_PID 0x0203 +#define RAZER_BLACKWIDOW_CHROMA_TE_PID 0x0209 +#define RAZER_BLACKWIDOW_CHROMA_V2_PID 0x0221 +#define RAZER_BLACKWIDOW_ELITE_PID 0x0228 +#define RAZER_BLACKWIDOW_ESSENTIAL_PID 0x0237 +#define RAZER_BLACKWIDOW_LITE_PID 0x0235 +#define RAZER_BLACKWIDOW_OVERWATCH_PID 0x0211 +#define RAZER_BLACKWIDOW_X_CHROMA_PID 0x0216 +#define RAZER_BLACKWIDOW_X_CHROMA_TE_PID 0x021A +#define RAZER_BLADE_15_ADV_2020_PID 0x0253 +#define RAZER_BLADE_2018_BASE_PID 0x023B +#define RAZER_BLADE_2018_MERCURY_PID 0x0240 +#define RAZER_BLADE_2018_PID 0x0233 +#define RAZER_BLADE_2019_ADV_PID 0x023A +#define RAZER_BLADE_2019_BASE_PID 0x0246 +#define RAZER_BLADE_EARLY_2020_BASE_PID 0x0255 +#define RAZER_BLADE_LATE_2016_PID 0x0224 +#define RAZER_BLADE_MID_2019_MERCURY_PID 0x0245 +#define RAZER_BLADE_PRO_2017_FULLHD_PID 0x022F +#define RAZER_BLADE_PRO_2017_PID 0x0225 +#define RAZER_BLADE_PRO_2019_PID 0x0234 +#define RAZER_BLADE_PRO_LATE_2016_PID 0x0210 +#define RAZER_BLADE_PRO_LATE_2019_PID 0x024C +#define RAZER_BLADE_QHD_PID 0x020F +#define RAZER_BLADE_STEALTH_2019_PID 0x0239 +#define RAZER_BLADE_STEALTH_EARLY_2020_PID 0x0252 +#define RAZER_BLADE_STEALTH_LATE_2016_PID 0x0220 +#define RAZER_BLADE_STEALTH_LATE_2017_PID 0x0232 +#define RAZER_BLADE_STEALTH_LATE_2019_PID 0x024A +#define RAZER_BLADE_STEALTH_LATE_2020_PID 0x0259 +#define RAZER_BLADE_STEALTH_MID_2017_PID 0x022D +#define RAZER_BLADE_STEALTH_PID 0x0205 +#define RAZER_BLADE_STUDIO_EDITION_2019_PID 0x024D +#define RAZER_CYNOSA_CHROMA_PID 0x022A +#define RAZER_CYNOSA_LITE_PID 0x023F +#define RAZER_CYNOSA_V2_PID 0x025E +#define RAZER_DEATHSTALKER_CHROMA_PID 0x0204 +#define RAZER_HUNTSMAN_ELITE_PID 0x0226 +#define RAZER_HUNTSMAN_PID 0x0227 +#define RAZER_HUNTSMAN_TE_PID 0x0243 +#define RAZER_ORBWEAVER_CHROMA_PID 0x0207 +#define RAZER_ORNATA_CHROMA_PID 0x021E +#define RAZER_ORNATA_CHROMA_V2_PID 0x025D +#define RAZER_TARTARUS_CHROMA_PID 0x0208 +#define RAZER_TARTARUS_V2_PID 0x022B /*-----------------------------------------------------*\ | Mouse product IDs | | List taken from OpenRazer | \*-----------------------------------------------------*/ -#define RAZER_ABYSSUS_1800_PID 0x0020 -#define RAZER_ABYSSUS_2000_PID 0x005E -#define RAZER_ABYSSUS_ELITE_DVA_EDITION_PID 0x006A -#define RAZER_ABYSSUS_ESSENTIAL_PID 0x006B -#define RAZER_ABYSSUS_PID 0x0042 -#define RAZER_ABYSSUS_V2_PID 0x005B -#define RAZER_ATHERIS_RECEIVER_PID 0x0062 -#define RAZER_BASILISK_PID 0x0064 -#define RAZER_BASILISK_ESSENTIAL_PID 0x0065 -#define RAZER_BASILISK_X_HYPERSPEED_PID 0x0083 -#define RAZER_DEATHADDER_1800_PID 0x0038 -#define RAZER_DEATHADDER_2000_PID 0x004F -#define RAZER_DEATHADDER_2013_PID 0x0037 -#define RAZER_DEATHADDER_3_5G_PID 0x0016 -#define RAZER_DEATHADDER_3500_PID 0x0054 -#define RAZER_DEATHADDER_CHROMA_PID 0x0043 -#define RAZER_DEATHADDER_ELITE_PID 0x005C -#define RAZER_DEATHADDER_ESSENTIAL_PID 0x006E +#define RAZER_ABYSSUS_1800_PID 0x0020 +#define RAZER_ABYSSUS_2000_PID 0x005E +#define RAZER_ABYSSUS_ELITE_DVA_EDITION_PID 0x006A +#define RAZER_ABYSSUS_ESSENTIAL_PID 0x006B +#define RAZER_ABYSSUS_PID 0x0042 +#define RAZER_ABYSSUS_V2_PID 0x005B +#define RAZER_ATHERIS_RECEIVER_PID 0x0062 +#define RAZER_BASILISK_PID 0x0064 +#define RAZER_BASILISK_ESSENTIAL_PID 0x0065 +#define RAZER_BASILISK_X_HYPERSPEED_PID 0x0083 +#define RAZER_DEATHADDER_1800_PID 0x0038 +#define RAZER_DEATHADDER_2000_PID 0x004F +#define RAZER_DEATHADDER_2013_PID 0x0037 +#define RAZER_DEATHADDER_3_5G_PID 0x0016 +#define RAZER_DEATHADDER_3500_PID 0x0054 +#define RAZER_DEATHADDER_CHROMA_PID 0x0043 +#define RAZER_DEATHADDER_ELITE_PID 0x005C +#define RAZER_DEATHADDER_ESSENTIAL_PID 0x006E #define RAZER_DEATHADDER_ESSENTIAL_WHITE_EDITION_PID 0x0071 -#define RAZER_DEATHADDER_V2_MINI_PID 0x008C -#define RAZER_DEATHADDER_V2_PID 0x0084 -#define RAZER_DEATHADDER_V2_PRO_WIRED_PID 0x007C -#define RAZER_DEATHADDER_V2_PRO_WIRELESS_PID 0x007D -#define RAZER_DIAMONDBACK_CHROMA_PID 0x004C -#define RAZER_IMPERATOR_PID 0x002F -#define RAZER_LANCEHEAD_TE_WIRED_PID 0x0060 -#define RAZER_LANCEHEAD_WIRED_PID 0x0059 -#define RAZER_LANCEHEAD_WIRELESS_PID 0x005A -#define RAZER_LANCEHEAD_WIRELESS_RECEIVER_PID 0x006F -#define RAZER_LANCEHEAD_WIRELESS_WIRED_PID 0x0070 -#define RAZER_MAMBA_2012_WIRED_PID 0x0024 -#define RAZER_MAMBA_2012_WIRELESS_PID 0x0025 -#define RAZER_MAMBA_ELITE_PID 0x006C -#define RAZER_MAMBA_TE_WIRED_PID 0x0046 -#define RAZER_MAMBA_WIRED_PID 0x0044 -#define RAZER_MAMBA_WIRELESS_PID 0x0045 -#define RAZER_MAMBA_WIRELESS_RECEIVER_PID 0x0072 -#define RAZER_MAMBA_WIRELESS_WIRED_PID 0x0073 -#define RAZER_NAGA_2012_PID 0x002E -#define RAZER_NAGA_2014_PID 0x0040 -#define RAZER_NAGA_CHROMA_PID 0x0053 -#define RAZER_NAGA_EPIC_CHROMA_DOCK_PID 0x003F -#define RAZER_NAGA_EPIC_CHROMA_PID 0x003E -#define RAZER_NAGA_HEX_PID 0x0041 -#define RAZER_NAGA_HEX_RED_PID 0x0036 -#define RAZER_NAGA_HEX_V2_PID 0x0050 -#define RAZER_NAGA_TRINITY_PID 0x0067 -#define RAZER_OROCHI_2011_PID 0x0013 -#define RAZER_OROCHI_2013_PID 0x0039 -#define RAZER_OROCHI_CHROMA_PID 0x0048 -#define RAZER_OUROBOROS_PID 0x0032 -#define RAZER_TAIPAN_PID 0x0034 -#define RAZER_VIPER_MINI_PID 0x008A -#define RAZER_VIPER_PID 0x0078 -#define RAZER_VIPER_ULTIMATE_WIRED_PID 0x007A -#define RAZER_VIPER_ULTIMATE_WIRELESS_PID 0x007B +#define RAZER_DEATHADDER_V2_MINI_PID 0x008C +#define RAZER_DEATHADDER_V2_PID 0x0084 +#define RAZER_DEATHADDER_V2_PRO_WIRED_PID 0x007C +#define RAZER_DEATHADDER_V2_PRO_WIRELESS_PID 0x007D +#define RAZER_DIAMONDBACK_CHROMA_PID 0x004C +#define RAZER_IMPERATOR_PID 0x002F +#define RAZER_LANCEHEAD_TE_WIRED_PID 0x0060 +#define RAZER_LANCEHEAD_WIRED_PID 0x0059 +#define RAZER_LANCEHEAD_WIRELESS_PID 0x005A +#define RAZER_LANCEHEAD_WIRELESS_RECEIVER_PID 0x006F +#define RAZER_LANCEHEAD_WIRELESS_WIRED_PID 0x0070 +#define RAZER_MAMBA_2012_WIRED_PID 0x0024 +#define RAZER_MAMBA_2012_WIRELESS_PID 0x0025 +#define RAZER_MAMBA_ELITE_PID 0x006C +#define RAZER_MAMBA_TE_WIRED_PID 0x0046 +#define RAZER_MAMBA_WIRED_PID 0x0044 +#define RAZER_MAMBA_WIRELESS_PID 0x0045 +#define RAZER_MAMBA_WIRELESS_RECEIVER_PID 0x0072 +#define RAZER_MAMBA_WIRELESS_WIRED_PID 0x0073 +#define RAZER_NAGA_2012_PID 0x002E +#define RAZER_NAGA_2014_PID 0x0040 +#define RAZER_NAGA_CHROMA_PID 0x0053 +#define RAZER_NAGA_EPIC_CHROMA_DOCK_PID 0x003F +#define RAZER_NAGA_EPIC_CHROMA_PID 0x003E +#define RAZER_NAGA_HEX_PID 0x0041 +#define RAZER_NAGA_HEX_RED_PID 0x0036 +#define RAZER_NAGA_HEX_V2_PID 0x0050 +#define RAZER_NAGA_TRINITY_PID 0x0067 +#define RAZER_OROCHI_2011_PID 0x0013 +#define RAZER_OROCHI_2013_PID 0x0039 +#define RAZER_OROCHI_CHROMA_PID 0x0048 +#define RAZER_OUROBOROS_PID 0x0032 +#define RAZER_TAIPAN_PID 0x0034 +#define RAZER_VIPER_MINI_PID 0x008A +#define RAZER_VIPER_PID 0x0078 +#define RAZER_VIPER_ULTIMATE_WIRED_PID 0x007A +#define RAZER_VIPER_ULTIMATE_WIRELESS_PID 0x007B /*-----------------------------------------------------*\ | Headset product IDs | \*-----------------------------------------------------*/ -#define RAZER_KRAKEN_CLASSIC_ALT_PID 0x0506 -#define RAZER_KRAKEN_CLASSIC_PID 0x0501 -#define RAZER_KRAKEN_KITTY_EDITION_PID 0x0F19 -#define RAZER_KRAKEN_PID 0x0504 -#define RAZER_KRAKEN_ULTIMATE_PID 0x0527 -#define RAZER_KRAKEN_V2_PID 0x0510 -#define RAZER_TIAMAT_71_V2_PID 0x0F03 +#define RAZER_KRAKEN_CLASSIC_ALT_PID 0x0506 +#define RAZER_KRAKEN_CLASSIC_PID 0x0501 +#define RAZER_KRAKEN_KITTY_EDITION_PID 0x0F19 +#define RAZER_KRAKEN_PID 0x0504 +#define RAZER_KRAKEN_ULTIMATE_PID 0x0527 +#define RAZER_KRAKEN_V2_PID 0x0510 +#define RAZER_TIAMAT_71_V2_PID 0x0F03 /*-----------------------------------------------------*\ | Accessory product IDs | | List taken from OpenRazer | \*-----------------------------------------------------*/ -#define RAZER_BASE_STATION_V2_CHROMA_PID 0x0F20 -#define RAZER_CHARGING_PAD_CHROMA_PID 0x0F26 -#define RAZER_CHROMA_BASE_PID 0x0F08 -#define RAZER_CHROMA_HDK_PID 0x0F09 -#define RAZER_CHROMA_MUG_PID 0x0F07 -#define RAZER_CORE_PID 0x0215 -#define RAZER_FIREFLY_HYPERFLUX_PID 0x0068 -#define RAZER_FIREFLY_PID 0x0C00 -#define RAZER_FIREFLY_V2_PID 0x0C04 -#define RAZER_GOLIATHUS_CHROMA_EXTENDED_PID 0x0C02 -#define RAZER_GOLIATHUS_CHROMA_PID 0x0C01 -#define RAZER_MOUSE_BUNGEE_V3_CHROMA_PID 0x0F1D -#define RAZER_NOMMO_CHROMA_PID 0x0517 -#define RAZER_NOMMO_PRO_PID 0x0518 +#define RAZER_BASE_STATION_V2_CHROMA_PID 0x0F20 +#define RAZER_CHARGING_PAD_CHROMA_PID 0x0F26 +#define RAZER_CHROMA_ADDRESSABLE_RGB_CONTROLLER_PID 0x0F1F +#define RAZER_CHROMA_BASE_PID 0x0F08 +#define RAZER_CHROMA_HDK_PID 0x0F09 +#define RAZER_CHROMA_MUG_PID 0x0F07 +#define RAZER_CORE_PID 0x0215 +#define RAZER_FIREFLY_HYPERFLUX_PID 0x0068 +#define RAZER_FIREFLY_PID 0x0C00 +#define RAZER_FIREFLY_V2_PID 0x0C04 +#define RAZER_GOLIATHUS_CHROMA_EXTENDED_PID 0x0C02 +#define RAZER_GOLIATHUS_CHROMA_PID 0x0C01 +#define RAZER_MOUSE_BUNGEE_V3_CHROMA_PID 0x0F1D +#define RAZER_NOMMO_CHROMA_PID 0x0517 +#define RAZER_NOMMO_PRO_PID 0x0518 typedef struct { @@ -4659,6 +4660,101 @@ static const razer_device mug_holder_device = 0 }; +/*-------------------------------------------------------------*\ +| Razer Chroma Addressable RGB Controller | +| | +| Zone "LED Strip" | +| Linear | +| 80 LEDs | +| | +| Zone "LED Strip" | +| Linear | +| 80 LEDs | +| | +| Zone "LED Strip" | +| Linear | +| 80 LEDs | +| | +| Zone "LED Strip" | +| Linear | +| 80 LEDs | +| | +| Zone "LED Strip" | +| Linear | +| 80 LEDs | +| | +| Zone "LED Strip" | +| Linear | +| 80 LEDs | +\*-------------------------------------------------------------*/ +static const razer_zone chromaargb_zone_1 = +{ + "Channel 1", + ZONE_TYPE_LINEAR, + 1, + 80 +}; + +static const razer_zone chromaargb_zone_2 = +{ + "Channel 2", + ZONE_TYPE_LINEAR, + 1, + 80 +}; + +static const razer_zone chromaargb_zone_3 = +{ + "Channel 3", + ZONE_TYPE_LINEAR, + 1, + 80 +}; + +static const razer_zone chromaargb_zone_4 = +{ + "Channel 4", + ZONE_TYPE_LINEAR, + 1, + 80 +}; + +static const razer_zone chromaargb_zone_5 = +{ + "Channel 5", + ZONE_TYPE_LINEAR, + 1, + 80 +}; + +static const razer_zone chromaargb_zone_6 = +{ + "Channel 6", + ZONE_TYPE_LINEAR, + 1, + 80 +}; + +static const razer_device chromaargb_device = +{ + "Razer Chroma Addressable RGB Controller", + RAZER_CHROMA_ADDRESSABLE_RGB_CONTROLLER_PID, + DEVICE_TYPE_LEDSTRIP, + true, + 6, + 80, + { + &chromaargb_zone_1, + &chromaargb_zone_2, + &chromaargb_zone_3, + &chromaargb_zone_4, + &chromaargb_zone_5, + &chromaargb_zone_6 + }, + NULL, + 0 +}; + /*-------------------------------------------------------------*\ | Razer Chroma HDK | | | @@ -5006,6 +5102,7 @@ static const razer_device* device_list[] = \*-----------------------------------------------------------------*/ &base_station_device, &charging_pad_chroma_device, + &chromaargb_device, &chromahdk_device, &core_device, &mug_holder_device,