Skip to content
3 changes: 2 additions & 1 deletion src/include/razeraccessory_driver.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#define USB_DEVICE_ID_RAZER_MOUSE_BUNGEE_V3_CHROMA 0x0F1D
#define USB_DEVICE_ID_RAZER_BASE_STATION_V2_CHROMA 0x0F20
#define USB_DEVICE_ID_RAZER_THUNDERBOLT_4_DOCK_CHROMA 0x0F21
#define USB_DEVICE_ID_RAZER_CHARGING_PAD_CHROMA 0x0F26

#define RAZER_ACCESSORY_WAIT_MIN_US 600
#define RAZER_ACCESSORY_WAIT_MAX_US 1000
Expand All @@ -37,7 +38,7 @@ ssize_t razer_accessory_attr_write_mode_wave(IOUSBDeviceInterface **usb_dev, con
ssize_t razer_accessory_attr_write_mode_static(IOUSBDeviceInterface **usb_dev, const char *buf, size_t count);
ssize_t razer_accessory_attr_write_mode_breath(IOUSBDeviceInterface **usb_dev, const char *buf, size_t count);
ushort razer_accessory_attr_read_set_brightness(IOUSBDeviceInterface **usb_dev);
ssize_t razer_accessory_attr_write_set_brightness(IOUSBDeviceInterface **usb_dev, ushort brightness, size_t count);
ssize_t razer_accessory_attr_write_set_brightness(IOUSBDeviceInterface **usb_dev, ushort brightness, int count);


#endif
2 changes: 2 additions & 0 deletions src/include/razerkbd_driver.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
#define USB_DEVICE_ID_RAZER_ORNATA_CHROMA 0x021E
#define USB_DEVICE_ID_RAZER_ORNATA 0x021F
#define USB_DEVICE_ID_RAZER_ORNATA_CHROMA_V2 0x025D
#define USB_DEVICE_ID_RAZER_ORNATA_CHROMA_V3 0x02a1
#define USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2016 0x0220
#define USB_DEVICE_ID_RAZER_BLACKWIDOW_CHROMA_V2 0x0221
#define USB_DEVICE_ID_RAZER_BLACKWIDOW_V3 0x024e
Expand Down Expand Up @@ -83,6 +84,7 @@
#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_DEATHSTALKER_V2_PRO 0x0292
#define USB_DEVICE_ID_RAZER_ORNATA_V3X 0x02a2

/* Each keyboard report has 90 bytes*/
Expand Down
2 changes: 2 additions & 0 deletions src/include/razermousemat_driver.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
#define USB_DEVICE_ID_RAZER_FIREFLY_HYPERFLUX 0x0068
#define USB_DEVICE_ID_RAZER_FIREFLY 0x0C00
#define USB_DEVICE_ID_RAZER_FIREFLY_V2 0x0c04
#define USB_DEVICE_ID_RAZER_FIREFLY_V2_PRO 0x0c08
#define USB_DEVICE_ID_RAZER_GOLIATHUS_CHROMA 0x0C01
#define USB_DEVICE_ID_RAZER_GOLIATHUS_CHROMA_3XL 0x0C06
#define USB_DEVICE_ID_RAZER_GOLIATHUS_CHROMA_EXTENDED 0x0C02

#define RAZER_MOUSEMAT_WAIT_MIN_US 900
Expand Down
39 changes: 31 additions & 8 deletions src/lib/razeraccessory_driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ ssize_t razer_accessory_attr_write_mode_spectrum(IOUSBDeviceInterface **usb_dev,
case USB_DEVICE_ID_RAZER_NOMMO_PRO:
case USB_DEVICE_ID_RAZER_NOMMO_CHROMA:
case USB_DEVICE_ID_RAZER_MOUSE_DOCK:
case USB_DEVICE_ID_RAZER_CHARGING_PAD_CHROMA:
report = razer_chroma_extended_matrix_effect_spectrum(VARSTORE, ZERO_LED);
report.transaction_id.id = 0x3F;
break;
Expand Down Expand Up @@ -145,6 +146,7 @@ ssize_t razer_accessory_attr_write_mode_none(IOUSBDeviceInterface **usb_dev, con
case USB_DEVICE_ID_RAZER_NOMMO_PRO:
case USB_DEVICE_ID_RAZER_NOMMO_CHROMA:
case USB_DEVICE_ID_RAZER_MOUSE_DOCK:
case USB_DEVICE_ID_RAZER_CHARGING_PAD_CHROMA:
report = razer_chroma_extended_matrix_effect_none(VARSTORE, ZERO_LED);
report.transaction_id.id = 0x3F;
break;
Expand Down Expand Up @@ -214,6 +216,7 @@ ssize_t razer_accessory_attr_write_mode_custom(IOUSBDeviceInterface **usb_dev, c
case USB_DEVICE_ID_RAZER_NOMMO_PRO:
case USB_DEVICE_ID_RAZER_NOMMO_CHROMA:
case USB_DEVICE_ID_RAZER_MOUSE_DOCK:
case USB_DEVICE_ID_RAZER_CHARGING_PAD_CHROMA:
report = razer_chroma_extended_matrix_effect_custom_frame();
break;

Expand Down Expand Up @@ -261,6 +264,10 @@ ssize_t razer_accessory_attr_write_mode_static(IOUSBDeviceInterface **usb_dev, c
report.transaction_id.id = 0x3F;
break;

case USB_DEVICE_ID_RAZER_CHARGING_PAD_CHROMA:
report = razer_chroma_extended_matrix_effect_static(NOSTORE, ZERO_LED, (struct razer_rgb *)&buf[0]);
break;

case USB_DEVICE_ID_RAZER_MOUSE_BUNGEE_V3_CHROMA:
case USB_DEVICE_ID_RAZER_BASE_STATION_V2_CHROMA:
case USB_DEVICE_ID_RAZER_THUNDERBOLT_4_DOCK_CHROMA:
Expand Down Expand Up @@ -306,6 +313,7 @@ ssize_t razer_accessory_attr_write_mode_wave(IOUSBDeviceInterface **usb_dev, con
case USB_DEVICE_ID_RAZER_NOMMO_PRO:
case USB_DEVICE_ID_RAZER_NOMMO_CHROMA:
case USB_DEVICE_ID_RAZER_MOUSE_DOCK:
case USB_DEVICE_ID_RAZER_CHARGING_PAD_CHROMA:
report = razer_chroma_extended_matrix_effect_wave(VARSTORE, ZERO_LED, direction, speed);
report.transaction_id.id = 0x3F;
break;
Expand Down Expand Up @@ -350,6 +358,7 @@ ssize_t razer_accessory_attr_write_mode_breath(IOUSBDeviceInterface **usb_dev, c
case USB_DEVICE_ID_RAZER_NOMMO_PRO:
case USB_DEVICE_ID_RAZER_NOMMO_CHROMA:
case USB_DEVICE_ID_RAZER_MOUSE_DOCK:
case USB_DEVICE_ID_RAZER_CHARGING_PAD_CHROMA:
switch(count) {
case 3: // Single colour mode
report = razer_chroma_extended_matrix_effect_breathing_single(VARSTORE, ZERO_LED, (struct razer_rgb *)&buf[0]);
Expand Down Expand Up @@ -487,11 +496,12 @@ ssize_t razer_accessory_attr_read_device_mode(IOUSBDeviceInterface **usb_dev, ch
*
* Sets the brightness to the ASCII number written to this file.
*/
ssize_t razer_accessory_attr_write_set_brightness(IOUSBDeviceInterface **usb_dev, ushort brightness, size_t count)
ssize_t razer_accessory_attr_write_set_brightness(IOUSBDeviceInterface **usb_dev, ushort brightness, int count)
{

struct razer_report report = {0};
UInt16 product = -1;
(*usb_dev)->GetDeviceProduct(usb_dev, &product);
struct razer_report report = {0};

switch (product) {
case USB_DEVICE_ID_RAZER_MOUSE_BUNGEE_V3_CHROMA:
Expand All @@ -510,6 +520,7 @@ ssize_t razer_accessory_attr_write_set_brightness(IOUSBDeviceInterface **usb_dev
case USB_DEVICE_ID_RAZER_NOMMO_PRO:
case USB_DEVICE_ID_RAZER_NOMMO_CHROMA:
case USB_DEVICE_ID_RAZER_MOUSE_DOCK: // In openrazer this is bundled with saving brightness to usb_dev for MOUSE_DOCK
case USB_DEVICE_ID_RAZER_CHARGING_PAD_CHROMA:
report = razer_chroma_extended_matrix_brightness(VARSTORE, ZERO_LED, brightness);
break;

Expand All @@ -530,24 +541,36 @@ ssize_t razer_accessory_attr_write_set_brightness(IOUSBDeviceInterface **usb_dev
*/
ushort razer_accessory_attr_read_set_brightness(IOUSBDeviceInterface **usb_dev)
{
bool is_matrix_brightness = false;
unsigned char brightness = 0;
struct razer_report report = {0};
struct razer_report response = {0};

UInt16 product = -1;
(*usb_dev)->GetDeviceProduct(usb_dev, &product);
struct razer_report report = razer_chroma_standard_get_led_brightness(VARSTORE, BACKLIGHT_LED);
struct razer_report response = {0};
unsigned char brightness = 0;

switch (product) {
case USB_DEVICE_ID_RAZER_MOUSE_BUNGEE_V3_CHROMA:
case USB_DEVICE_ID_RAZER_BASE_STATION_V2_CHROMA:
case USB_DEVICE_ID_RAZER_THUNDERBOLT_4_DOCK_CHROMA:
case USB_DEVICE_ID_RAZER_MOUSE_DOCK:
break;
case USB_DEVICE_ID_RAZER_CHARGING_PAD_CHROMA:
report = razer_chroma_extended_matrix_get_brightness(VARSTORE, ZERO_LED);
report.transaction_id.id = 0x1F;
is_matrix_brightness = true;
break;

default:
response = razer_send_payload(usb_dev, &report);
brightness = response.arguments[2];
report = razer_chroma_standard_get_led_brightness(VARSTORE, BACKLIGHT_LED);
break;
}

response = razer_send_payload(usb_dev, &report);
brightness = response.arguments[2];

if(is_matrix_brightness) {
brightness = round(brightness / 2.55);
}

return brightness;
}
Loading