From 5ac3d5f535a7fc4f7dd089695a173340a83c5983 Mon Sep 17 00:00:00 2001 From: Luke Horwell <code@horwell.me> Date: Fri, 23 Oct 2020 18:27:13 +0100 Subject: [PATCH] daemon: fix misconfigured matrix capabilities Devices were throwing an exception that was: - "embedded null byte" - or "setCustom is not a valid method of interface" This was due to devices missing a sysfs file in the driver. Or rather, they had one (matrix_effect_custom), but was incorrectly specified here. For devices that are missing a sysfs file, it's possible custom frames are unsupported or was simply left out in the driver when the device was added. Users of these devices should try amending their device in the driver, as we don't have the hardware to check. Fixes #1252 Addresses polychromatic/polychromatic#266 --- daemon/openrazer_daemon/hardware/keyboards.py | 13 +++---------- daemon/openrazer_daemon/hardware/mouse.py | 5 ++++- daemon/openrazer_daemon/hardware/mouse_mat.py | 7 +++---- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/daemon/openrazer_daemon/hardware/keyboards.py b/daemon/openrazer_daemon/hardware/keyboards.py index 663e1c71..a47a2431 100644 --- a/daemon/openrazer_daemon/hardware/keyboards.py +++ b/daemon/openrazer_daemon/hardware/keyboards.py @@ -744,13 +744,10 @@ class RazerBlackWidowLite(_RippleKeyboard): USB_VID = 0x1532 USB_PID = 0x0235 - HAS_MATRIX = True - MATRIX_DIMS = [6, 22] METHODS = ['get_device_type_keyboard', 'set_static_effect', 'set_none_effect', 'set_breath_single_effect', - 'set_key_row', 'get_game_mode', 'set_game_mode', 'get_macro_mode', 'set_macro_mode', - 'get_macro_effect', 'set_macro_effect', 'get_macros', 'delete_macro', 'add_macro', - ] + 'get_game_mode', 'set_game_mode', 'get_macro_mode', 'set_macro_mode', + 'get_macro_effect', 'set_macro_effect', 'get_macros', 'delete_macro', 'add_macro'] DEVICE_IMAGE = "https://assets.razerzone.com/eeimages/support/products/1456/1456_blackwidowlite_-_2.png" @@ -786,7 +783,7 @@ class RazerBlackWidowEssential(_RippleKeyboard): HAS_MATRIX = True MATRIX_DIMS = [6, 22] METHODS = ['get_device_type_keyboard', 'set_static_effect', 'set_none_effect', - 'set_breath_single_effect', 'set_key_row', 'get_game_mode', + 'set_breath_single_effect', 'set_key_row', 'set_custom_effect', 'get_game_mode', 'set_game_mode', 'get_macro_mode', 'set_macro_mode', 'get_macro_effect', 'set_macro_effect', 'get_macros', 'delete_macro', 'add_macro'] @@ -1002,8 +999,6 @@ class RazerBlade2018Base(_RippleKeyboard): USB_VID = 0x1532 USB_PID = 0x023B - HAS_MATRIX = True - MATRIX_DIMS = [6, 16] METHODS = ['get_device_type_keyboard', 'set_static_effect', 'set_spectrum_effect', 'set_none_effect', 'set_breath_random_effect', 'set_breath_single_effect'] @@ -1018,8 +1013,6 @@ class RazerBladeStealth2019(_RippleKeyboard): USB_VID = 0x1532 USB_PID = 0x0239 - HAS_MATRIX = True - MATRIX_DIMS = [6, 16] METHODS = ['get_device_type_keyboard', 'set_static_effect', 'set_spectrum_effect', 'set_none_effect', 'set_breath_random_effect', 'set_breath_single_effect'] diff --git a/daemon/openrazer_daemon/hardware/mouse.py b/daemon/openrazer_daemon/hardware/mouse.py index 9d9d8873..d6514e9c 100644 --- a/daemon/openrazer_daemon/hardware/mouse.py +++ b/daemon/openrazer_daemon/hardware/mouse.py @@ -941,7 +941,7 @@ class RazerNagaTrinity(__RazerDeviceSpecialBrightnessSuspend): USB_VID = 0x1532 USB_PID = 0x0067 - HAS_MATRIX = True + HAS_MATRIX = False # TODO Device supports matrix, driver missing DEDICATED_MACRO_KEYS = True MATRIX_DIMS = [1, 3] METHODS = ['get_device_type_mouse', 'get_dpi_xy', 'set_dpi_xy', 'get_poll_rate', 'set_poll_rate', @@ -1682,6 +1682,7 @@ class RazerViperUltimateWired(__RazerDeviceSpecialBrightnessSuspend): USB_VID = 0x1532 USB_PID = 0x007A + HAS_MATRIX = False # TODO device probably has matrix support 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', @@ -1752,6 +1753,8 @@ class RazerViper(__RazerDeviceSpecialBrightnessSuspend): USB_VID = 0x1532 USB_PID = 0x0078 + HAS_MATRIX = False # TODO Device should have matrix support + 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', # 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', diff --git a/daemon/openrazer_daemon/hardware/mouse_mat.py b/daemon/openrazer_daemon/hardware/mouse_mat.py index 1a0a9fe8..bebaa262 100644 --- a/daemon/openrazer_daemon/hardware/mouse_mat.py +++ b/daemon/openrazer_daemon/hardware/mouse_mat.py @@ -26,10 +26,9 @@ class RazerFireflyHyperflux(__RazerDeviceBrightnessSuspend): USB_VID = 0x1532 USB_PID = 0x0068 HAS_MATRIX = True - MATRIX_DIMS = [1, 1] - METHODS = ['get_device_type_mousemat', 'set_static_effect', 'set_spectrum_effect', - 'set_none_effect', 'set_breath_random_effect', 'set_breath_single_effect', 'set_breath_dual_effect', - 'set_key_row'] + MATRIX_DIMS = [1, 17] + METHODS = ['get_device_type_mousemat', 'set_static_effect', 'set_spectrum_effect', 'set_key_row', 'set_custom_effect', + 'set_none_effect', 'set_breath_random_effect', 'set_breath_single_effect', 'set_breath_dual_effect'] DEVICE_IMAGE = "https://assets.razerzone.com/eeimages/support/products/594/594_firefly_500x500.png" -- GitLab