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)