Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for Blade Pro 2016 keyboard #99

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Expand Up @@ -25,6 +25,7 @@ Website: [Here](https://terrycain.github.io/razer-drivers/)
| Razer BlackWidow Chroma | 1532:0203 | ✔ | ✔ |
| Razer Blade Stealth | 1532:0205 | ✔ | ✔ |
| Razer BlackWidow Tournament Edition Chroma | 1532:0209 | ✔ | ✔ |
| Razer Blade Pro (Late 2016) | 1532:0210 | ✔ | ✔ |
| Razer BlackWidow Ultimate 2016 | 1532:0214 | ✔ | ✔ |
| Razer BlackWidow X Chroma | 1532:0216 | ✔ | ✔ |
| Razer BlackWidow X Tournament Edition Chroma | 1532:021A | ✔ | ✔ |
Expand Down
32 changes: 31 additions & 1 deletion daemon/razer_daemon/hardware/keyboards.py
Expand Up @@ -273,6 +273,36 @@ def _close(self):
self.ripple_manager.close()


class RazerBladeProLate2016(_MacroKeyboard):
"""
Class for the BlackWidow Chroma
"""
EVENT_FILE_REGEX = re.compile(r'.*Razer_Blade_Pro(-if01)?-event-kbd')

USB_VID = 0x1532
USB_PID = 0x0210
HAS_MATRIX = True
DEDICATED_MACRO_KEYS = False
MATRIX_DIMS = [6, 22] # 6 Rows, 22 Cols
METHODS = ['get_firmware', 'get_matrix_dims', 'has_matrix', 'get_device_name', 'get_device_type_keyboard', 'get_brightness', 'set_brightness', 'set_wave_effect', 'set_static_effect', 'set_spectrum_effect',
'set_reactive_effect', 'set_none_effect', 'set_breath_random_effect', 'set_breath_single_effect', 'set_breath_dual_effect',
'set_custom_effect', 'set_key_row', 'set_starlight_random_effect',
'set_ripple_effect', 'set_ripple_effect_random_colour']

def __init__(self, *args, **kwargs):
super(RazerBladeProLate2016, self).__init__(*args, **kwargs)

self.ripple_manager = _RippleManager(self, self._device_number)

def _close(self):
"""
Close the key manager
"""
super(RazerBladeProLate2016, self)._close()

self.ripple_manager.close()


class RazerBlackWidow2016(_MacroKeyboard):
"""
Class for the BlackWidow Chroma
Expand Down Expand Up @@ -335,4 +365,4 @@ def _close(self):
"""
super(RazerOrnataChroma, self)._close()

self.ripple_manager.close()
self.ripple_manager.close()
30 changes: 27 additions & 3 deletions driver/razerkbd_driver.c
Expand Up @@ -275,6 +275,10 @@ static ssize_t razer_attr_read_device_type(struct device *dev, struct device_att
device_type = "Razer Blade Stealth (Late 2016)\n";
break;

case USB_DEVICE_ID_RAZER_BLADE_PRO_LATE_2016:
device_type = "Razer Blade Pro (Late 2016)\n";
break;

case USB_DEVICE_ID_RAZER_TARTARUS_CHROMA:
device_type = "Razer Tartarus Chroma\n";
break;
Expand Down Expand Up @@ -486,6 +490,7 @@ static ssize_t razer_attr_read_get_serial(struct device *dev, struct device_attr
{
case USB_DEVICE_ID_RAZER_BLADE_STEALTH:
case USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2016:
case USB_DEVICE_ID_RAZER_BLADE_PRO_LATE_2016:
strcpy(&serial_string[0], dmi_get_system_info(DMI_PRODUCT_SERIAL));
break;

Expand Down Expand Up @@ -660,6 +665,7 @@ static ssize_t razer_attr_write_mode_static(struct device *dev, struct device_at
case USB_DEVICE_ID_RAZER_BLACKWIDOW_ULTIMATE_2016:
case USB_DEVICE_ID_RAZER_BLADE_STEALTH:
case USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2016:
case USB_DEVICE_ID_RAZER_BLADE_PRO_LATE_2016:
case USB_DEVICE_ID_RAZER_TARTARUS_CHROMA:
if(count == 3)
{
Expand Down Expand Up @@ -888,6 +894,7 @@ static ssize_t razer_attr_write_set_brightness(struct device *dev, struct device
switch(usb_dev->descriptor.idProduct) {
case USB_DEVICE_ID_RAZER_BLADE_STEALTH:
case USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2016:
case USB_DEVICE_ID_RAZER_BLADE_PRO_LATE_2016:
report = razer_chroma_misc_set_blade_brightness(brightness);
break;

Expand Down Expand Up @@ -936,6 +943,7 @@ static ssize_t razer_attr_read_set_brightness(struct device *dev, struct device_
switch(usb_dev->descriptor.idProduct) {
case USB_DEVICE_ID_RAZER_BLADE_STEALTH:
case USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2016:
case USB_DEVICE_ID_RAZER_BLADE_PRO_LATE_2016:
report = razer_chroma_misc_get_blade_brightness();
break;

Expand All @@ -957,6 +965,7 @@ static ssize_t razer_attr_read_set_brightness(struct device *dev, struct device_
switch(usb_dev->descriptor.idProduct) {
case USB_DEVICE_ID_RAZER_BLADE_STEALTH:
case USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2016:
case USB_DEVICE_ID_RAZER_BLADE_PRO_LATE_2016:
brightness = response.arguments[1];
break;

Expand Down Expand Up @@ -1061,7 +1070,8 @@ static ssize_t razer_attr_write_matrix_custom_frame(struct device *dev, struct d
case USB_DEVICE_ID_RAZER_BLACKWIDOW_ULTIMATE_2016:
case USB_DEVICE_ID_RAZER_BLADE_STEALTH:
case USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2016:
report.transaction_id.id = 0x80; // Fall into the 2016/blade/blade2016 to set device id
case USB_DEVICE_ID_RAZER_BLADE_PRO_LATE_2016:
report.transaction_id.id = 0x80; // Fall into the 2016/blade/blade2016 to set device id
default:
report = razer_chroma_standard_matrix_set_custom_frame(row_id, start_col, stop_col, (unsigned char*)&buf[offset]);
break;
Expand Down Expand Up @@ -1308,8 +1318,20 @@ static int razer_kbd_probe(struct hid_device *hdev, const struct hid_device_id *
CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_logo_led_state); // Enable/Disable the logo
CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_fn_toggle); // Sets wether FN is requires for F-Keys
break;



case USB_DEVICE_ID_RAZER_BLADE_PRO_LATE_2016:
CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_matrix_effect_wave); // Wave effect
CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_matrix_effect_starlight); // Starlight effect
CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_matrix_effect_spectrum); // Spectrum effect
CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_matrix_effect_none); // No effect
CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_matrix_effect_reactive); // Reactive effect
CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_matrix_effect_breath); // Breathing effect
CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_matrix_effect_static); // Static effect
CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_matrix_effect_custom); // Custom effect
CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_matrix_custom_frame); // Set LED matrix
CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_logo_led_state); // Enable/Disable the logo
break;

case USB_DEVICE_ID_RAZER_TARTARUS_CHROMA:
CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_matrix_effect_spectrum); // Spectrum effect
CREATE_DEVICE_FILE(&hdev->dev, &dev_attr_matrix_effect_static); // Static effect
Expand Down Expand Up @@ -1432,6 +1454,7 @@ static void razer_kbd_disconnect(struct hid_device *hdev)

case USB_DEVICE_ID_RAZER_BLADE_STEALTH:
case USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2016:
case USB_DEVICE_ID_RAZER_BLADE_PRO_LATE_2016:
device_remove_file(&hdev->dev, &dev_attr_matrix_effect_wave); // Wave effect
device_remove_file(&hdev->dev, &dev_attr_matrix_effect_spectrum); // Spectrum effect
device_remove_file(&hdev->dev, &dev_attr_matrix_effect_none); // No effect
Expand Down Expand Up @@ -1501,6 +1524,7 @@ static const struct hid_device_id razer_devices[] = {
{ HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_BLACKWIDOW_ULTIMATE_2016) },
{ HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_BLADE_STEALTH) },
{ HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_BLADE_STEALTH_LATE_2016) },
{ HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_BLADE_PRO_LATE_2016) },
{ HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_TARTARUS_CHROMA) },
{ HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_BLACKWIDOW_CHROMA) },
{ HID_USB_DEVICE(USB_VENDOR_ID_RAZER,USB_DEVICE_ID_RAZER_BLACKWIDOW_CHROMA_TE) },
Expand Down
4 changes: 4 additions & 0 deletions driver/razerkbd_driver.h
Expand Up @@ -46,6 +46,10 @@
#define USB_DEVICE_ID_RAZER_BLACKWIDOW_CHROMA_TE 0x0209
#endif

#ifndef USB_DEVICE_ID_RAZER_BLADE_PRO_LATE_2016
#define USB_DEVICE_ID_RAZER_BLADE_PRO_LATE_2016 0x0210
#endif

#ifndef USB_DEVICE_ID_RAZER_BLACKWIDOW_ULTIMATE_2016
#define USB_DEVICE_ID_RAZER_BLACKWIDOW_ULTIMATE_2016 0x0214
#endif
Expand Down
1 change: 1 addition & 0 deletions install_files/udev/99-razer.rules
Expand Up @@ -6,6 +6,7 @@ KERNEL=="????:????:????.????", DRIVERS=="usb", SUBSYSTEMS=="usb", ATTRS{idVendor
KERNEL=="????:????:????.????", DRIVERS=="usb", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="0205", ENV{is_razer_kbd}="yes"
KERNEL=="????:????:????.????", DRIVERS=="usb", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="0208", ENV{is_razer_kbd}="yes"
KERNEL=="????:????:????.????", DRIVERS=="usb", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="0209", ENV{is_razer_kbd}="yes"
KERNEL=="????:????:????.????", DRIVERS=="usb", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="0210", ENV{is_razer_kbd}="yes"
KERNEL=="????:????:????.????", DRIVERS=="usb", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="0214", ENV{is_razer_kbd}="yes"
KERNEL=="????:????:????.????", DRIVERS=="usb", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="0216", ENV{is_razer_kbd}="yes"
KERNEL=="????:????:????.????", DRIVERS=="usb", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="021a", ENV{is_razer_kbd}="yes"
Expand Down