From e5707574955a9b5512b76937c842b0bbc1e4f578 Mon Sep 17 00:00:00 2001 From: Marcus Weinhold - umwerk systems GmbH <marcus.weinhold@umwerk-systems.com> Date: Sun, 13 Dec 2020 16:36:38 +0100 Subject: [PATCH] Add support for Razer Blade Stealth Late 2020 Signed-off-by: Marcus Weinhold - umwerk systems GmbH <marcus.weinhold@umwerk-systems.com> --- README.md | 1 + daemon/openrazer_daemon/hardware/keyboards.py | 14 ++++++++++++++ driver/razerkbd_driver.c | 9 +++++++++ driver/razerkbd_driver.h | 1 + .../io.github.openrazer.openrazer.metainfo.xml | 1 + install_files/udev/99-razer.rules | 2 +- .../_fake_driver/razerbladestealthlate2020.cfg | 14 ++++++++++++++ 7 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 pylib/openrazer/_fake_driver/razerbladestealthlate2020.cfg diff --git a/README.md b/README.md index 97b59e0b..031d2ad6 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,7 @@ The devices below are fully feature supported by OpenRazer, which means all avai | Razer Blade Stealth (Early 2020) | 1532:0252 | | Razer Blade 15 Advanced (2020) | 1532:0253 | | Razer Blade 15 (Early 2020) Base | 1532:0255 | +| Razer Blade Stealth (Late 2020) | 1532:0259 | | Razer Cynosa V2 | 1532:025E | ### Mice diff --git a/daemon/openrazer_daemon/hardware/keyboards.py b/daemon/openrazer_daemon/hardware/keyboards.py index 0de4b604..c9a88ea5 100644 --- a/daemon/openrazer_daemon/hardware/keyboards.py +++ b/daemon/openrazer_daemon/hardware/keyboards.py @@ -1060,6 +1060,20 @@ class RazerBladeStealthEarly2020(_RippleKeyboard): DEVICE_IMAGE = "https://assets2.razerzone.com/images/blade-stealth-13/shop/sl25p-fhd-4.jpg" +class RazerBladeStealthLate2020(_RippleKeyboard): + """ + Class for the Razer Blade Stealth (Late 2020) + """ + EVENT_FILE_REGEX = re.compile(r'.*Razer_Blade_Stealth(-if01)?-event-kbd') + + USB_VID = 0x1532 + USB_PID = 0x0259 + METHODS = ['get_device_type_keyboard', 'set_static_effect', 'set_spectrum_effect', + 'set_none_effect', 'set_breath_random_effect', 'set_breath_single_effect'] + + DEVICE_IMAGE = "https://assets2.razerzone.com/images/blade-stealth-13/shop/sl25p-fhd-4.jpg" + + class RazerBlade2019Adv(_RippleKeyboard): """ Class for the Razer Blade 15 (2019) Advanced diff --git a/driver/razerkbd_driver.c b/driver/razerkbd_driver.c index ca50c46c..0e1929f5 100644 --- a/driver/razerkbd_driver.c +++ b/driver/razerkbd_driver.c @@ -133,6 +133,7 @@ static bool is_blade_laptop(struct usb_device *usb_dev) case USB_DEVICE_ID_RAZER_BLADE_PRO_2019: case USB_DEVICE_ID_RAZER_BLADE_PRO_LATE_2019: case USB_DEVICE_ID_RAZER_BLADE_STEALTH_EARLY_2020: + case USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2020: case USB_DEVICE_ID_RAZER_BLADE_15_ADV_2020: case USB_DEVICE_ID_RAZER_BLADE_EARLY_2020_BASE: return true; @@ -381,6 +382,10 @@ static ssize_t razer_attr_read_device_type(struct device *dev, struct device_att device_type = "Razer Blade Stealth (Early 2020)\n"; break; + case USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2020: + device_type = "Razer Blade Stealth (Late 2020)\n"; + break; + case USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2016: device_type = "Razer Blade Stealth (Late 2016)\n"; break; @@ -1111,6 +1116,7 @@ static ssize_t razer_attr_write_mode_static(struct device *dev, struct device_at case USB_DEVICE_ID_RAZER_BLADE_STEALTH_2019: case USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2019: case USB_DEVICE_ID_RAZER_BLADE_STEALTH_EARLY_2020: + case USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2020: case USB_DEVICE_ID_RAZER_BLADE_QHD: case USB_DEVICE_ID_RAZER_BLADE_PRO_LATE_2016: case USB_DEVICE_ID_RAZER_BLADE_2018: @@ -2318,6 +2324,7 @@ static int razer_kbd_probe(struct hid_device *hdev, const struct hid_device_id * case USB_DEVICE_ID_RAZER_BLADE_STEALTH_2019: case USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2019: case USB_DEVICE_ID_RAZER_BLADE_STEALTH_EARLY_2020: + case USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2020: case USB_DEVICE_ID_RAZER_BLADE_2019_BASE: case USB_DEVICE_ID_RAZER_BLADE_EARLY_2020_BASE: CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_matrix_effect_none); // No effect @@ -2636,6 +2643,7 @@ static void razer_kbd_disconnect(struct hid_device *hdev) case USB_DEVICE_ID_RAZER_BLADE_STEALTH_2019: case USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2019: case USB_DEVICE_ID_RAZER_BLADE_STEALTH_EARLY_2020: + case USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2020: case USB_DEVICE_ID_RAZER_BLADE_2019_BASE: case USB_DEVICE_ID_RAZER_BLADE_EARLY_2020_BASE: device_remove_file(&hdev->dev, &dev_attr_matrix_effect_none); // No effect @@ -2879,6 +2887,7 @@ static const struct hid_device_id razer_devices[] = { { HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_BLADE_STEALTH_2019) }, { HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2019) }, { HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_BLADE_STEALTH_EARLY_2020) }, + { HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2020) }, { HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_BLADE_EARLY_2020_BASE) }, { 0 } }; diff --git a/driver/razerkbd_driver.h b/driver/razerkbd_driver.h index 3e92a400..335abdb9 100644 --- a/driver/razerkbd_driver.h +++ b/driver/razerkbd_driver.h @@ -69,6 +69,7 @@ #define USB_DEVICE_ID_RAZER_BLADE_STEALTH_EARLY_2020 0x0252 #define USB_DEVICE_ID_RAZER_BLADE_15_ADV_2020 0x0253 #define USB_DEVICE_ID_RAZER_BLADE_EARLY_2020_BASE 0x0255 +#define USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2020 0x0259 #define USB_DEVICE_ID_RAZER_CYNOSA_V2 0x025E /* Each keyboard report has 90 bytes*/ diff --git a/install_files/appstream/io.github.openrazer.openrazer.metainfo.xml b/install_files/appstream/io.github.openrazer.openrazer.metainfo.xml index 425f3c7b..9eff7549 100644 --- a/install_files/appstream/io.github.openrazer.openrazer.metainfo.xml +++ b/install_files/appstream/io.github.openrazer.openrazer.metainfo.xml @@ -122,6 +122,7 @@ <modalias>usb:v1532p0252d*</modalias> <modalias>usb:v1532p0253d*</modalias> <modalias>usb:v1532p0255d*</modalias> + <modalias>usb:v1532p0259d*</modalias> <modalias>usb:v1532p025Ed*</modalias> <modalias>usb:v1532p0501d*</modalias> <modalias>usb:v1532p0504d*</modalias> diff --git a/install_files/udev/99-razer.rules b/install_files/udev/99-razer.rules index fa50b9d9..eb8e44fb 100644 --- a/install_files/udev/99-razer.rules +++ b/install_files/udev/99-razer.rules @@ -10,7 +10,7 @@ ATTRS{idProduct}=="0013|0016|0020|0024|0025|002e|002f|0032|0034|0036|0037|0038|0 ENV{ID_RAZER_CHROMA}="1", ENV{RAZER_DRIVER}="razermouse" # Keyboards -ATTRS{idProduct}=="010d|010e|010f|0111|0113|011a|011b|0201|0202|0203|0204|0205|0207|0208|0209|020f|0210|0211|0214|0216|0217|021a|021e|021f|0220|0221|0224|0225|0226|0227|0228|022a|022b|022d|022f|0232|0233|0234|0235|0237|0239|023a|023b|023f|0240|0241|0243|0245|0246|024a|024c|024d|0252|0253|0255|025e", \ +ATTRS{idProduct}=="010d|010e|010f|0111|0113|011a|011b|0201|0202|0203|0204|0205|0207|0208|0209|020f|0210|0211|0214|0216|0217|021a|021e|021f|0220|0221|0224|0225|0226|0227|0228|022a|022b|022d|022f|0232|0233|0234|0235|0237|0239|023a|023b|023f|0240|0241|0243|0245|0246|024a|024c|024d|0252|0253|0255|0259|025e", \ ATTRS{idVendor}=="1532", \ ENV{ID_RAZER_CHROMA}="1", ENV{RAZER_DRIVER}="razerkbd" diff --git a/pylib/openrazer/_fake_driver/razerbladestealthlate2020.cfg b/pylib/openrazer/_fake_driver/razerbladestealthlate2020.cfg new file mode 100644 index 00000000..99ec68d1 --- /dev/null +++ b/pylib/openrazer/_fake_driver/razerbladestealthlate2020.cfg @@ -0,0 +1,14 @@ +[device] +dir_name = 0003:1532:0259.0001 +name = Razer Blade Stealth (Late 2020) +files = r,device_serial,XX0000000259 + r,device_type,%(name)s + r,firmware_version,v1.0 + r,kbd_layout,01 + rw,matrix_brightness,0 + w,matrix_effect_breath + w,matrix_effect_none + w,matrix_effect_reactive + w,matrix_effect_spectrum + w,matrix_effect_static + r,version,1.0.0 -- GitLab