From ed12bcc37f6a231236b5fb8a9d7f9efdd7eae937 Mon Sep 17 00:00:00 2001 From: awkure Date: Sun, 22 Mar 2026 09:52:07 +0300 Subject: [PATCH] fix: add mx_master_4 device for auto detect --- core/logi_devices.py | 12 ++++++++++++ tests/test_logi_devices.py | 13 +++++++++++++ 2 files changed, 25 insertions(+) diff --git a/core/logi_devices.py b/core/logi_devices.py index 18ca4cc..10f668a 100644 --- a/core/logi_devices.py +++ b/core/logi_devices.py @@ -71,6 +71,18 @@ class ConnectedDeviceInfo: # Seeded from Mouser's existing support plus upstream identifiers seen in # Solaar/logiops for the major MX-family mice we want to grow into first. KNOWN_LOGI_DEVICES = ( + LogiDeviceSpec( + key="mx_master_4", + display_name="MX Master 4", + product_ids=(0xB042,), + aliases=( + "Logitech MX Master 4", + "MX Master 4 for Mac", + "MX_Master_4", + "MX Master 4 for Business", + ), + ui_layout="mx_master", + ), LogiDeviceSpec( key="mx_master_3s", display_name="MX Master 3S", diff --git a/tests/test_logi_devices.py b/tests/test_logi_devices.py index 200bbd4..1c35287 100644 --- a/tests/test_logi_devices.py +++ b/tests/test_logi_devices.py @@ -9,6 +9,19 @@ class LogiDeviceRegistryTests(unittest.TestCase): + def test_resolve_mx_master_4_by_product_id(self): + device = resolve_device(product_id=0xB042) + + self.assertIsNotNone(device) + self.assertEqual(device.key, "mx_master_4") + self.assertEqual(device.ui_layout, "mx_master") + + def test_resolve_mx_master_4_by_hid_product_string(self): + device = resolve_device(product_name="MX_Master_4") + + self.assertIsNotNone(device) + self.assertEqual(device.key, "mx_master_4") + def test_resolve_device_by_product_id(self): device = resolve_device(product_id=0xB034)