aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/include/razerkbd_driver.h4
-rwxr-xr-xsrc/lib/razerdevice.c4
-rw-r--r--src/lib/razerkbd_driver.c54
3 files changed, 62 insertions, 0 deletions
diff --git a/src/include/razerkbd_driver.h b/src/include/razerkbd_driver.h
index 12b0ea9..360f3c3 100644
--- a/src/include/razerkbd_driver.h
+++ b/src/include/razerkbd_driver.h
@@ -80,6 +80,10 @@
#define USB_DEVICE_ID_RAZER_HUNTSMAN_V2 0x026c
#define USB_DEVICE_ID_RAZER_HUNTSMAN_V2_TKL 0x026b
#define USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_MINI_WIRELESS 0x0271
+#define USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_75 0x02a5
+#define USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_PRO 0x028D
+#define USB_DEVICE_ID_RAZER_DEATHSTALKER_V2 0x0295
+#define USB_DEVICE_ID_RAZER_ORNATA_V3X 0x02a2
/* Each keyboard report has 90 bytes*/
#define RAZER_BLACKWIDOW_REPORT_LEN 0x5A
diff --git a/src/lib/razerdevice.c b/src/lib/razerdevice.c
index 8a165c5..fcc0c10 100755
--- a/src/lib/razerdevice.c
+++ b/src/lib/razerdevice.c
@@ -38,6 +38,7 @@ bool is_keyboard(IOUSBDeviceInterface **usb_dev)
case USB_DEVICE_ID_RAZER_BLACKWIDOW_CHROMA:
case USB_DEVICE_ID_RAZER_DEATHSTALKER_EXPERT:
case USB_DEVICE_ID_RAZER_DEATHSTALKER_CHROMA:
+ case USB_DEVICE_ID_RAZER_DEATHSTALKER_V2:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_CHROMA_TE:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_X_CHROMA:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_X_CHROMA_TE:
@@ -66,6 +67,9 @@ bool is_keyboard(IOUSBDeviceInterface **usb_dev)
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2_TKL:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_MINI_WIRED:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_MINI_WIRELESS:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_75:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_PRO:
+ case USB_DEVICE_ID_RAZER_ORNATA_V3X:
return true;
}
diff --git a/src/lib/razerkbd_driver.c b/src/lib/razerkbd_driver.c
index 8e31d5a..c103939 100644
--- a/src/lib/razerkbd_driver.c
+++ b/src/lib/razerkbd_driver.c
@@ -122,6 +122,7 @@ ssize_t razer_attr_write_mode_macro_effect(IOUSBDeviceInterface **usb_dev, const
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_TK:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_PRO_WIRED:
case USB_DEVICE_ID_RAZER_HUNTSMAN_MINI:
+ case USB_DEVICE_ID_RAZER_ORNATA_V3X:
report = razer_chroma_standard_set_led_effect(NOSTORE, MACRO_LED, enabled);
report.transaction_id.id = 0x3F;
break;
@@ -132,6 +133,8 @@ ssize_t razer_attr_write_mode_macro_effect(IOUSBDeviceInterface **usb_dev, const
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2:
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2_TKL:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_MINI_WIRED:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_75:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_PRO:
report = razer_chroma_standard_set_led_effect(NOSTORE, MACRO_LED, enabled);
report.transaction_id.id = 0x1F;
break;
@@ -343,6 +346,7 @@ ssize_t razer_attr_write_mode_none(IOUSBDeviceInterface **usb_dev, const char *b
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_TK:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_PRO_WIRED:
case USB_DEVICE_ID_RAZER_HUNTSMAN_MINI:
+ case USB_DEVICE_ID_RAZER_DEATHSTALKER_V2:
report = razer_chroma_extended_matrix_effect_none(VARSTORE, BACKLIGHT_LED);
break;
@@ -355,6 +359,9 @@ ssize_t razer_attr_write_mode_none(IOUSBDeviceInterface **usb_dev, const char *b
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2:
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2_TKL:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_MINI_WIRED:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_75:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_PRO:
+ case USB_DEVICE_ID_RAZER_ORNATA_V3X:
report = razer_chroma_extended_matrix_effect_none(VARSTORE, BACKLIGHT_LED);
report.transaction_id.id = 0x1F;
break;
@@ -414,6 +421,7 @@ ssize_t razer_attr_write_mode_wave(IOUSBDeviceInterface **usb_dev, const char *b
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_TK:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_PRO_WIRED:
case USB_DEVICE_ID_RAZER_HUNTSMAN_MINI:
+ case USB_DEVICE_ID_RAZER_DEATHSTALKER_V2:
report = razer_chroma_extended_matrix_effect_wave(VARSTORE, BACKLIGHT_LED, direction, speed);
break;
@@ -430,6 +438,9 @@ ssize_t razer_attr_write_mode_wave(IOUSBDeviceInterface **usb_dev, const char *b
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2:
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2_TKL:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_MINI_WIRED:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_75:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_PRO:
+ case USB_DEVICE_ID_RAZER_ORNATA_V3X:
report = razer_chroma_extended_matrix_effect_wave(VARSTORE, BACKLIGHT_LED, direction, speed);
report.transaction_id.id = 0x1F;
break;
@@ -474,6 +485,7 @@ ssize_t razer_attr_write_mode_spectrum(IOUSBDeviceInterface **usb_dev, const cha
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_TK:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_PRO_WIRED:
case USB_DEVICE_ID_RAZER_HUNTSMAN_MINI:
+ case USB_DEVICE_ID_RAZER_DEATHSTALKER_V2:
report = razer_chroma_extended_matrix_effect_spectrum(VARSTORE, BACKLIGHT_LED);
break;
@@ -484,6 +496,9 @@ ssize_t razer_attr_write_mode_spectrum(IOUSBDeviceInterface **usb_dev, const cha
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2:
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2_TKL:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_MINI_WIRED:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_75:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_PRO:
+ case USB_DEVICE_ID_RAZER_ORNATA_V3X:
report = razer_chroma_extended_matrix_effect_spectrum(VARSTORE, BACKLIGHT_LED);
report.transaction_id.id = 0x1F;
break;
@@ -547,6 +562,7 @@ ssize_t razer_attr_write_mode_reactive(IOUSBDeviceInterface **usb_dev, const cha
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_TK:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_PRO_WIRED:
case USB_DEVICE_ID_RAZER_HUNTSMAN_MINI:
+ case USB_DEVICE_ID_RAZER_DEATHSTALKER_V2:
report = razer_chroma_extended_matrix_effect_reactive(VARSTORE, BACKLIGHT_LED, speed, (struct razer_rgb *)&buf[1]);
break;
@@ -558,6 +574,9 @@ ssize_t razer_attr_write_mode_reactive(IOUSBDeviceInterface **usb_dev, const cha
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2:
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2_TKL:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_MINI_WIRED:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_75:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_PRO:
+ case USB_DEVICE_ID_RAZER_ORNATA_V3X:
report = razer_chroma_extended_matrix_effect_reactive(VARSTORE, BACKLIGHT_LED, speed, (struct razer_rgb *)&buf[1]);
report.transaction_id.id = 0x1F;
break;
@@ -688,6 +707,7 @@ ssize_t razer_attr_write_mode_static(IOUSBDeviceInterface **usb_dev, const char
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_TK:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_PRO_WIRED:
case USB_DEVICE_ID_RAZER_HUNTSMAN_MINI:
+ case USB_DEVICE_ID_RAZER_DEATHSTALKER_V2:
if (count == 3)
{
report = razer_chroma_extended_matrix_effect_static(VARSTORE, BACKLIGHT_LED, (struct razer_rgb *)&buf[0]);
@@ -706,6 +726,9 @@ ssize_t razer_attr_write_mode_static(IOUSBDeviceInterface **usb_dev, const char
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2:
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2_TKL:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_MINI_WIRED:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_75:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_PRO:
+ case USB_DEVICE_ID_RAZER_ORNATA_V3X:
if (count == 3)
{
report = razer_chroma_extended_matrix_effect_static(VARSTORE, BACKLIGHT_LED, (struct razer_rgb *)&buf[0]);
@@ -875,6 +898,9 @@ ssize_t razer_attr_write_mode_static_no_store(IOUSBDeviceInterface **usb_dev, co
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2:
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2_TKL:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_MINI_WIRED:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_75:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_PRO:
+ case USB_DEVICE_ID_RAZER_ORNATA_V3X:
if (count == 3)
{
report = razer_chroma_extended_matrix_effect_static(NOSTORE, BACKLIGHT_LED, (struct razer_rgb *)&buf[0]);
@@ -965,6 +991,7 @@ ssize_t razer_attr_write_mode_starlight(IOUSBDeviceInterface **usb_dev, const ch
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_TK:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_PRO_WIRED:
case USB_DEVICE_ID_RAZER_HUNTSMAN_MINI:
+ case USB_DEVICE_ID_RAZER_DEATHSTALKER_V2:
if (count == 7)
{
report = razer_chroma_extended_matrix_effect_starlight_dual(VARSTORE, BACKLIGHT_LED, buf[0], (struct razer_rgb *)&buf[1], (struct razer_rgb *)&buf[4]);
@@ -993,6 +1020,9 @@ ssize_t razer_attr_write_mode_starlight(IOUSBDeviceInterface **usb_dev, const ch
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2:
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2_TKL:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_MINI_WIRED:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_75:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_PRO:
+ case USB_DEVICE_ID_RAZER_ORNATA_V3X:
if (count == 7)
{
report = razer_chroma_extended_matrix_effect_starlight_dual(VARSTORE, BACKLIGHT_LED, buf[0], (struct razer_rgb *)&buf[1], (struct razer_rgb *)&buf[4]);
@@ -1162,6 +1192,7 @@ ssize_t razer_attr_write_mode_breath(IOUSBDeviceInterface **usb_dev, const char
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_TK:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_PRO_WIRED:
case USB_DEVICE_ID_RAZER_HUNTSMAN_MINI:
+ case USB_DEVICE_ID_RAZER_DEATHSTALKER_V2:
switch (count)
{
case 3: // Single colour mode
@@ -1192,6 +1223,9 @@ ssize_t razer_attr_write_mode_breath(IOUSBDeviceInterface **usb_dev, const char
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2:
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2_TKL:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_MINI_WIRED:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_75:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_PRO:
+ case USB_DEVICE_ID_RAZER_ORNATA_V3X:
if (count == 3)
{ // Single colour mode
report = razer_chroma_extended_matrix_effect_breathing_single(VARSTORE, BACKLIGHT_LED, (struct razer_rgb *)&buf[0]);
@@ -1386,6 +1420,7 @@ ssize_t razer_attr_write_mode_custom(IOUSBDeviceInterface **usb_dev, const char
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_TK:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_PRO_WIRED:
case USB_DEVICE_ID_RAZER_HUNTSMAN_MINI:
+ case USB_DEVICE_ID_RAZER_DEATHSTALKER_V2:
report = razer_chroma_extended_matrix_effect_custom_frame();
break;
@@ -1397,6 +1432,9 @@ ssize_t razer_attr_write_mode_custom(IOUSBDeviceInterface **usb_dev, const char
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2:
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2_TKL:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_MINI_WIRED:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_75:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_PRO:
+ case USB_DEVICE_ID_RAZER_ORNATA_V3X:
report = razer_chroma_extended_matrix_effect_custom_frame();
report.transaction_id.id = 0x1F;
break;
@@ -1468,6 +1506,7 @@ ssize_t razer_attr_write_set_brightness(IOUSBDeviceInterface **usb_dev, ushort b
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_TK:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_PRO_WIRED:
case USB_DEVICE_ID_RAZER_HUNTSMAN_MINI:
+ case USB_DEVICE_ID_RAZER_DEATHSTALKER_V2:
report = razer_chroma_extended_matrix_brightness(VARSTORE, BACKLIGHT_LED, brightness);
break;
@@ -1478,6 +1517,9 @@ ssize_t razer_attr_write_set_brightness(IOUSBDeviceInterface **usb_dev, ushort b
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2:
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2_TKL:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_MINI_WIRED:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_75:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_PRO:
+ case USB_DEVICE_ID_RAZER_ORNATA_V3X:
report = razer_chroma_extended_matrix_brightness(VARSTORE, BACKLIGHT_LED, brightness);
report.transaction_id.id = 0x1F;
break;
@@ -1550,6 +1592,7 @@ ushort razer_attr_read_set_brightness(IOUSBDeviceInterface **usb_dev)
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_TK:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_PRO_WIRED:
case USB_DEVICE_ID_RAZER_HUNTSMAN_MINI:
+ case USB_DEVICE_ID_RAZER_DEATHSTALKER_V2:
report = razer_chroma_extended_matrix_get_brightness(VARSTORE, BACKLIGHT_LED);
is_matrix_brightness = true;
break;
@@ -1561,6 +1604,9 @@ ushort razer_attr_read_set_brightness(IOUSBDeviceInterface **usb_dev)
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2:
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2_TKL:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_MINI_WIRED:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_75:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_PRO:
+ case USB_DEVICE_ID_RAZER_ORNATA_V3X:
report = razer_chroma_extended_matrix_get_brightness(VARSTORE, BACKLIGHT_LED);
report.transaction_id.id = 0x1F;
is_matrix_brightness = true;
@@ -1673,6 +1719,7 @@ ssize_t razer_attr_write_matrix_custom_frame(IOUSBDeviceInterface **usb_dev, con
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_TK:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_PRO_WIRED:
case USB_DEVICE_ID_RAZER_HUNTSMAN_MINI:
+ case USB_DEVICE_ID_RAZER_DEATHSTALKER_V2:
report = razer_chroma_extended_matrix_set_custom_frame(row_id, start_col, stop_col, (unsigned char *)&buf[offset]);
break;
@@ -1684,6 +1731,9 @@ ssize_t razer_attr_write_matrix_custom_frame(IOUSBDeviceInterface **usb_dev, con
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2:
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2_TKL:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_MINI_WIRED:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_75:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_PRO:
+ case USB_DEVICE_ID_RAZER_ORNATA_V3X:
report = razer_chroma_extended_matrix_set_custom_frame(row_id, start_col, stop_col, (unsigned char *)&buf[offset]);
report.transaction_id.id = 0x1F;
break;
@@ -1756,6 +1806,7 @@ static int razer_get_report(IOUSBDeviceInterface **usb_dev, struct razer_report
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_TK:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_PRO_WIRED:
case USB_DEVICE_ID_RAZER_HUNTSMAN_MINI:
+ case USB_DEVICE_ID_RAZER_ORNATA_V3X:
report_index = 0x02;
response_index = 0x02;
break;
@@ -1764,6 +1815,9 @@ static int razer_get_report(IOUSBDeviceInterface **usb_dev, struct razer_report
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2:
case USB_DEVICE_ID_RAZER_HUNTSMAN_V2_TKL:
case USB_DEVICE_ID_RAZER_BLACKWIDOW_V3_MINI_WIRED:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_75:
+ case USB_DEVICE_ID_RAZER_BLACKWIDOW_V4_PRO:
+ case USB_DEVICE_ID_RAZER_DEATHSTALKER_V2:
report_index = 0x03;
response_index = 0x03;
break;