From 8e78ea192f49761bd7048c82257024092f3fa24f Mon Sep 17 00:00:00 2001 From: Ryan Williams <git@ryan.nz> Date: Fri, 18 Dec 2020 14:23:15 +1300 Subject: [PATCH] Add support for DeathAdder V2 Pro --- README.md | 2 + daemon/openrazer_daemon/hardware/mouse.py | 73 +++++++++++++++++++ driver/razermouse_driver.c | 58 +++++++++++++++ driver/razermouse_driver.h | 2 + ...io.github.openrazer.openrazer.metainfo.xml | 2 + install_files/udev/99-razer.rules | 2 +- .../razerdeathadderv2prowired.cfg | 21 ++++++ .../razerdeathadderv2prowireless.cfg | 23 ++++++ 8 files changed, 182 insertions(+), 1 deletion(-) create mode 100644 pylib/openrazer/_fake_driver/razerdeathadderv2prowired.cfg create mode 100644 pylib/openrazer/_fake_driver/razerdeathadderv2prowireless.cfg diff --git a/README.md b/README.md index 031d2ad6..7051140f 100644 --- a/README.md +++ b/README.md @@ -119,6 +119,8 @@ The devices below are fully feature supported by OpenRazer, which means all avai | Razer Viper | 1532:0078 | | Razer Viper Ultimate (Wired) | 1532:007A | | Razer Viper Ultimate (Wireless) | 1532:007B | +| Razer DeathAdder V2 Pro (Wired) | 1532:007C | +| Razer DeathAdder V2 Pro (Wireless) | 1532:007D | | Razer Basilisk X HyperSpeed | 1532:0083 | | Razer DeathAdder V2 | 1532:0084 | | Razer Viper Mini | 1532:008A | diff --git a/daemon/openrazer_daemon/hardware/mouse.py b/daemon/openrazer_daemon/hardware/mouse.py index e370d9f9..21257258 100644 --- a/daemon/openrazer_daemon/hardware/mouse.py +++ b/daemon/openrazer_daemon/hardware/mouse.py @@ -2056,6 +2056,79 @@ class RazerDeathAdderV2(__RazerDeviceSpecialBrightnessSuspend): self.disable_notify = False +class RazerDeathAdderV2ProWired(__RazerDeviceSpecialBrightnessSuspend): + """ + Class for the Razer DeathAdder V2 Pro (Wired) + """ + EVENT_FILE_REGEX = re.compile(r'.*1532_Razer_DeathAdder_V2_Pro_000000000000-if0(1|2)-event-kbd') + + USB_VID = 0x1532 + USB_PID = 0x007C + HAS_MATRIX = True + MATRIX_DIMS = [1, 1] + METHODS = ['get_device_type_mouse', 'max_dpi', 'get_dpi_xy', 'set_dpi_xy', 'get_poll_rate', 'set_poll_rate', 'get_logo_brightness', 'set_logo_brightness', + # Battery + 'get_battery', 'is_charging', 'set_idle_time', 'set_low_battery_threshold', + # Logo + 'set_logo_static_naga_hex_v2', 'set_logo_spectrum_naga_hex_v2', 'set_logo_none_naga_hex_v2', 'set_logo_reactive_naga_hex_v2', + 'set_logo_breath_random_naga_hex_v2', 'set_logo_breath_single_naga_hex_v2', 'set_logo_breath_dual_naga_hex_v2', + # Custom frame + 'set_custom_effect', 'set_key_row'] + + DEVICE_IMAGE = "https://assets.razerzone.com/eeimages/support/products/1714/comp_1_00000.png" + + DPI_MAX = 20000 + + def _suspend_device(self): + """ + Suspend the device + + Get the current brightness level, store it for later and then set the brightness to 0 + """ + self.suspend_args.clear() + self.suspend_args['brightness'] = _da_get_logo_brightness(self) + + self.disable_notify = True + _da_set_logo_brightness(self, 0) + self.disable_notify = False + + def _resume_device(self): + """ + Resume the device + + Get the last known brightness and then set the brightness + """ + logo_brightness = self.suspend_args.get('brightness', 100) + + self.disable_notify = True + _da_set_logo_brightness(self, logo_brightness) + self.disable_notify = False + + +class RazerDeathAdderV2ProWireless(RazerDeathAdderV2ProWired): + """ + Class for the Razer DeathAdder V2 Pro (Wireless) + """ + EVENT_FILE_REGEX = re.compile(r'.*Razer_Razer_DeathAdder_V2_Pro_000000000000-if0(1|2)-event-kbd') + + USB_PID = 0x007D + METHODS = RazerDeathAdderV2ProWired.METHODS + ['set_charge_effect', 'set_charge_colour'] + + def __init__(self, *args, **kwargs): + super(RazerDeathAdderV2ProWireless, self).__init__(*args, **kwargs) + + self._battery_manager = _BatteryManager(self, self._device_number, 'Razer DeathAdder V2 Pro Wireless') + self._battery_manager.active = self.config.getboolean('Startup', 'mouse_battery_notifier', fallback=False) + + def _close(self): + """ + Close the key manager + """ + super(RazerDeathAdderV2ProWireless, self)._close() + + self._battery_manager.close() + + class RazerAtherisReceiver(__RazerDevice): """ Class for the Razer Atheris (Receiver) diff --git a/driver/razermouse_driver.c b/driver/razermouse_driver.c index 9fbd2758..865c3358 100644 --- a/driver/razermouse_driver.c +++ b/driver/razermouse_driver.c @@ -62,6 +62,8 @@ static int razer_get_report(struct usb_device *usb_dev, struct razer_report *req case USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRELESS: case USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: return razer_get_usb_response(usb_dev, 0x00, request_report, 0x00, response_report, RAZER_VIPER_MOUSE_RECEIVER_WAIT_MIN_US, RAZER_VIPER_MOUSE_RECEIVER_WAIT_MAX_US); break; @@ -396,6 +398,14 @@ static ssize_t razer_attr_read_device_type(struct device *dev, struct device_att device_type = "Razer DeathAdder V2\n"; break; + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + device_type = "Razer DeathAdder V2 Pro (Wired)\n"; + break; + + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: + device_type = "Razer DeathAdder V2 Pro (Wireless)\n"; + break; + case USB_DEVICE_ID_RAZER_DEATHADDER_2000: device_type = "Razer DeathAdder 2000\n"; break; @@ -451,6 +461,8 @@ static ssize_t razer_attr_read_get_firmware_version(struct device *dev, struct d case USB_DEVICE_ID_RAZER_MAMBA_WIRELESS_WIRED: case USB_DEVICE_ID_RAZER_BASILISK: case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: report.transaction_id.id = 0x3f; break; } @@ -533,6 +545,8 @@ static ssize_t razer_attr_write_mode_custom(struct device *dev, struct device_at case USB_DEVICE_ID_RAZER_MAMBA_WIRELESS_WIRED: case USB_DEVICE_ID_RAZER_BASILISK: case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: case USB_DEVICE_ID_RAZER_VIPER: case USB_DEVICE_ID_RAZER_VIPER_MINI: case USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRED: @@ -766,6 +780,8 @@ static ssize_t razer_attr_read_get_serial(struct device *dev, struct device_attr case USB_DEVICE_ID_RAZER_MAMBA_WIRELESS_WIRED: case USB_DEVICE_ID_RAZER_BASILISK: case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: report.transaction_id.id = 0x3f; break; @@ -800,6 +816,8 @@ static ssize_t razer_attr_read_get_battery(struct device *dev, struct device_att case USB_DEVICE_ID_RAZER_LANCEHEAD_WIRELESS: case USB_DEVICE_ID_RAZER_MAMBA_WIRELESS_RECEIVER: case USB_DEVICE_ID_RAZER_MAMBA_WIRELESS_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: report.transaction_id.id = 0x3f; break; case USB_DEVICE_ID_RAZER_LANCEHEAD_WIRELESS_RECEIVER: @@ -838,6 +856,8 @@ static ssize_t razer_attr_read_is_charging(struct device *dev, struct device_att case USB_DEVICE_ID_RAZER_LANCEHEAD_WIRELESS: case USB_DEVICE_ID_RAZER_MAMBA_WIRELESS_RECEIVER: case USB_DEVICE_ID_RAZER_MAMBA_WIRELESS_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: report.transaction_id.id = 0x3f; break; case USB_DEVICE_ID_RAZER_LANCEHEAD_WIRELESS_RECEIVER: @@ -935,6 +955,8 @@ static ssize_t razer_attr_read_poll_rate(struct device *dev, struct device_attri case USB_DEVICE_ID_RAZER_MAMBA_WIRELESS_WIRED: case USB_DEVICE_ID_RAZER_BASILISK: case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: report.transaction_id.id = 0x3f; break; @@ -1000,6 +1022,8 @@ static ssize_t razer_attr_write_poll_rate(struct device *dev, struct device_attr case USB_DEVICE_ID_RAZER_MAMBA_WIRELESS_WIRED: case USB_DEVICE_ID_RAZER_BASILISK: case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: report.transaction_id.id = 0x3f; break; @@ -1224,6 +1248,8 @@ static ssize_t razer_attr_write_mouse_dpi(struct device *dev, struct device_attr case USB_DEVICE_ID_RAZER_MAMBA_WIRELESS_WIRED: case USB_DEVICE_ID_RAZER_BASILISK: case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: report.transaction_id.id = 0x3f; break; @@ -1308,6 +1334,8 @@ static ssize_t razer_attr_read_mouse_dpi(struct device *dev, struct device_attri case USB_DEVICE_ID_RAZER_MAMBA_WIRELESS_WIRED: case USB_DEVICE_ID_RAZER_BASILISK: case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: report = razer_chroma_misc_get_dpi_xy(NOSTORE); report.transaction_id.id = 0x3f; break; @@ -1609,6 +1637,8 @@ static ssize_t razer_attr_write_set_key_row(struct device *dev, struct device_at case USB_DEVICE_ID_RAZER_MAMBA_WIRELESS_WIRED: case USB_DEVICE_ID_RAZER_BASILISK: case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: case USB_DEVICE_ID_RAZER_VIPER: case USB_DEVICE_ID_RAZER_VIPER_MINI: case USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRED: @@ -1675,6 +1705,8 @@ static ssize_t razer_attr_write_device_mode(struct device *dev, struct device_at case USB_DEVICE_ID_RAZER_MAMBA_WIRELESS_WIRED: case USB_DEVICE_ID_RAZER_BASILISK: case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: report.transaction_id.id = 0x3f; break; } @@ -1715,6 +1747,8 @@ static ssize_t razer_attr_read_device_mode(struct device *dev, struct device_att case USB_DEVICE_ID_RAZER_LANCEHEAD_WIRELESS_WIRED: case USB_DEVICE_ID_RAZER_BASILISK: case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: case USB_DEVICE_ID_RAZER_MAMBA_WIRELESS_RECEIVER: case USB_DEVICE_ID_RAZER_MAMBA_WIRELESS_WIRED: report.transaction_id.id = 0x3f; @@ -1864,6 +1898,8 @@ static ssize_t razer_attr_read_logo_led_brightness(struct device *dev, struct de case USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRELESS: case USB_DEVICE_ID_RAZER_BASILISK: case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: report = razer_chroma_extended_matrix_get_brightness(VARSTORE, LOGO_LED); break; @@ -1916,6 +1952,8 @@ static ssize_t razer_attr_write_logo_led_brightness(struct device *dev, struct d case USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRELESS: case USB_DEVICE_ID_RAZER_BASILISK: case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: report = razer_chroma_extended_matrix_brightness(VARSTORE, LOGO_LED, brightness); break; @@ -2575,6 +2613,8 @@ static ssize_t razer_attr_write_scroll_mode_none(struct device *dev, struct devi case USB_DEVICE_ID_RAZER_MAMBA_WIRELESS_WIRED: case USB_DEVICE_ID_RAZER_BASILISK: case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: report = razer_chroma_extended_matrix_effect_none(VARSTORE, SCROLL_WHEEL_LED); break; @@ -2660,6 +2700,8 @@ static ssize_t razer_attr_write_logo_mode_spectrum(struct device *dev, struct de case USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRELESS: case USB_DEVICE_ID_RAZER_BASILISK: case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: report = razer_chroma_extended_matrix_effect_spectrum(VARSTORE, LOGO_LED); break; @@ -2713,6 +2755,8 @@ static ssize_t razer_attr_write_logo_mode_reactive(struct device *dev, struct de case USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRELESS: case USB_DEVICE_ID_RAZER_BASILISK: case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: report = razer_chroma_extended_matrix_effect_reactive(VARSTORE, LOGO_LED, speed, (struct razer_rgb*)&buf[1]); break; @@ -2783,6 +2827,8 @@ static ssize_t razer_attr_write_logo_mode_breath(struct device *dev, struct devi case USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRELESS: case USB_DEVICE_ID_RAZER_BASILISK: case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: switch(count) { case 3: // Single colour mode report = razer_chroma_extended_matrix_effect_breathing_single(VARSTORE, LOGO_LED, (struct razer_rgb*)&buf[0]); @@ -2849,6 +2895,8 @@ static ssize_t razer_attr_write_logo_mode_static(struct device *dev, struct devi case USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRELESS: case USB_DEVICE_ID_RAZER_BASILISK: case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: report = razer_chroma_extended_matrix_effect_static(VARSTORE, LOGO_LED, (struct razer_rgb*)&buf[0]); break; @@ -2905,6 +2953,8 @@ static ssize_t razer_attr_write_logo_mode_none(struct device *dev, struct device case USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRELESS: case USB_DEVICE_ID_RAZER_BASILISK: case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: report = razer_chroma_extended_matrix_effect_none(VARSTORE, LOGO_LED); break; @@ -3461,6 +3511,8 @@ static int razer_mouse_probe(struct hid_device *hdev, const struct hid_device_id switch(dev->usb_pid) { case USB_DEVICE_ID_RAZER_DEATHADDER_V2: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: expected_subclass = 0x01; break; } @@ -3859,10 +3911,12 @@ static int razer_mouse_probe(struct hid_device *hdev, const struct hid_device_id break; case USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRELESS: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_charge_effect); CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_charge_colour); /* fall through */ case USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_charge_level); CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_charge_status); CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_charge_low_threshold); @@ -4304,10 +4358,12 @@ static void razer_mouse_disconnect(struct hid_device *hdev) break; case USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRELESS: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS: device_remove_file(&hdev->dev, &dev_attr_charge_effect); device_remove_file(&hdev->dev, &dev_attr_charge_colour); /* fall through */ case USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRED: + case USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED: device_remove_file(&hdev->dev, &dev_attr_charge_level); device_remove_file(&hdev->dev, &dev_attr_charge_status); device_remove_file(&hdev->dev, &dev_attr_charge_low_threshold); @@ -4399,6 +4455,8 @@ static const struct hid_device_id razer_devices[] = { { HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRELESS) }, { HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_BASILISK) }, { HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_DEATHADDER_V2) }, + { HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED) }, + { HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS) }, { HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_DEATHADDER_2000) }, { HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_ATHERIS_RECEIVER) }, { HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_BASILISK_X_HYPERSPEED) }, diff --git a/driver/razermouse_driver.h b/driver/razermouse_driver.h index f30de4ba..640039c4 100644 --- a/driver/razermouse_driver.h +++ b/driver/razermouse_driver.h @@ -59,6 +59,8 @@ #define USB_DEVICE_ID_RAZER_VIPER 0x0078 #define USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRED 0x007A #define USB_DEVICE_ID_RAZER_VIPER_ULTIMATE_WIRELESS 0x007B +#define USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRED 0x007C +#define USB_DEVICE_ID_RAZER_DEATHADDER_V2_PRO_WIRELESS 0x007D #define USB_DEVICE_ID_RAZER_BASILISK_X_HYPERSPEED 0x0083 #define USB_DEVICE_ID_RAZER_DEATHADDER_V2 0x0084 #define USB_DEVICE_ID_RAZER_VIPER_MINI 0x008A diff --git a/install_files/appstream/io.github.openrazer.openrazer.metainfo.xml b/install_files/appstream/io.github.openrazer.openrazer.metainfo.xml index 9eff7549..2c54b3d4 100644 --- a/install_files/appstream/io.github.openrazer.openrazer.metainfo.xml +++ b/install_files/appstream/io.github.openrazer.openrazer.metainfo.xml @@ -63,6 +63,8 @@ <modalias>usb:v1532p0078d*</modalias> <modalias>usb:v1532p007Ad*</modalias> <modalias>usb:v1532p007Bd*</modalias> + <modalias>usb:v1532p007Cd*</modalias> + <modalias>usb:v1532p007Dd*</modalias> <modalias>usb:v1532p0083d*</modalias> <modalias>usb:v1532p0084d*</modalias> <modalias>usb:v1532p008Ad*</modalias> diff --git a/install_files/udev/99-razer.rules b/install_files/udev/99-razer.rules index eb8e44fb..9a13932b 100644 --- a/install_files/udev/99-razer.rules +++ b/install_files/udev/99-razer.rules @@ -5,7 +5,7 @@ GOTO="razer_end" LABEL="razer_vendor" # Mice -ATTRS{idProduct}=="0013|0016|0020|0024|0025|002e|002f|0032|0034|0036|0037|0038|0039|0040|0041|0042|0043|0044|0045|0046|0048|004c|004f|0050|0053|0054|0059|005a|005b|005c|005e|0060|0062|0064|0067|006a|006b|006c|006e|006f|0070|0071|0072|0073|0078|007a|007b|0083|0084|008a", \ +ATTRS{idProduct}=="0013|0016|0020|0024|0025|002e|002f|0032|0034|0036|0037|0038|0039|0040|0041|0042|0043|0044|0045|0046|0048|004c|004f|0050|0053|0054|0059|005a|005b|005c|005e|0060|0062|0064|0067|006a|006b|006c|006e|006f|0070|0071|0072|0073|0078|007a|007b|007c|007d|0083|0084|008a", \ ATTRS{idVendor}=="1532", \ ENV{ID_RAZER_CHROMA}="1", ENV{RAZER_DRIVER}="razermouse" diff --git a/pylib/openrazer/_fake_driver/razerdeathadderv2prowired.cfg b/pylib/openrazer/_fake_driver/razerdeathadderv2prowired.cfg new file mode 100644 index 00000000..0ed0e07a --- /dev/null +++ b/pylib/openrazer/_fake_driver/razerdeathadderv2prowired.cfg @@ -0,0 +1,21 @@ +[device] +dir_name = 0003:1532:007C.0001 +name = Razer DeathAdder V2 Pro (Wired) +files = r,charge_level,255 + rw,charge_low_threshold,38 + r,charge_status,1 + rw,device_idle_time,600 + r,device_serial,XX000000007C + r,device_type,%(name)s + rw,dpi,800:800 + r,firmware_version,v1.0 + rw,logo_led_brightness,0 + w,logo_matrix_effect_breath + w,logo_matrix_effect_none + w,logo_matrix_effect_reactive + w,logo_matrix_effect_spectrum + w,logo_matrix_effect_static + w,matrix_custom_frame + w,matrix_effect_custom + rw,poll_rate,500 + r,version,1.0.0 diff --git a/pylib/openrazer/_fake_driver/razerdeathadderv2prowireless.cfg b/pylib/openrazer/_fake_driver/razerdeathadderv2prowireless.cfg new file mode 100644 index 00000000..340c7c12 --- /dev/null +++ b/pylib/openrazer/_fake_driver/razerdeathadderv2prowireless.cfg @@ -0,0 +1,23 @@ +[device] +dir_name = 0003:1532:007D.0001 +name = Razer DeathAdder V2 Pro (Wireless) +files = w,charge_colour + w,charge_effect + r,charge_level,255 + rw,charge_low_threshold,38 + r,charge_status,1 + rw,device_idle_time,600 + r,device_serial,XX000000007D + r,device_type,%(name)s + rw,dpi,800:800 + r,firmware_version,v1.0 + rw,logo_led_brightness,0 + w,logo_matrix_effect_breath + w,logo_matrix_effect_none + w,logo_matrix_effect_reactive + w,logo_matrix_effect_spectrum + w,logo_matrix_effect_static + w,matrix_custom_frame + w,matrix_effect_custom + rw,poll_rate,500 + r,version,1.0.0 -- GitLab