Add Razer Chroma Addressable RGB Controller to RazerController

This commit is contained in:
Adam Honse
2021-02-09 16:18:32 -06:00
parent 79dacbaeb0
commit 2fd21992b0
4 changed files with 417 additions and 180 deletions

View File

@@ -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));
}

View File

@@ -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);
};

View File

@@ -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);

View File

@@ -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,