Clarify that fake hidpp is used
This module shouldn't be necessary on the long run. Remove pieces from it whenever possible.
This commit is contained in:
parent
3c1aa35067
commit
741c0861c2
|
@ -25,7 +25,7 @@ from logitech_receiver import common
|
|||
from logitech_receiver import device
|
||||
from logitech_receiver import hidpp20
|
||||
|
||||
from . import hidpp
|
||||
from . import fake_hidpp
|
||||
|
||||
|
||||
class LowLevelInterfaceFake:
|
||||
|
@ -33,14 +33,14 @@ class LowLevelInterfaceFake:
|
|||
self.responses = responses
|
||||
|
||||
def open_path(self, path):
|
||||
return hidpp.open_path(path)
|
||||
return fake_hidpp.open_path(path)
|
||||
|
||||
def request(self, response, *args, **kwargs):
|
||||
func = partial(hidpp.request, self.responses)
|
||||
func = partial(fake_hidpp.request, self.responses)
|
||||
return func(response, *args, **kwargs)
|
||||
|
||||
def ping(self, response, *args, **kwargs):
|
||||
func = partial(hidpp.ping, self.responses)
|
||||
func = partial(fake_hidpp.ping, self.responses)
|
||||
return func(response, *args, **kwargs)
|
||||
|
||||
def close(self, *args, **kwargs):
|
||||
|
@ -70,7 +70,11 @@ di_DDDD = DeviceInfoStub("11", product_id="DDDD")
|
|||
|
||||
@pytest.mark.parametrize(
|
||||
"device_info, responses, expected_success",
|
||||
[(di_bad_handle, hidpp.r_empty, None), (di_error, hidpp.r_empty, False), (di_CCCC, hidpp.r_empty, True)],
|
||||
[
|
||||
(di_bad_handle, fake_hidpp.r_empty, None),
|
||||
(di_error, fake_hidpp.r_empty, False),
|
||||
(di_CCCC, fake_hidpp.r_empty, True),
|
||||
],
|
||||
)
|
||||
def test_create_device(device_info, responses, expected_success):
|
||||
low_level_mock = LowLevelInterfaceFake(responses)
|
||||
|
@ -87,7 +91,7 @@ def test_create_device(device_info, responses, expected_success):
|
|||
|
||||
@pytest.mark.parametrize(
|
||||
"device_info, responses, expected_codename, expected_name, expected_kind",
|
||||
[(di_CCCC, hidpp.r_empty, "?? (CCCC)", "Unknown device CCCC", "?")],
|
||||
[(di_CCCC, fake_hidpp.r_empty, "?? (CCCC)", "Unknown device CCCC", "?")],
|
||||
)
|
||||
def test_device_name(device_info, responses, expected_codename, expected_name, expected_kind):
|
||||
low_level = LowLevelInterfaceFake(responses)
|
||||
|
@ -103,7 +107,14 @@ def test_device_name(device_info, responses, expected_codename, expected_name, e
|
|||
"device_info, responses, handle, _name, _codename, number, protocol, registers",
|
||||
zip(
|
||||
[di_CCCC, di_C318, di_B530, di_C068, di_C08A, di_DDDD],
|
||||
[hidpp.r_empty, hidpp.r_keyboard_1, hidpp.r_keyboard_2, hidpp.r_mouse_1, hidpp.r_mouse_2, hidpp.r_mouse_3],
|
||||
[
|
||||
fake_hidpp.r_empty,
|
||||
fake_hidpp.r_keyboard_1,
|
||||
fake_hidpp.r_keyboard_2,
|
||||
fake_hidpp.r_mouse_1,
|
||||
fake_hidpp.r_mouse_2,
|
||||
fake_hidpp.r_mouse_3,
|
||||
],
|
||||
[0x11, 0x11, 0x11, 0x11, 0x11, 0x11],
|
||||
[None, "Illuminated Keyboard", "Craft Advanced Keyboard", "G700 Gaming Mouse", "MX Vertical Wireless Mouse", None],
|
||||
[None, "Illuminated", "Craft", "G700", "MX Vertical", None],
|
||||
|
@ -160,7 +171,14 @@ pi_DDDD = {"wpid": "DDDD", "kind": 2, "serial": "1234", "polling": "2ms", "power
|
|||
zip(
|
||||
range(1, 7),
|
||||
[pi_CCCC, pi_2011, pi_4066, pi_1007, pi_407B, pi_DDDD],
|
||||
[hidpp.r_empty, hidpp.r_keyboard_1, hidpp.r_keyboard_2, hidpp.r_mouse_1, hidpp.r_mouse_2, hidpp.r_mouse_3],
|
||||
[
|
||||
fake_hidpp.r_empty,
|
||||
fake_hidpp.r_keyboard_1,
|
||||
fake_hidpp.r_keyboard_2,
|
||||
fake_hidpp.r_mouse_1,
|
||||
fake_hidpp.r_mouse_2,
|
||||
fake_hidpp.r_mouse_3,
|
||||
],
|
||||
[0x11, 0x11, 0x11, 0x11, 0x11, 0x11],
|
||||
[None, "Wireless Keyboard K520", "Craft Advanced Keyboard", "MX Air", "MX Vertical Wireless Mouse", None],
|
||||
["CODE", "K520", "Craft", "MX Air", "MX Vertical", "CODE"],
|
||||
|
@ -180,8 +198,8 @@ def test_device_receiver(number, pairing_info, responses, handle, _name, codenam
|
|||
mock_hid.side_effect = lambda x, y, z: x
|
||||
|
||||
low_level = LowLevelInterfaceFake(responses)
|
||||
low_level.request = partial(hidpp.request, hidpp.replace_number(responses, number))
|
||||
low_level.ping = partial(hidpp.ping, hidpp.replace_number(responses, number))
|
||||
low_level.request = partial(fake_hidpp.request, fake_hidpp.replace_number(responses, number))
|
||||
low_level.ping = partial(fake_hidpp.ping, fake_hidpp.replace_number(responses, number))
|
||||
|
||||
test_device = device.Device(low_level, FakeReceiver(codename="CODE"), number, True, pairing_info, handle=handle)
|
||||
test_device.receiver.device = test_device
|
||||
|
@ -207,7 +225,14 @@ def test_device_receiver(number, pairing_info, responses, handle, _name, codenam
|
|||
zip(
|
||||
range(1, 7),
|
||||
[pi_CCCC, pi_2011, pi_4066, pi_1007, pi_407B, pi_DDDD],
|
||||
[hidpp.r_empty, hidpp.r_keyboard_1, hidpp.r_keyboard_2, hidpp.r_mouse_1, hidpp.r_mouse_2, hidpp.r_mouse_3],
|
||||
[
|
||||
fake_hidpp.r_empty,
|
||||
fake_hidpp.r_keyboard_1,
|
||||
fake_hidpp.r_keyboard_2,
|
||||
fake_hidpp.r_mouse_1,
|
||||
fake_hidpp.r_mouse_2,
|
||||
fake_hidpp.r_mouse_3,
|
||||
],
|
||||
[None, 0x11, 0x11, 0x11, 0x11, 0x11],
|
||||
[None, None, "12345678", None, None, "12345679"], # unitId
|
||||
[None, None, "1234567890AB", None, None, "123456780000"], # modelId
|
||||
|
@ -224,8 +249,8 @@ def test_device_ids(number, info, responses, handle, unitId, modelId, tid, kind,
|
|||
mock_hid.side_effect = lambda x, y, z: x
|
||||
|
||||
low_level = LowLevelInterfaceFake(responses)
|
||||
low_level.request = partial(hidpp.request, hidpp.replace_number(responses, number))
|
||||
low_level.ping = partial(hidpp.ping, hidpp.replace_number(responses, number))
|
||||
low_level.request = partial(fake_hidpp.request, fake_hidpp.replace_number(responses, number))
|
||||
low_level.ping = partial(fake_hidpp.ping, fake_hidpp.replace_number(responses, number))
|
||||
|
||||
test_device = device.Device(low_level, FakeReceiver(), number, True, info, handle=handle)
|
||||
|
||||
|
@ -244,19 +269,19 @@ class FakeDevice(device.Device): # a fully functional Device but its HID++ func
|
|||
self.responses = responses
|
||||
super().__init__(LowLevelInterfaceFake(responses), *args, **kwargs)
|
||||
|
||||
request = hidpp.Device.request
|
||||
ping = hidpp.Device.ping
|
||||
request = fake_hidpp.Device.request
|
||||
ping = fake_hidpp.Device.ping
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"device_info, responses, protocol, led, keys, remap, gestures, backlight, profiles",
|
||||
[
|
||||
(di_CCCC, hidpp.r_empty, 1.0, type(None), None, None, None, None, None),
|
||||
(di_C318, hidpp.r_empty, 1.0, type(None), None, None, None, None, None),
|
||||
(di_B530, hidpp.r_keyboard_1, 1.0, type(None), None, None, None, None, None),
|
||||
(di_B530, hidpp.r_keyboard_2, 2.0, type(None), 4, 0, 0, None, None),
|
||||
(di_B530, hidpp.complex_responses_1, 4.5, hidpp20.LEDEffectsInfo, 0, 0, 0, None, None),
|
||||
(di_B530, hidpp.complex_responses_2, 4.5, hidpp20.RGBEffectsInfo, 8, 3, 1, True, True),
|
||||
(di_CCCC, fake_hidpp.r_empty, 1.0, type(None), None, None, None, None, None),
|
||||
(di_C318, fake_hidpp.r_empty, 1.0, type(None), None, None, None, None, None),
|
||||
(di_B530, fake_hidpp.r_keyboard_1, 1.0, type(None), None, None, None, None, None),
|
||||
(di_B530, fake_hidpp.r_keyboard_2, 2.0, type(None), 4, 0, 0, None, None),
|
||||
(di_B530, fake_hidpp.complex_responses_1, 4.5, hidpp20.LEDEffectsInfo, 0, 0, 0, None, None),
|
||||
(di_B530, fake_hidpp.complex_responses_2, 4.5, hidpp20.RGBEffectsInfo, 8, 3, 1, True, True),
|
||||
],
|
||||
)
|
||||
def test_device_complex(device_info, responses, protocol, led, keys, remap, gestures, backlight, profiles, mocker):
|
||||
|
@ -289,12 +314,12 @@ def test_device_complex(device_info, responses, protocol, led, keys, remap, gest
|
|||
@pytest.mark.parametrize(
|
||||
"device_info, responses, protocol, p, persister, settings",
|
||||
[
|
||||
(di_CCCC, hidpp.r_empty, 1.0, None, None, 0),
|
||||
(di_C318, hidpp.r_empty, 1.0, {}, {}, 0),
|
||||
(di_C318, hidpp.r_keyboard_1, 1.0, {"n": "n"}, {"n": "n"}, 1),
|
||||
(di_B530, hidpp.r_keyboard_2, 4.5, {"m": "m"}, {"m": "m"}, 1),
|
||||
(di_C068, hidpp.r_mouse_1, 1.0, {"o": "o"}, {"o": "o"}, 2),
|
||||
(di_C08A, hidpp.r_mouse_2, 4.5, {"p": "p"}, {"p": "p"}, 0),
|
||||
(di_CCCC, fake_hidpp.r_empty, 1.0, None, None, 0),
|
||||
(di_C318, fake_hidpp.r_empty, 1.0, {}, {}, 0),
|
||||
(di_C318, fake_hidpp.r_keyboard_1, 1.0, {"n": "n"}, {"n": "n"}, 1),
|
||||
(di_B530, fake_hidpp.r_keyboard_2, 4.5, {"m": "m"}, {"m": "m"}, 1),
|
||||
(di_C068, fake_hidpp.r_mouse_1, 1.0, {"o": "o"}, {"o": "o"}, 2),
|
||||
(di_C08A, fake_hidpp.r_mouse_2, 4.5, {"p": "p"}, {"p": "p"}, 0),
|
||||
],
|
||||
)
|
||||
def test_device_settings(device_info, responses, protocol, p, persister, settings, mocker):
|
||||
|
@ -310,9 +335,21 @@ def test_device_settings(device_info, responses, protocol, p, persister, setting
|
|||
@pytest.mark.parametrize(
|
||||
"device_info, responses, protocol, battery, changed",
|
||||
[
|
||||
(di_C318, hidpp.r_empty, 1.0, None, {"active": True, "alert": 0, "reason": None}),
|
||||
(di_C318, hidpp.r_keyboard_1, 1.0, common.Battery(50, None, 0, None), {"active": True, "alert": 0, "reason": None}),
|
||||
(di_B530, hidpp.r_keyboard_2, 4.5, common.Battery(18, 52, None, None), {"active": True, "alert": 0, "reason": None}),
|
||||
(di_C318, fake_hidpp.r_empty, 1.0, None, {"active": True, "alert": 0, "reason": None}),
|
||||
(
|
||||
di_C318,
|
||||
fake_hidpp.r_keyboard_1,
|
||||
1.0,
|
||||
common.Battery(50, None, 0, None),
|
||||
{"active": True, "alert": 0, "reason": None},
|
||||
),
|
||||
(
|
||||
di_B530,
|
||||
fake_hidpp.r_keyboard_2,
|
||||
4.5,
|
||||
common.Battery(18, 52, None, None),
|
||||
{"active": True, "alert": 0, "reason": None},
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_device_battery(device_info, responses, protocol, battery, changed, mocker):
|
||||
|
|
|
@ -23,16 +23,18 @@ from logitech_receiver import hidpp20
|
|||
from logitech_receiver import hidpp20_constants
|
||||
from logitech_receiver import special_keys
|
||||
|
||||
from . import hidpp
|
||||
from . import fake_hidpp
|
||||
|
||||
_hidpp20 = hidpp20.Hidpp20()
|
||||
|
||||
device_offline = hidpp.Device("REGISTERS", False)
|
||||
device_registers = hidpp.Device("OFFLINE", True, 1.0)
|
||||
device_nofeatures = hidpp.Device("NOFEATURES", True, 4.5)
|
||||
device_zerofeatures = hidpp.Device("ZEROFEATURES", True, 4.5, [hidpp.Response("0000", 0x0000, "0001")])
|
||||
device_broken = hidpp.Device("BROKEN", True, 4.5, [hidpp.Response("0500", 0x0000, "0001"), hidpp.Response(None, 0x0100)])
|
||||
device_standard = hidpp.Device("STANDARD", True, 4.5, hidpp.r_keyboard_2)
|
||||
device_offline = fake_hidpp.Device("REGISTERS", False)
|
||||
device_registers = fake_hidpp.Device("OFFLINE", True, 1.0)
|
||||
device_nofeatures = fake_hidpp.Device("NOFEATURES", True, 4.5)
|
||||
device_zerofeatures = fake_hidpp.Device("ZEROFEATURES", True, 4.5, [fake_hidpp.Response("0000", 0x0000, "0001")])
|
||||
device_broken = fake_hidpp.Device(
|
||||
"BROKEN", True, 4.5, [fake_hidpp.Response("0500", 0x0000, "0001"), fake_hidpp.Response(None, 0x0100)]
|
||||
)
|
||||
device_standard = fake_hidpp.Device("STANDARD", True, 4.5, fake_hidpp.r_keyboard_2)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
|
@ -210,15 +212,15 @@ def test_ReprogrammableKeyV4_key(device, index, cid, tid, flags, pos, group, gma
|
|||
@pytest.mark.parametrize(
|
||||
"responses, index, mapped_to, remappable_to, mapping_flags",
|
||||
[
|
||||
(hidpp.responses_key, 1, "Right Click", common.UnsortedNamedInts(Right_Click=81, Left_Click=80), []),
|
||||
(hidpp.responses_key, 2, "Left Click", None, ["diverted"]),
|
||||
(hidpp.responses_key, 3, "Mouse Back Button", None, ["diverted", "persistently diverted"]),
|
||||
(hidpp.responses_key, 4, "Mouse Forward Button", None, ["diverted", "raw XY diverted"]),
|
||||
(fake_hidpp.responses_key, 1, "Right Click", common.UnsortedNamedInts(Right_Click=81, Left_Click=80), []),
|
||||
(fake_hidpp.responses_key, 2, "Left Click", None, ["diverted"]),
|
||||
(fake_hidpp.responses_key, 3, "Mouse Back Button", None, ["diverted", "persistently diverted"]),
|
||||
(fake_hidpp.responses_key, 4, "Mouse Forward Button", None, ["diverted", "raw XY diverted"]),
|
||||
],
|
||||
)
|
||||
# these fields need access all the key data, so start by setting up a device and its key data
|
||||
def test_ReprogrammableKeyV4_query(responses, index, mapped_to, remappable_to, mapping_flags):
|
||||
device = hidpp.Device("KEY", responses=responses, feature=hidpp20_constants.FEATURE.REPROG_CONTROLS_V4, offset=5)
|
||||
device = fake_hidpp.Device("KEY", responses=responses, feature=hidpp20_constants.FEATURE.REPROG_CONTROLS_V4, offset=5)
|
||||
device._keys = _hidpp20.get_keys(device)
|
||||
|
||||
key = device.keys[index]
|
||||
|
@ -231,15 +233,15 @@ def test_ReprogrammableKeyV4_query(responses, index, mapped_to, remappable_to, m
|
|||
@pytest.mark.parametrize(
|
||||
"responses, index, diverted, persistently_diverted, rawXY_reporting, remap, sets",
|
||||
[
|
||||
(hidpp.responses_key, 1, True, False, True, 0x52, ["0051080000"]),
|
||||
(hidpp.responses_key, 2, False, True, False, 0x51, ["0052020000", "0052200000", "0052000051"]),
|
||||
(hidpp.responses_key, 3, False, True, True, 0x50, ["0053020000", "00530C0000", "0053300000", "0053000050"]),
|
||||
(hidpp.responses_key, 4, False, False, False, 0x50, ["0056020000", "0056080000", "0056200000", "0056000050"]),
|
||||
(fake_hidpp.responses_key, 1, True, False, True, 0x52, ["0051080000"]),
|
||||
(fake_hidpp.responses_key, 2, False, True, False, 0x51, ["0052020000", "0052200000", "0052000051"]),
|
||||
(fake_hidpp.responses_key, 3, False, True, True, 0x50, ["0053020000", "00530C0000", "0053300000", "0053000050"]),
|
||||
(fake_hidpp.responses_key, 4, False, False, False, 0x50, ["0056020000", "0056080000", "0056200000", "0056000050"]),
|
||||
],
|
||||
)
|
||||
def test_ReprogrammableKeyV4_set(responses, index, diverted, persistently_diverted, rawXY_reporting, remap, sets, mocker):
|
||||
responses += [hidpp.Response(r, 0x530, r) for r in sets]
|
||||
device = hidpp.Device("KEY", responses=responses, feature=hidpp20_constants.FEATURE.REPROG_CONTROLS_V4, offset=5)
|
||||
responses += [fake_hidpp.Response(r, 0x530, r) for r in sets]
|
||||
device = fake_hidpp.Device("KEY", responses=responses, feature=hidpp20_constants.FEATURE.REPROG_CONTROLS_V4, offset=5)
|
||||
device._keys = _hidpp20.get_keys(device)
|
||||
device._keys._ensure_all_keys_queried() # do this now so that the last requests are sets
|
||||
spy_request = mocker.spy(device, "request")
|
||||
|
@ -275,23 +277,26 @@ def test_ReprogrammableKeyV4_set(responses, index, diverted, persistently_divert
|
|||
key.remap(remap)
|
||||
assert (key.mapped_to == remap) or (remap not in key.remappable_to and remap != 0)
|
||||
|
||||
hidpp.match_requests(len(sets), responses, spy_request.call_args_list)
|
||||
fake_hidpp.match_requests(len(sets), responses, spy_request.call_args_list)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"r, index, cid, actionId, remapped, mask, status, action, modifiers, byts, remap",
|
||||
[
|
||||
(hidpp.responses_key, 1, 0x0051, 0x02, 0x0002, 0x01, 0, "Mouse Button: 2", "Cntrl+", "02000201", "01000400"),
|
||||
(hidpp.responses_key, 2, 0x0052, 0x01, 0x0001, 0x00, 1, "Key: 1", "", "01000100", "02005004"),
|
||||
(hidpp.responses_key, 3, 0x0053, 0x02, 0x0001, 0x00, 1, "Mouse Button: 1", "", "02000100", "7FFFFFFF"),
|
||||
(fake_hidpp.responses_key, 1, 0x0051, 0x02, 0x0002, 0x01, 0, "Mouse Button: 2", "Cntrl+", "02000201", "01000400"),
|
||||
(fake_hidpp.responses_key, 2, 0x0052, 0x01, 0x0001, 0x00, 1, "Key: 1", "", "01000100", "02005004"),
|
||||
(fake_hidpp.responses_key, 3, 0x0053, 0x02, 0x0001, 0x00, 1, "Mouse Button: 1", "", "02000100", "7FFFFFFF"),
|
||||
],
|
||||
)
|
||||
def test_RemappableAction(r, index, cid, actionId, remapped, mask, status, action, modifiers, byts, remap, mocker):
|
||||
if int(remap, 16) == special_keys.KEYS_Default:
|
||||
responses = r + [hidpp.Response("040000", 0x0000, "1C00"), hidpp.Response("00", 0x450, f"{cid:04X}" + "FF")]
|
||||
responses = r + [fake_hidpp.Response("040000", 0x0000, "1C00"), fake_hidpp.Response("00", 0x450, f"{cid:04X}" + "FF")]
|
||||
else:
|
||||
responses = r + [hidpp.Response("040000", 0x0000, "1C00"), hidpp.Response("00", 0x440, f"{cid:04X}" + "FF" + remap)]
|
||||
device = hidpp.Device("KEY", responses=responses, feature=hidpp20_constants.FEATURE.REPROG_CONTROLS_V4, offset=5)
|
||||
responses = r + [
|
||||
fake_hidpp.Response("040000", 0x0000, "1C00"),
|
||||
fake_hidpp.Response("00", 0x440, f"{cid:04X}" + "FF" + remap),
|
||||
]
|
||||
device = fake_hidpp.Device("KEY", responses=responses, feature=hidpp20_constants.FEATURE.REPROG_CONTROLS_V4, offset=5)
|
||||
key = hidpp20.PersistentRemappableAction(device, index, cid, actionId, remapped, mask, status)
|
||||
spy_request = mocker.spy(device, "request")
|
||||
|
||||
|
@ -312,7 +317,7 @@ def test_RemappableAction(r, index, cid, actionId, remapped, mask, status, actio
|
|||
assert key.data_bytes.hex().upper() == (byts if int(remap, 16) == special_keys.KEYS_Default else remap)
|
||||
|
||||
if int(remap, 16) != special_keys.KEYS_Default:
|
||||
hidpp.match_requests(1, responses, spy_request.call_args_list)
|
||||
fake_hidpp.match_requests(1, responses, spy_request.call_args_list)
|
||||
|
||||
|
||||
# KeysArray methods tested in KeysArrayV4
|
||||
|
@ -378,7 +383,9 @@ def test_KeysArrayV4_index(key, index):
|
|||
assert result == index
|
||||
|
||||
|
||||
device_key = hidpp.Device("KEY", responses=hidpp.responses_key, feature=hidpp20_constants.FEATURE.REPROG_CONTROLS_V4, offset=5)
|
||||
device_key = fake_hidpp.Device(
|
||||
"KEY", responses=fake_hidpp.responses_key, feature=hidpp20_constants.FEATURE.REPROG_CONTROLS_V4, offset=5
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
|
@ -434,13 +441,13 @@ def test_KeysArrayPersistent_index_error(device, index):
|
|||
@pytest.mark.parametrize(
|
||||
"responses, key, index, mapped_to, capabilities",
|
||||
[
|
||||
(hidpp.responses_remap, special_keys.CONTROL.Left_Button, 0, common.NamedInt(0x01, "Mouse Button Left"), 0x41),
|
||||
(hidpp.responses_remap, special_keys.CONTROL.Right_Button, 1, common.NamedInt(0x01, "Mouse Button Left"), 0x41),
|
||||
(hidpp.responses_remap, special_keys.CONTROL.Middle_Button, 2, common.NamedInt(0x51, "DOWN"), 0x41),
|
||||
(fake_hidpp.responses_remap, special_keys.CONTROL.Left_Button, 0, common.NamedInt(0x01, "Mouse Button Left"), 0x41),
|
||||
(fake_hidpp.responses_remap, special_keys.CONTROL.Right_Button, 1, common.NamedInt(0x01, "Mouse Button Left"), 0x41),
|
||||
(fake_hidpp.responses_remap, special_keys.CONTROL.Middle_Button, 2, common.NamedInt(0x51, "DOWN"), 0x41),
|
||||
],
|
||||
)
|
||||
def test_KeysArrayPersistent_key(responses, key, index, mapped_to, capabilities):
|
||||
device = hidpp.Device("REMAP", responses=responses, feature=hidpp20_constants.FEATURE.PERSISTENT_REMAPPABLE_ACTION)
|
||||
device = fake_hidpp.Device("REMAP", responses=responses, feature=hidpp20_constants.FEATURE.PERSISTENT_REMAPPABLE_ACTION)
|
||||
device._remap_keys = _hidpp20.get_remap_keys(device)
|
||||
device._remap_keys._ensure_all_keys_queried()
|
||||
|
||||
|
@ -494,13 +501,13 @@ def test_Gesture(device, low, high, next_index, next_diversion_index, name, cbe,
|
|||
@pytest.mark.parametrize(
|
||||
"responses, gest, enabled, diverted, set_result, unset_result, divert_result, undivert_result",
|
||||
[
|
||||
(hidpp.responses_gestures, 20, None, None, None, None, None, None),
|
||||
(hidpp.responses_gestures, 1, True, False, "01", "00", "01", "00"),
|
||||
(hidpp.responses_gestures, 45, False, None, "01", "00", None, None),
|
||||
(fake_hidpp.responses_gestures, 20, None, None, None, None, None, None),
|
||||
(fake_hidpp.responses_gestures, 1, True, False, "01", "00", "01", "00"),
|
||||
(fake_hidpp.responses_gestures, 45, False, None, "01", "00", None, None),
|
||||
],
|
||||
)
|
||||
def test_Gesture_set(responses, gest, enabled, diverted, set_result, unset_result, divert_result, undivert_result):
|
||||
device = hidpp.Device("GESTURE", responses=responses, feature=hidpp20_constants.FEATURE.GESTURE_2)
|
||||
device = fake_hidpp.Device("GESTURE", responses=responses, feature=hidpp20_constants.FEATURE.GESTURE_2)
|
||||
gestures = _hidpp20.get_gestures(device)
|
||||
|
||||
gesture = gestures.gesture(gest)
|
||||
|
@ -516,11 +523,11 @@ def test_Gesture_set(responses, gest, enabled, diverted, set_result, unset_resul
|
|||
@pytest.mark.parametrize(
|
||||
"responses, prm, id, index, size, value, default_value, write1, write2",
|
||||
[
|
||||
(hidpp.responses_gestures, 4, common.NamedInt(4, "ScaleFactor"), 0, 2, 256, 256, "0080", "0180"),
|
||||
(fake_hidpp.responses_gestures, 4, common.NamedInt(4, "ScaleFactor"), 0, 2, 256, 256, "0080", "0180"),
|
||||
],
|
||||
)
|
||||
def test_Param(responses, prm, id, index, size, value, default_value, write1, write2):
|
||||
device = hidpp.Device("GESTURE", responses=responses, feature=hidpp20_constants.FEATURE.GESTURE_2)
|
||||
device = fake_hidpp.Device("GESTURE", responses=responses, feature=hidpp20_constants.FEATURE.GESTURE_2)
|
||||
gestures = _hidpp20.get_gestures(device)
|
||||
|
||||
param = gestures.param(prm)
|
||||
|
@ -539,13 +546,13 @@ def test_Param(responses, prm, id, index, size, value, default_value, write1, wr
|
|||
@pytest.mark.parametrize(
|
||||
"responses, id, s, byte_count, value, string",
|
||||
[
|
||||
(hidpp.responses_gestures, 1, "DVI field width", 1, 8, "[DVI field width=8]"),
|
||||
(hidpp.responses_gestures, 2, "field widths", 1, 8, "[field widths=8]"),
|
||||
(hidpp.responses_gestures, 3, "period unit", 2, 2048, "[period unit=2048]"),
|
||||
(fake_hidpp.responses_gestures, 1, "DVI field width", 1, 8, "[DVI field width=8]"),
|
||||
(fake_hidpp.responses_gestures, 2, "field widths", 1, 8, "[field widths=8]"),
|
||||
(fake_hidpp.responses_gestures, 3, "period unit", 2, 2048, "[period unit=2048]"),
|
||||
],
|
||||
)
|
||||
def test_Spec(responses, id, s, byte_count, value, string):
|
||||
device = hidpp.Device("GESTURE", responses=responses, feature=hidpp20_constants.FEATURE.GESTURE_2)
|
||||
device = fake_hidpp.Device("GESTURE", responses=responses, feature=hidpp20_constants.FEATURE.GESTURE_2)
|
||||
gestures = _hidpp20.get_gestures(device)
|
||||
|
||||
spec = gestures.specs[id]
|
||||
|
@ -558,7 +565,9 @@ def test_Spec(responses, id, s, byte_count, value, string):
|
|||
|
||||
|
||||
def test_Gestures():
|
||||
device = hidpp.Device("GESTURES", responses=hidpp.responses_gestures, feature=hidpp20_constants.FEATURE.GESTURE_2)
|
||||
device = fake_hidpp.Device(
|
||||
"GESTURES", responses=fake_hidpp.responses_gestures, feature=hidpp20_constants.FEATURE.GESTURE_2
|
||||
)
|
||||
gestures = _hidpp20.get_gestures(device)
|
||||
|
||||
assert gestures
|
||||
|
@ -584,11 +593,11 @@ def test_Gestures():
|
|||
|
||||
|
||||
responses_backlight = [
|
||||
hidpp.Response("010118000001020003000400", 0x0400),
|
||||
hidpp.Response("0101FF00020003000400", 0x0410, "0101FF00020003000400"),
|
||||
fake_hidpp.Response("010118000001020003000400", 0x0400),
|
||||
fake_hidpp.Response("0101FF00020003000400", 0x0410, "0101FF00020003000400"),
|
||||
]
|
||||
|
||||
device_backlight = hidpp.Device("BACKLIGHT", responses=responses_backlight, feature=hidpp20_constants.FEATURE.BACKLIGHT2)
|
||||
device_backlight = fake_hidpp.Device("BACKLIGHT", responses=responses_backlight, feature=hidpp20_constants.FEATURE.BACKLIGHT2)
|
||||
|
||||
|
||||
def test_Backlight():
|
||||
|
@ -642,12 +651,26 @@ def test_LEDEffectSetting(hex, ID, color, speed, period, intensity, ramp, form):
|
|||
@pytest.mark.parametrize(
|
||||
"feature, function, response, ID, capabilities, period",
|
||||
[
|
||||
[hidpp20_constants.FEATURE.COLOR_LED_EFFECTS, 0x20, hidpp.Response("0102000300040005", 0x0420, "010200"), 3, 4, 5],
|
||||
[hidpp20_constants.FEATURE.COLOR_LED_EFFECTS, 0x20, hidpp.Response("0102000700080009", 0x0420, "010200"), 7, 8, 9],
|
||||
[
|
||||
hidpp20_constants.FEATURE.COLOR_LED_EFFECTS,
|
||||
0x20,
|
||||
fake_hidpp.Response("0102000300040005", 0x0420, "010200"),
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
],
|
||||
[
|
||||
hidpp20_constants.FEATURE.COLOR_LED_EFFECTS,
|
||||
0x20,
|
||||
fake_hidpp.Response("0102000700080009", 0x0420, "010200"),
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
],
|
||||
],
|
||||
)
|
||||
def test_LEDEffectInfo(feature, function, response, ID, capabilities, period):
|
||||
device = hidpp.Device(feature=feature, responses=[response])
|
||||
device = fake_hidpp.Device(feature=feature, responses=[response])
|
||||
|
||||
info = hidpp20.LEDEffectInfo(feature, function, device, 1, 2)
|
||||
|
||||
|
@ -661,12 +684,12 @@ def test_LEDEffectInfo(feature, function, response, ID, capabilities, period):
|
|||
@pytest.mark.parametrize(
|
||||
"feature, function, offset, effect_function, responses, index, location, count, id_1",
|
||||
[
|
||||
[hidpp20_constants.FEATURE.COLOR_LED_EFFECTS, 0x10, 0, 0x20, hidpp.zone_responses_1, 0, 1, 2, 0xB],
|
||||
[hidpp20_constants.FEATURE.RGB_EFFECTS, 0x00, 1, 0x00, hidpp.zone_responses_2, 0, 1, 2, 2],
|
||||
[hidpp20_constants.FEATURE.COLOR_LED_EFFECTS, 0x10, 0, 0x20, fake_hidpp.zone_responses_1, 0, 1, 2, 0xB],
|
||||
[hidpp20_constants.FEATURE.RGB_EFFECTS, 0x00, 1, 0x00, fake_hidpp.zone_responses_2, 0, 1, 2, 2],
|
||||
],
|
||||
)
|
||||
def test_LEDZoneInfo(feature, function, offset, effect_function, responses, index, location, count, id_1):
|
||||
device = hidpp.Device(feature=feature, responses=responses, offset=0x07)
|
||||
device = fake_hidpp.Device(feature=feature, responses=responses, offset=0x07)
|
||||
|
||||
zone = hidpp20.LEDZoneInfo(feature, function, offset, effect_function, device, index)
|
||||
|
||||
|
@ -680,13 +703,17 @@ def test_LEDZoneInfo(feature, function, offset, effect_function, responses, inde
|
|||
@pytest.mark.parametrize(
|
||||
"responses, setting, expected_command",
|
||||
[
|
||||
[hidpp.zone_responses_1, hidpp20.LEDEffectSetting(ID=0), None],
|
||||
[hidpp.zone_responses_1, hidpp20.LEDEffectSetting(ID=3, period=0x20, intensity=0x50), "000000000000000020500000"],
|
||||
[hidpp.zone_responses_1, hidpp20.LEDEffectSetting(ID=0xB, color=0x808080, period=0x20), "000180808000002000000000"],
|
||||
[fake_hidpp.zone_responses_1, hidpp20.LEDEffectSetting(ID=0), None],
|
||||
[fake_hidpp.zone_responses_1, hidpp20.LEDEffectSetting(ID=3, period=0x20, intensity=0x50), "000000000000000020500000"],
|
||||
[
|
||||
fake_hidpp.zone_responses_1,
|
||||
hidpp20.LEDEffectSetting(ID=0xB, color=0x808080, period=0x20),
|
||||
"000180808000002000000000",
|
||||
],
|
||||
],
|
||||
)
|
||||
def test_LEDZoneInfo_to_command(responses, setting, expected_command):
|
||||
device = hidpp.Device(feature=hidpp20_constants.FEATURE.COLOR_LED_EFFECTS, responses=responses, offset=0x07)
|
||||
device = fake_hidpp.Device(feature=hidpp20_constants.FEATURE.COLOR_LED_EFFECTS, responses=responses, offset=0x07)
|
||||
zone = hidpp20.LEDZoneInfo(hidpp20_constants.FEATURE.COLOR_LED_EFFECTS, 0x10, 0, 0x20, device, 0)
|
||||
|
||||
command = zone.to_command(setting)
|
||||
|
@ -697,12 +724,12 @@ def test_LEDZoneInfo_to_command(responses, setting, expected_command):
|
|||
@pytest.mark.parametrize(
|
||||
"feature, cls, responses, readable, count, count_0",
|
||||
[
|
||||
[hidpp20_constants.FEATURE.COLOR_LED_EFFECTS, hidpp20.LEDEffectsInfo, hidpp.effects_responses_1, 1, 1, 2],
|
||||
[hidpp20_constants.FEATURE.RGB_EFFECTS, hidpp20.RGBEffectsInfo, hidpp.effects_responses_2, 1, 1, 2],
|
||||
[hidpp20_constants.FEATURE.COLOR_LED_EFFECTS, hidpp20.LEDEffectsInfo, fake_hidpp.effects_responses_1, 1, 1, 2],
|
||||
[hidpp20_constants.FEATURE.RGB_EFFECTS, hidpp20.RGBEffectsInfo, fake_hidpp.effects_responses_2, 1, 1, 2],
|
||||
],
|
||||
)
|
||||
def test_LED_RGB_EffectsInfo(feature, cls, responses, readable, count, count_0):
|
||||
device = hidpp.Device(feature=feature, responses=responses, offset=0x07)
|
||||
device = fake_hidpp.Device(feature=feature, responses=responses, offset=0x07)
|
||||
|
||||
effects = cls(device)
|
||||
|
||||
|
@ -721,7 +748,7 @@ def test_LED_RGB_EffectsInfo(feature, cls, responses, readable, count, count_0):
|
|||
("80020454", 0x8, None, None, 0x02, 0x54, 0x04, None, None),
|
||||
("80030454", 0x8, None, None, 0x03, 0x0454, None, None, None),
|
||||
("900AFF01", 0x9, None, None, None, 0x0A, None, 0x01, None),
|
||||
("709090A0", 0x7, None, None, None, None, None, None, b"\x70\x90\x90\xA0"),
|
||||
("709090A0", 0x7, None, None, None, None, None, None, b"\x70\x90\x90\xa0"),
|
||||
],
|
||||
)
|
||||
def test_button_bytes(hex, behavior, sector, address, typ, val, modifiers, data, byt):
|
||||
|
@ -820,13 +847,15 @@ def test_OnboardProfile_bytes(hex, name, sector, enabled, buttons, gbuttons, res
|
|||
@pytest.mark.parametrize(
|
||||
"responses, name, count, buttons, gbuttons, sectors, size",
|
||||
[
|
||||
(hidpp.responses_profiles, "ONB", 1, 2, 2, 1, 254),
|
||||
(hidpp.responses_profiles_rom, "ONB", 1, 2, 2, 1, 254),
|
||||
(hidpp.responses_profiles_rom_2, "ONB", 1, 2, 2, 1, 254),
|
||||
(fake_hidpp.responses_profiles, "ONB", 1, 2, 2, 1, 254),
|
||||
(fake_hidpp.responses_profiles_rom, "ONB", 1, 2, 2, 1, 254),
|
||||
(fake_hidpp.responses_profiles_rom_2, "ONB", 1, 2, 2, 1, 254),
|
||||
],
|
||||
)
|
||||
def test_OnboardProfiles_device(responses, name, count, buttons, gbuttons, sectors, size):
|
||||
device = hidpp.Device(name, True, 4.5, responses=responses, feature=hidpp20_constants.FEATURE.ONBOARD_PROFILES, offset=0x9)
|
||||
device = fake_hidpp.Device(
|
||||
name, True, 4.5, responses=responses, feature=hidpp20_constants.FEATURE.ONBOARD_PROFILES, offset=0x9
|
||||
)
|
||||
device._profiles = None
|
||||
profiles = _hidpp20.get_profiles(device)
|
||||
|
||||
|
|
|
@ -20,18 +20,18 @@ from logitech_receiver import common
|
|||
from logitech_receiver import hidpp20
|
||||
from logitech_receiver import hidpp20_constants
|
||||
|
||||
from . import hidpp
|
||||
from . import fake_hidpp
|
||||
|
||||
_hidpp20 = hidpp20.Hidpp20()
|
||||
|
||||
|
||||
def test_get_firmware():
|
||||
responses = [
|
||||
hidpp.Response("02FFFF", 0x0400),
|
||||
hidpp.Response("01414243030401000101000102030405", 0x0410, "00"),
|
||||
hidpp.Response("02414243030401000101000102030405", 0x0410, "01"),
|
||||
fake_hidpp.Response("02FFFF", 0x0400),
|
||||
fake_hidpp.Response("01414243030401000101000102030405", 0x0410, "00"),
|
||||
fake_hidpp.Response("02414243030401000101000102030405", 0x0410, "01"),
|
||||
]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.DEVICE_FW_VERSION)
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.DEVICE_FW_VERSION)
|
||||
|
||||
result = _hidpp20.get_firmware(device)
|
||||
|
||||
|
@ -41,8 +41,8 @@ def test_get_firmware():
|
|||
|
||||
|
||||
def test_get_ids():
|
||||
responses = [hidpp.Response("FF12345678000D123456789ABC", 0x0400)]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.DEVICE_FW_VERSION)
|
||||
responses = [fake_hidpp.Response("FF12345678000D123456789ABC", 0x0400)]
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.DEVICE_FW_VERSION)
|
||||
|
||||
unitId, modelId, tid_map = _hidpp20.get_ids(device)
|
||||
|
||||
|
@ -52,8 +52,8 @@ def test_get_ids():
|
|||
|
||||
|
||||
def test_get_kind():
|
||||
responses = [hidpp.Response("00", 0x0420)]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.DEVICE_NAME)
|
||||
responses = [fake_hidpp.Response("00", 0x0420)]
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.DEVICE_NAME)
|
||||
|
||||
result = _hidpp20.get_kind(device)
|
||||
|
||||
|
@ -63,11 +63,11 @@ def test_get_kind():
|
|||
|
||||
def test_get_name():
|
||||
responses = [
|
||||
hidpp.Response("12", 0x0400),
|
||||
hidpp.Response("4142434445464748494A4B4C4D4E4F", 0x0410, "00"),
|
||||
hidpp.Response("505152530000000000000000000000", 0x0410, "0F"),
|
||||
fake_hidpp.Response("12", 0x0400),
|
||||
fake_hidpp.Response("4142434445464748494A4B4C4D4E4F", 0x0410, "00"),
|
||||
fake_hidpp.Response("505152530000000000000000000000", 0x0410, "0F"),
|
||||
]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.DEVICE_NAME)
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.DEVICE_NAME)
|
||||
|
||||
result = _hidpp20.get_name(device)
|
||||
|
||||
|
@ -76,11 +76,11 @@ def test_get_name():
|
|||
|
||||
def test_get_friendly_name():
|
||||
responses = [
|
||||
hidpp.Response("12", 0x0400),
|
||||
hidpp.Response("004142434445464748494A4B4C4D4E", 0x0410, "00"),
|
||||
hidpp.Response("0E4F50515253000000000000000000", 0x0410, "0E"),
|
||||
fake_hidpp.Response("12", 0x0400),
|
||||
fake_hidpp.Response("004142434445464748494A4B4C4D4E", 0x0410, "00"),
|
||||
fake_hidpp.Response("0E4F50515253000000000000000000", 0x0410, "0E"),
|
||||
]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.DEVICE_FRIENDLY_NAME)
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.DEVICE_FRIENDLY_NAME)
|
||||
|
||||
result = _hidpp20.get_friendly_name(device)
|
||||
|
||||
|
@ -88,8 +88,8 @@ def test_get_friendly_name():
|
|||
|
||||
|
||||
def test_get_battery_status():
|
||||
responses = [hidpp.Response("502000FFFF", 0x0400)]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.BATTERY_STATUS)
|
||||
responses = [fake_hidpp.Response("502000FFFF", 0x0400)]
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.BATTERY_STATUS)
|
||||
|
||||
feature, battery = _hidpp20.get_battery_status(device)
|
||||
|
||||
|
@ -100,8 +100,8 @@ def test_get_battery_status():
|
|||
|
||||
|
||||
def test_get_battery_voltage():
|
||||
responses = [hidpp.Response("1000FFFFFF", 0x0400)]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.BATTERY_VOLTAGE)
|
||||
responses = [fake_hidpp.Response("1000FFFFFF", 0x0400)]
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.BATTERY_VOLTAGE)
|
||||
|
||||
feature, battery = _hidpp20.get_battery_voltage(device)
|
||||
|
||||
|
@ -112,8 +112,8 @@ def test_get_battery_voltage():
|
|||
|
||||
|
||||
def test_get_battery_unified():
|
||||
responses = [hidpp.Response("500100FFFF", 0x0410)]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.UNIFIED_BATTERY)
|
||||
responses = [fake_hidpp.Response("500100FFFF", 0x0410)]
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.UNIFIED_BATTERY)
|
||||
|
||||
feature, battery = _hidpp20.get_battery_unified(device)
|
||||
|
||||
|
@ -123,8 +123,8 @@ def test_get_battery_unified():
|
|||
|
||||
|
||||
def test_get_adc_measurement():
|
||||
responses = [hidpp.Response("100003", 0x0400)]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.ADC_MEASUREMENT)
|
||||
responses = [fake_hidpp.Response("100003", 0x0400)]
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.ADC_MEASUREMENT)
|
||||
|
||||
feature, battery = _hidpp20.get_adc_measurement(device)
|
||||
|
||||
|
@ -135,8 +135,8 @@ def test_get_adc_measurement():
|
|||
|
||||
|
||||
def test_get_battery():
|
||||
responses = [hidpp.Response("502000FFFF", 0x0400)]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.BATTERY_STATUS)
|
||||
responses = [fake_hidpp.Response("502000FFFF", 0x0400)]
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.BATTERY_STATUS)
|
||||
|
||||
feature, battery = _hidpp20.get_battery(device, hidpp20_constants.FEATURE.BATTERY_STATUS)
|
||||
|
||||
|
@ -148,11 +148,11 @@ def test_get_battery():
|
|||
|
||||
def test_get_battery_none():
|
||||
responses = [
|
||||
hidpp.Response(None, 0x0000, f"{hidpp20_constants.FEATURE.BATTERY_STATUS:0>4X}"),
|
||||
hidpp.Response(None, 0x0000, f"{hidpp20_constants.FEATURE.BATTERY_VOLTAGE:0>4X}"),
|
||||
hidpp.Response("500100ffff", 0x0410),
|
||||
fake_hidpp.Response(None, 0x0000, f"{hidpp20_constants.FEATURE.BATTERY_STATUS:0>4X}"),
|
||||
fake_hidpp.Response(None, 0x0000, f"{hidpp20_constants.FEATURE.BATTERY_VOLTAGE:0>4X}"),
|
||||
fake_hidpp.Response("500100ffff", 0x0410),
|
||||
]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.UNIFIED_BATTERY)
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.UNIFIED_BATTERY)
|
||||
|
||||
feature, battery = _hidpp20.get_battery(device, None)
|
||||
|
||||
|
@ -169,8 +169,8 @@ def test_get_battery_none():
|
|||
|
||||
|
||||
def test_get_mouse_pointer_info():
|
||||
responses = [hidpp.Response("01000A", 0x0400)]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.MOUSE_POINTER)
|
||||
responses = [fake_hidpp.Response("01000A", 0x0400)]
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.MOUSE_POINTER)
|
||||
|
||||
result = _hidpp20.get_mouse_pointer_info(device)
|
||||
|
||||
|
@ -183,8 +183,8 @@ def test_get_mouse_pointer_info():
|
|||
|
||||
|
||||
def test_get_vertical_scrolling_info():
|
||||
responses = [hidpp.Response("01080C", 0x0400)]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.VERTICAL_SCROLLING)
|
||||
responses = [fake_hidpp.Response("01080C", 0x0400)]
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.VERTICAL_SCROLLING)
|
||||
|
||||
result = _hidpp20.get_vertical_scrolling_info(device)
|
||||
|
||||
|
@ -192,8 +192,8 @@ def test_get_vertical_scrolling_info():
|
|||
|
||||
|
||||
def test_get_hi_res_scrolling_info():
|
||||
responses = [hidpp.Response("0102", 0x0400)]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.HI_RES_SCROLLING)
|
||||
responses = [fake_hidpp.Response("0102", 0x0400)]
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.HI_RES_SCROLLING)
|
||||
|
||||
mode, resolution = _hidpp20.get_hi_res_scrolling_info(device)
|
||||
|
||||
|
@ -202,8 +202,8 @@ def test_get_hi_res_scrolling_info():
|
|||
|
||||
|
||||
def test_get_pointer_speed_info():
|
||||
responses = [hidpp.Response("0102", 0x0400)]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.POINTER_SPEED)
|
||||
responses = [fake_hidpp.Response("0102", 0x0400)]
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.POINTER_SPEED)
|
||||
|
||||
result = _hidpp20.get_pointer_speed_info(device)
|
||||
|
||||
|
@ -211,8 +211,8 @@ def test_get_pointer_speed_info():
|
|||
|
||||
|
||||
def test_get_lowres_wheel_status():
|
||||
responses = [hidpp.Response("01", 0x0400)]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.LOWRES_WHEEL)
|
||||
responses = [fake_hidpp.Response("01", 0x0400)]
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.LOWRES_WHEEL)
|
||||
|
||||
result = _hidpp20.get_lowres_wheel_status(device)
|
||||
|
||||
|
@ -221,11 +221,11 @@ def test_get_lowres_wheel_status():
|
|||
|
||||
def test_get_hires_wheel():
|
||||
responses = [
|
||||
hidpp.Response("010C", 0x0400),
|
||||
hidpp.Response("05FF", 0x0410),
|
||||
hidpp.Response("03FF", 0x0430),
|
||||
fake_hidpp.Response("010C", 0x0400),
|
||||
fake_hidpp.Response("05FF", 0x0410),
|
||||
fake_hidpp.Response("03FF", 0x0430),
|
||||
]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.HIRES_WHEEL)
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.HIRES_WHEEL)
|
||||
|
||||
multi, has_invert, has_ratchet, inv, res, target, ratchet = _hidpp20.get_hires_wheel(device)
|
||||
|
||||
|
@ -239,8 +239,8 @@ def test_get_hires_wheel():
|
|||
|
||||
|
||||
def test_get_new_fn_inversion():
|
||||
responses = [hidpp.Response("0300", 0x0400)]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.NEW_FN_INVERSION)
|
||||
responses = [fake_hidpp.Response("0300", 0x0400)]
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.NEW_FN_INVERSION)
|
||||
|
||||
result = _hidpp20.get_new_fn_inversion(device)
|
||||
|
||||
|
@ -255,25 +255,25 @@ def mock_gethostname(mocker):
|
|||
@pytest.mark.parametrize(
|
||||
"responses, expected_result",
|
||||
[
|
||||
([hidpp.Response(None, 0x0400)], {}),
|
||||
([hidpp.Response("02000000", 0x0400)], {}),
|
||||
([fake_hidpp.Response(None, 0x0400)], {}),
|
||||
([fake_hidpp.Response("02000000", 0x0400)], {}),
|
||||
(
|
||||
[
|
||||
hidpp.Response("03000200", 0x0400),
|
||||
hidpp.Response("FF01FFFF05FFFF", 0x0410, "00"),
|
||||
hidpp.Response("0000414243444500FFFFFFFFFF", 0x0430, "0000"),
|
||||
hidpp.Response("FF01FFFF10FFFF", 0x0410, "01"),
|
||||
hidpp.Response("01004142434445464748494A4B4C4D", 0x0430, "0100"),
|
||||
hidpp.Response("01134E4F5000FFFFFFFFFFFFFFFFFF", 0x0430, "010E"),
|
||||
hidpp.Response("000000000008", 0x0410, "00"),
|
||||
hidpp.Response("0208", 0x0440, "000041424344454647"),
|
||||
fake_hidpp.Response("03000200", 0x0400),
|
||||
fake_hidpp.Response("FF01FFFF05FFFF", 0x0410, "00"),
|
||||
fake_hidpp.Response("0000414243444500FFFFFFFFFF", 0x0430, "0000"),
|
||||
fake_hidpp.Response("FF01FFFF10FFFF", 0x0410, "01"),
|
||||
fake_hidpp.Response("01004142434445464748494A4B4C4D", 0x0430, "0100"),
|
||||
fake_hidpp.Response("01134E4F5000FFFFFFFFFFFFFFFFFF", 0x0430, "010E"),
|
||||
fake_hidpp.Response("000000000008", 0x0410, "00"),
|
||||
fake_hidpp.Response("0208", 0x0440, "000041424344454647"),
|
||||
],
|
||||
{0: (True, "ABCDEFG"), 1: (True, "ABCDEFGHIJKLMNO")},
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_get_host_names(responses, expected_result, mock_gethostname):
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.HOSTS_INFO)
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.HOSTS_INFO)
|
||||
|
||||
result = _hidpp20.get_host_names(device)
|
||||
|
||||
|
@ -283,28 +283,28 @@ def test_get_host_names(responses, expected_result, mock_gethostname):
|
|||
@pytest.mark.parametrize(
|
||||
"responses, expected_result",
|
||||
[
|
||||
([hidpp.Response(None, 0x0400)], None),
|
||||
([fake_hidpp.Response(None, 0x0400)], None),
|
||||
(
|
||||
[
|
||||
hidpp.Response("03000002", 0x0400),
|
||||
hidpp.Response("000000000008", 0x0410, "02"),
|
||||
hidpp.Response("020E", 0x0440, "02004142434445464748494A4B4C4D4E"),
|
||||
fake_hidpp.Response("03000002", 0x0400),
|
||||
fake_hidpp.Response("000000000008", 0x0410, "02"),
|
||||
fake_hidpp.Response("020E", 0x0440, "02004142434445464748494A4B4C4D4E"),
|
||||
],
|
||||
True,
|
||||
),
|
||||
(
|
||||
[
|
||||
hidpp.Response("03000002", 0x0400),
|
||||
hidpp.Response("000000000014", 0x0410, "02"),
|
||||
hidpp.Response("020E", 0x0440, "02004142434445464748494A4B4C4D4E"),
|
||||
hidpp.Response("0214", 0x0440, "020E4F505152535455565758"),
|
||||
fake_hidpp.Response("03000002", 0x0400),
|
||||
fake_hidpp.Response("000000000014", 0x0410, "02"),
|
||||
fake_hidpp.Response("020E", 0x0440, "02004142434445464748494A4B4C4D4E"),
|
||||
fake_hidpp.Response("0214", 0x0440, "020E4F505152535455565758"),
|
||||
],
|
||||
True,
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_set_host_name(responses, expected_result):
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.HOSTS_INFO)
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.HOSTS_INFO)
|
||||
|
||||
result = _hidpp20.set_host_name(device, "ABCDEFGHIJKLMNOPQRSTUVWX")
|
||||
|
||||
|
@ -312,8 +312,8 @@ def test_set_host_name(responses, expected_result):
|
|||
|
||||
|
||||
def test_get_onboard_mode():
|
||||
responses = [hidpp.Response("03FFFFFFFF", 0x0420)]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.ONBOARD_PROFILES)
|
||||
responses = [fake_hidpp.Response("03FFFFFFFF", 0x0420)]
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.ONBOARD_PROFILES)
|
||||
|
||||
result = _hidpp20.get_onboard_mode(device)
|
||||
|
||||
|
@ -321,8 +321,8 @@ def test_get_onboard_mode():
|
|||
|
||||
|
||||
def test_set_onboard_mode():
|
||||
responses = [hidpp.Response("03FFFFFFFF", 0x0410, "03")]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.ONBOARD_PROFILES)
|
||||
responses = [fake_hidpp.Response("03FFFFFFFF", 0x0410, "03")]
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.ONBOARD_PROFILES)
|
||||
|
||||
res = _hidpp20.set_onboard_mode(device, 0x3)
|
||||
|
||||
|
@ -332,11 +332,11 @@ def test_set_onboard_mode():
|
|||
@pytest.mark.parametrize(
|
||||
"responses, expected_result",
|
||||
[
|
||||
([hidpp.Response("03FFFF", 0x0420)], "1ms"),
|
||||
([fake_hidpp.Response("03FFFF", 0x0420)], "1ms"),
|
||||
(
|
||||
[
|
||||
hidpp.Response(None, 0x0000, f"{hidpp20_constants.FEATURE.REPORT_RATE:0>4X}"),
|
||||
hidpp.Response("04FFFF", 0x0420),
|
||||
fake_hidpp.Response(None, 0x0000, f"{hidpp20_constants.FEATURE.REPORT_RATE:0>4X}"),
|
||||
fake_hidpp.Response("04FFFF", 0x0420),
|
||||
],
|
||||
"500us",
|
||||
),
|
||||
|
@ -346,7 +346,7 @@ def test_get_polling_rate(
|
|||
responses,
|
||||
expected_result,
|
||||
):
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.EXTENDED_ADJUSTABLE_REPORT_RATE)
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.EXTENDED_ADJUSTABLE_REPORT_RATE)
|
||||
|
||||
result = _hidpp20.get_polling_rate(device)
|
||||
|
||||
|
@ -354,8 +354,8 @@ def test_get_polling_rate(
|
|||
|
||||
|
||||
def test_get_remaining_pairing():
|
||||
responses = [hidpp.Response("03FFFF", 0x0400)]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.REMAINING_PAIRING)
|
||||
responses = [fake_hidpp.Response("03FFFF", 0x0400)]
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.REMAINING_PAIRING)
|
||||
|
||||
result = _hidpp20.get_remaining_pairing(device)
|
||||
|
||||
|
@ -363,8 +363,8 @@ def test_get_remaining_pairing():
|
|||
|
||||
|
||||
def test_config_change():
|
||||
responses = [hidpp.Response("03FFFF", 0x0410, "02")]
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.CONFIG_CHANGE)
|
||||
responses = [fake_hidpp.Response("03FFFF", 0x0410, "02")]
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.CONFIG_CHANGE)
|
||||
|
||||
result = _hidpp20.config_change(device, 0x2)
|
||||
|
||||
|
@ -383,7 +383,7 @@ def test_decipher_battery_status():
|
|||
|
||||
|
||||
def test_decipher_battery_voltage():
|
||||
report = b"\x10\x00\xFF\xff\xff"
|
||||
report = b"\x10\x00\xff\xff\xff"
|
||||
|
||||
feature, battery = hidpp20.decipher_battery_voltage(report)
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ from logitech_receiver import common
|
|||
from logitech_receiver import exceptions
|
||||
from logitech_receiver import receiver
|
||||
|
||||
from . import hidpp
|
||||
from . import fake_hidpp
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
|
@ -55,38 +55,38 @@ def mock_base():
|
|||
|
||||
|
||||
responses_unifying = [
|
||||
hidpp.Response("000000", 0x8003, "FF"),
|
||||
hidpp.Response("000300", 0x8102),
|
||||
hidpp.Response("0316CC9CB40506220000000000000000", 0x83B5, "03"),
|
||||
hidpp.Response("20200840820402020700000000000000", 0x83B5, "20"),
|
||||
hidpp.Response("21211420110400010D1A000000000000", 0x83B5, "21"),
|
||||
hidpp.Response("22220840660402010700000000020000", 0x83B5, "22"),
|
||||
hidpp.Response("30198E3EB80600000001000000000000", 0x83B5, "30"),
|
||||
hidpp.Response("31811119511A40000002000000000000", 0x83B5, "31"),
|
||||
hidpp.Response("32112C46EA1E40000003000000000000", 0x83B5, "32"),
|
||||
hidpp.Response("400B4D58204D61737465722033000000", 0x83B5, "40"),
|
||||
hidpp.Response("41044B35323020202020202020202020", 0x83B5, "41"),
|
||||
hidpp.Response("42054372616674000000000000000000", 0x83B5, "42"),
|
||||
hidpp.Response("012411", 0x81F1, "01"),
|
||||
hidpp.Response("020036", 0x81F1, "02"),
|
||||
hidpp.Response("03AAAC", 0x81F1, "03"),
|
||||
hidpp.Response("040209", 0x81F1, "04"),
|
||||
fake_hidpp.Response("000000", 0x8003, "FF"),
|
||||
fake_hidpp.Response("000300", 0x8102),
|
||||
fake_hidpp.Response("0316CC9CB40506220000000000000000", 0x83B5, "03"),
|
||||
fake_hidpp.Response("20200840820402020700000000000000", 0x83B5, "20"),
|
||||
fake_hidpp.Response("21211420110400010D1A000000000000", 0x83B5, "21"),
|
||||
fake_hidpp.Response("22220840660402010700000000020000", 0x83B5, "22"),
|
||||
fake_hidpp.Response("30198E3EB80600000001000000000000", 0x83B5, "30"),
|
||||
fake_hidpp.Response("31811119511A40000002000000000000", 0x83B5, "31"),
|
||||
fake_hidpp.Response("32112C46EA1E40000003000000000000", 0x83B5, "32"),
|
||||
fake_hidpp.Response("400B4D58204D61737465722033000000", 0x83B5, "40"),
|
||||
fake_hidpp.Response("41044B35323020202020202020202020", 0x83B5, "41"),
|
||||
fake_hidpp.Response("42054372616674000000000000000000", 0x83B5, "42"),
|
||||
fake_hidpp.Response("012411", 0x81F1, "01"),
|
||||
fake_hidpp.Response("020036", 0x81F1, "02"),
|
||||
fake_hidpp.Response("03AAAC", 0x81F1, "03"),
|
||||
fake_hidpp.Response("040209", 0x81F1, "04"),
|
||||
]
|
||||
responses_c534 = [
|
||||
hidpp.Response("000000", 0x8003, "FF", handle=0x12),
|
||||
hidpp.Response("000209", 0x8102, handle=0x12),
|
||||
hidpp.Response("0316CC9CB40502220000000000000000", 0x83B5, "03", handle=0x12),
|
||||
hidpp.Response("00000445AB", 0x83B5, "04", handle=0x12),
|
||||
fake_hidpp.Response("000000", 0x8003, "FF", handle=0x12),
|
||||
fake_hidpp.Response("000209", 0x8102, handle=0x12),
|
||||
fake_hidpp.Response("0316CC9CB40502220000000000000000", 0x83B5, "03", handle=0x12),
|
||||
fake_hidpp.Response("00000445AB", 0x83B5, "04", handle=0x12),
|
||||
]
|
||||
responses_unusual = [
|
||||
hidpp.Response("000000", 0x8003, "FF", handle=0x13),
|
||||
hidpp.Response("000300", 0x8102, handle=0x13),
|
||||
hidpp.Response("00000445AB", 0x83B5, "04", handle=0x13),
|
||||
hidpp.Response("0326CC9CB40508220000000000000000", 0x83B5, "03", handle=0x13),
|
||||
fake_hidpp.Response("000000", 0x8003, "FF", handle=0x13),
|
||||
fake_hidpp.Response("000300", 0x8102, handle=0x13),
|
||||
fake_hidpp.Response("00000445AB", 0x83B5, "04", handle=0x13),
|
||||
fake_hidpp.Response("0326CC9CB40508220000000000000000", 0x83B5, "03", handle=0x13),
|
||||
]
|
||||
responses_lacking = [
|
||||
hidpp.Response("000000", 0x8003, "FF", handle=0x14),
|
||||
hidpp.Response("000300", 0x8102, handle=0x14),
|
||||
fake_hidpp.Response("000000", 0x8003, "FF", handle=0x14),
|
||||
fake_hidpp.Response("000300", 0x8102, handle=0x14),
|
||||
]
|
||||
|
||||
mouse_info = {
|
||||
|
@ -113,8 +113,8 @@ c534_info = {"kind": common.NamedInt(0, "unknown"), "polling": "", "power_switch
|
|||
],
|
||||
)
|
||||
def test_ReceiverFactory_create_receiver(device_info, responses, handle, serial, max_devices, mock_base):
|
||||
mock_base[0].side_effect = hidpp.open_path
|
||||
mock_base[1].side_effect = partial(hidpp.request, responses)
|
||||
mock_base[0].side_effect = fake_hidpp.open_path
|
||||
mock_base[1].side_effect = partial(fake_hidpp.request, responses)
|
||||
|
||||
if handle is False:
|
||||
with pytest.raises(Exception): # noqa: B017
|
||||
|
@ -139,8 +139,8 @@ def test_ReceiverFactory_create_receiver(device_info, responses, handle, serial,
|
|||
],
|
||||
)
|
||||
def test_ReceiverFactory_props(device_info, responses, firmware, codename, remaining_pairings, pairing_info, count, mock_base):
|
||||
mock_base[0].side_effect = hidpp.open_path
|
||||
mock_base[1].side_effect = partial(hidpp.request, responses)
|
||||
mock_base[0].side_effect = fake_hidpp.open_path
|
||||
mock_base[1].side_effect = partial(fake_hidpp.request, responses)
|
||||
|
||||
r = receiver.ReceiverFactory.create_receiver(device_info, lambda x: x)
|
||||
|
||||
|
@ -161,8 +161,8 @@ def test_ReceiverFactory_props(device_info, responses, firmware, codename, remai
|
|||
],
|
||||
)
|
||||
def test_ReceiverFactory_string(device_info, responses, status_str, strng, mock_base):
|
||||
mock_base[0].side_effect = hidpp.open_path
|
||||
mock_base[1].side_effect = partial(hidpp.request, responses)
|
||||
mock_base[0].side_effect = fake_hidpp.open_path
|
||||
mock_base[1].side_effect = partial(fake_hidpp.request, responses)
|
||||
|
||||
r = receiver.ReceiverFactory.create_receiver(device_info, lambda x: x)
|
||||
|
||||
|
@ -179,8 +179,8 @@ def test_ReceiverFactory_string(device_info, responses, status_str, strng, mock_
|
|||
],
|
||||
)
|
||||
def test_ReceiverFactory_nodevice(device_info, responses, mock_base):
|
||||
mock_base[0].side_effect = hidpp.open_path
|
||||
mock_base[1].side_effect = partial(hidpp.request, responses)
|
||||
mock_base[0].side_effect = fake_hidpp.open_path
|
||||
mock_base[1].side_effect = partial(fake_hidpp.request, responses)
|
||||
|
||||
r = receiver.ReceiverFactory.create_receiver(device_info, lambda x: x)
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ from logitech_receiver import hidpp20_constants
|
|||
from logitech_receiver import settings_templates
|
||||
from logitech_receiver import special_keys
|
||||
|
||||
from . import hidpp
|
||||
from . import fake_hidpp
|
||||
|
||||
# TODO action part of DpiSlidingXY, MouseGesturesXY
|
||||
|
||||
|
@ -37,8 +37,8 @@ from . import hidpp
|
|||
class Setup:
|
||||
def __init__(self, test, *params):
|
||||
self.test = test
|
||||
self.responses = [r for r in params if isinstance(r, hidpp.Response)]
|
||||
self.choices = None if isinstance(params[0], hidpp.Response) else params[0]
|
||||
self.responses = [r for r in params if isinstance(r, fake_hidpp.Response)]
|
||||
self.choices = None if isinstance(params[0], fake_hidpp.Response) else params[0]
|
||||
|
||||
|
||||
@dataclass
|
||||
|
@ -52,42 +52,42 @@ class RegisterTest:
|
|||
register_tests = [
|
||||
Setup(
|
||||
RegisterTest(settings_templates.RegisterHandDetection, False, True, [b"\x00\x00\x00"]),
|
||||
hidpp.Response("000030", 0x8101), # keyboard_hand_detection
|
||||
hidpp.Response("000000", 0x8001, "000000"),
|
||||
fake_hidpp.Response("000030", 0x8101), # keyboard_hand_detection
|
||||
fake_hidpp.Response("000000", 0x8001, "000000"),
|
||||
),
|
||||
Setup(
|
||||
RegisterTest(settings_templates.RegisterHandDetection, True, False, [b"\x00\x00\x30"]),
|
||||
hidpp.Response("000000", 0x8101), # keyboard_hand_detection
|
||||
hidpp.Response("000030", 0x8001, "000030"),
|
||||
fake_hidpp.Response("000000", 0x8101), # keyboard_hand_detection
|
||||
fake_hidpp.Response("000030", 0x8001, "000030"),
|
||||
),
|
||||
Setup(
|
||||
RegisterTest(settings_templates.RegisterSmoothScroll, False, True, [b"\x40"]),
|
||||
hidpp.Response("00", 0x8101), # mouse_button_flags
|
||||
hidpp.Response("40", 0x8001, "40"),
|
||||
fake_hidpp.Response("00", 0x8101), # mouse_button_flags
|
||||
fake_hidpp.Response("40", 0x8001, "40"),
|
||||
),
|
||||
Setup(
|
||||
RegisterTest(settings_templates.RegisterSideScroll, True, False, [b"\x00"]),
|
||||
hidpp.Response("02", 0x8101), # mouse_button_flags
|
||||
hidpp.Response("00", 0x8001, "00"),
|
||||
fake_hidpp.Response("02", 0x8101), # mouse_button_flags
|
||||
fake_hidpp.Response("00", 0x8001, "00"),
|
||||
),
|
||||
Setup(
|
||||
RegisterTest(settings_templates.RegisterFnSwap, False, True, [b"\x00\x01"]),
|
||||
hidpp.Response("0000", 0x8109), # keyboard_fn_swap
|
||||
hidpp.Response("0001", 0x8009, "0001"),
|
||||
fake_hidpp.Response("0000", 0x8109), # keyboard_fn_swap
|
||||
fake_hidpp.Response("0001", 0x8009, "0001"),
|
||||
),
|
||||
Setup(
|
||||
RegisterTest(
|
||||
settings_templates._PerformanceMXDpi, common.NamedInt(0x88, "800"), common.NamedInt(0x89, "900"), [b"\x89"]
|
||||
),
|
||||
hidpp.Response("88", 0x8163), # mouse_dpi
|
||||
hidpp.Response("89", 0x8063, "89"),
|
||||
fake_hidpp.Response("88", 0x8163), # mouse_dpi
|
||||
fake_hidpp.Response("89", 0x8063, "89"),
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("test", register_tests)
|
||||
def test_register_template(test, mocker):
|
||||
device = hidpp.Device(protocol=1.0, responses=test.responses)
|
||||
device = fake_hidpp.Device(protocol=1.0, responses=test.responses)
|
||||
spy_request = mocker.spy(device, "request")
|
||||
|
||||
setting = test.test.sclass.build(device)
|
||||
|
@ -116,165 +116,165 @@ class FeatureTest:
|
|||
simple_tests = [
|
||||
Setup(
|
||||
FeatureTest(settings_templates.K375sFnSwap, False, True, offset=0x06),
|
||||
hidpp.Response("FF0001", 0x0600, "FF"),
|
||||
hidpp.Response("FF0101", 0x0610, "FF01"),
|
||||
fake_hidpp.Response("FF0001", 0x0600, "FF"),
|
||||
fake_hidpp.Response("FF0101", 0x0610, "FF01"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.K375sFnSwap, False, True, offset=0x06),
|
||||
hidpp.Response("050001", 0x0000, "1815"), # HOSTS_INFO
|
||||
hidpp.Response("FF0001", 0x0600, "FF"),
|
||||
hidpp.Response("FF0101", 0x0610, "FF01"),
|
||||
fake_hidpp.Response("050001", 0x0000, "1815"), # HOSTS_INFO
|
||||
fake_hidpp.Response("FF0001", 0x0600, "FF"),
|
||||
fake_hidpp.Response("FF0101", 0x0610, "FF01"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.K375sFnSwap, False, True, offset=0x06),
|
||||
hidpp.Response("050001", 0x0000, "1815"), # HOSTS_INFO
|
||||
hidpp.Response("07050301", 0x0500), # current host is 0x01, i.e., host 2
|
||||
hidpp.Response("010001", 0x0600, "01"),
|
||||
hidpp.Response("010101", 0x0610, "0101"),
|
||||
fake_hidpp.Response("050001", 0x0000, "1815"), # HOSTS_INFO
|
||||
fake_hidpp.Response("07050301", 0x0500), # current host is 0x01, i.e., host 2
|
||||
fake_hidpp.Response("010001", 0x0600, "01"),
|
||||
fake_hidpp.Response("010101", 0x0610, "0101"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.FnSwap, True, False),
|
||||
hidpp.Response("01", 0x0400),
|
||||
hidpp.Response("00", 0x0410, "00"),
|
||||
fake_hidpp.Response("01", 0x0400),
|
||||
fake_hidpp.Response("00", 0x0410, "00"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.NewFnSwap, True, False),
|
||||
hidpp.Response("01", 0x0400),
|
||||
hidpp.Response("00", 0x0410, "00"),
|
||||
fake_hidpp.Response("01", 0x0400),
|
||||
fake_hidpp.Response("00", 0x0410, "00"),
|
||||
),
|
||||
# Setup( # Backlight has caused problems
|
||||
# FeatureTest(settings_templates.Backlight, 0, 5, offset=0x06),
|
||||
# hidpp.Response("00", 0x0600),
|
||||
# hidpp.Response("05", 0x0610, "05"),
|
||||
# fake_hidpp.Response("00", 0x0600),
|
||||
# fake_hidpp.Response("05", 0x0610, "05"),
|
||||
# ),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.Backlight2DurationHandsOut, 80, 160, version=0x03),
|
||||
hidpp.Response("011830000000100040006000", 0x0400),
|
||||
hidpp.Response("0118FF00200040006000", 0x0410, "0118FF00200040006000"),
|
||||
fake_hidpp.Response("011830000000100040006000", 0x0400),
|
||||
fake_hidpp.Response("0118FF00200040006000", 0x0410, "0118FF00200040006000"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.Backlight2DurationHandsIn, 320, 160, version=0x03),
|
||||
hidpp.Response("011830000000200040006000", 0x0400),
|
||||
hidpp.Response("0118FF00200020006000", 0x0410, "0118FF00200020006000"),
|
||||
fake_hidpp.Response("011830000000200040006000", 0x0400),
|
||||
fake_hidpp.Response("0118FF00200020006000", 0x0410, "0118FF00200020006000"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.Backlight2DurationPowered, 480, 80, version=0x03),
|
||||
hidpp.Response("011830000000200040006000", 0x0400),
|
||||
hidpp.Response("0118FF00200040001000", 0x0410, "0118FF00200040001000"),
|
||||
fake_hidpp.Response("011830000000200040006000", 0x0400),
|
||||
fake_hidpp.Response("0118FF00200040001000", 0x0410, "0118FF00200040001000"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.Backlight3, 0x50, 0x70),
|
||||
hidpp.Response("50", 0x0410),
|
||||
hidpp.Response("70", 0x0420, "007009"),
|
||||
fake_hidpp.Response("50", 0x0410),
|
||||
fake_hidpp.Response("70", 0x0420, "007009"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.HiResScroll, True, False),
|
||||
hidpp.Response("01", 0x0400),
|
||||
hidpp.Response("00", 0x0410, "00"),
|
||||
fake_hidpp.Response("01", 0x0400),
|
||||
fake_hidpp.Response("00", 0x0410, "00"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.LowresMode, False, True),
|
||||
hidpp.Response("00", 0x0400),
|
||||
hidpp.Response("01", 0x0410, "01"),
|
||||
fake_hidpp.Response("00", 0x0400),
|
||||
fake_hidpp.Response("01", 0x0410, "01"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.HiresSmoothInvert, True, False),
|
||||
hidpp.Response("06", 0x0410),
|
||||
hidpp.Response("02", 0x0420, "02"),
|
||||
fake_hidpp.Response("06", 0x0410),
|
||||
fake_hidpp.Response("02", 0x0420, "02"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.HiresSmoothResolution, True, False),
|
||||
hidpp.Response("06", 0x0410),
|
||||
hidpp.Response("04", 0x0420, "04"),
|
||||
fake_hidpp.Response("06", 0x0410),
|
||||
fake_hidpp.Response("04", 0x0420, "04"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.HiresMode, False, True),
|
||||
hidpp.Response("06", 0x0410),
|
||||
hidpp.Response("07", 0x0420, "07"),
|
||||
fake_hidpp.Response("06", 0x0410),
|
||||
fake_hidpp.Response("07", 0x0420, "07"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.PointerSpeed, 0x0100, 0x0120),
|
||||
hidpp.Response("0100", 0x0400),
|
||||
hidpp.Response("0120", 0x0410, "0120"),
|
||||
fake_hidpp.Response("0100", 0x0400),
|
||||
fake_hidpp.Response("0120", 0x0410, "0120"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.ThumbMode, True, False),
|
||||
hidpp.Response("0100", 0x0410),
|
||||
hidpp.Response("0000", 0x0420, "0000"),
|
||||
fake_hidpp.Response("0100", 0x0410),
|
||||
fake_hidpp.Response("0000", 0x0420, "0000"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.ThumbInvert, False, True),
|
||||
hidpp.Response("0100", 0x0410),
|
||||
hidpp.Response("0101", 0x0420, "0101"),
|
||||
fake_hidpp.Response("0100", 0x0410),
|
||||
fake_hidpp.Response("0101", 0x0420, "0101"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.DivertCrown, False, True),
|
||||
hidpp.Response("01", 0x0410),
|
||||
hidpp.Response("02", 0x0420, "02"),
|
||||
fake_hidpp.Response("01", 0x0410),
|
||||
fake_hidpp.Response("02", 0x0420, "02"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.CrownSmooth, True, False),
|
||||
hidpp.Response("0001", 0x0410),
|
||||
hidpp.Response("0002", 0x0420, "0002"),
|
||||
fake_hidpp.Response("0001", 0x0410),
|
||||
fake_hidpp.Response("0002", 0x0420, "0002"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.DivertGkeys, False, True),
|
||||
hidpp.Response("01", 0x0420, "01"),
|
||||
fake_hidpp.Response("01", 0x0420, "01"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.ScrollRatchet, 2, 1),
|
||||
hidpp.Response("02", 0x0400),
|
||||
hidpp.Response("01", 0x0410, "01"),
|
||||
fake_hidpp.Response("02", 0x0400),
|
||||
fake_hidpp.Response("01", 0x0410, "01"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.SmartShift, 1, 10),
|
||||
hidpp.Response("0100", 0x0400),
|
||||
hidpp.Response("000A", 0x0410, "000A"),
|
||||
fake_hidpp.Response("0100", 0x0400),
|
||||
fake_hidpp.Response("000A", 0x0410, "000A"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.SmartShift, 5, 50),
|
||||
hidpp.Response("0005", 0x0400),
|
||||
hidpp.Response("00FF", 0x0410, "00FF"),
|
||||
fake_hidpp.Response("0005", 0x0400),
|
||||
fake_hidpp.Response("00FF", 0x0410, "00FF"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.SmartShiftEnhanced, 5, 50),
|
||||
hidpp.Response("0005", 0x0410),
|
||||
hidpp.Response("00FF", 0x0420, "00FF"),
|
||||
fake_hidpp.Response("0005", 0x0410),
|
||||
fake_hidpp.Response("00FF", 0x0420, "00FF"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.DisableKeyboardKeys, {1: True, 8: True}, {1: False, 8: True}),
|
||||
hidpp.Response("09", 0x0400),
|
||||
hidpp.Response("09", 0x0410),
|
||||
hidpp.Response("08", 0x0420, "08"),
|
||||
fake_hidpp.Response("09", 0x0400),
|
||||
fake_hidpp.Response("09", 0x0410),
|
||||
fake_hidpp.Response("08", 0x0420, "08"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.DualPlatform, 0, 1),
|
||||
hidpp.Response("00", 0x0400),
|
||||
hidpp.Response("01", 0x0420, "01"),
|
||||
fake_hidpp.Response("00", 0x0400),
|
||||
fake_hidpp.Response("01", 0x0420, "01"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.MKeyLEDs, {1: False, 2: False, 4: False}, {1: False, 2: True, 4: True}),
|
||||
hidpp.Response("03", 0x0400),
|
||||
hidpp.Response("06", 0x0410, "06"),
|
||||
fake_hidpp.Response("03", 0x0400),
|
||||
fake_hidpp.Response("06", 0x0410, "06"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.MRKeyLED, False, True),
|
||||
hidpp.Response("01", 0x0400, "01"),
|
||||
fake_hidpp.Response("01", 0x0400, "01"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.Sidetone, 5, 0xA),
|
||||
hidpp.Response("05", 0x0400),
|
||||
hidpp.Response("0A", 0x0410, "0A"),
|
||||
fake_hidpp.Response("05", 0x0400),
|
||||
fake_hidpp.Response("0A", 0x0410, "0A"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.ADCPower, 5, 0xA),
|
||||
hidpp.Response("05", 0x0410),
|
||||
hidpp.Response("0A", 0x0420, "0A"),
|
||||
fake_hidpp.Response("05", 0x0410),
|
||||
fake_hidpp.Response("0A", 0x0420, "0A"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.LEDControl, 0, 1),
|
||||
hidpp.Response("00", 0x0470),
|
||||
hidpp.Response("01", 0x0480, "01"),
|
||||
fake_hidpp.Response("00", 0x0470),
|
||||
fake_hidpp.Response("01", 0x0480, "01"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(
|
||||
|
@ -282,17 +282,17 @@ simple_tests = [
|
|||
hidpp20.LEDEffectSetting(ID=3, intensity=0x50, period=0x100),
|
||||
hidpp20.LEDEffectSetting(ID=3, intensity=0x50, period=0x101),
|
||||
),
|
||||
hidpp.Response("0100000001", 0x0400),
|
||||
hidpp.Response("00000102", 0x0410, "00FF00"),
|
||||
hidpp.Response("0000000300040005", 0x0420, "000000"),
|
||||
hidpp.Response("0001000B00080009", 0x0420, "000100"),
|
||||
hidpp.Response("000000000000010050", 0x04E0, "00"),
|
||||
hidpp.Response("000000000000000101500000", 0x0430, "000000000000000101500000"),
|
||||
fake_hidpp.Response("0100000001", 0x0400),
|
||||
fake_hidpp.Response("00000102", 0x0410, "00FF00"),
|
||||
fake_hidpp.Response("0000000300040005", 0x0420, "000000"),
|
||||
fake_hidpp.Response("0001000B00080009", 0x0420, "000100"),
|
||||
fake_hidpp.Response("000000000000010050", 0x04E0, "00"),
|
||||
fake_hidpp.Response("000000000000000101500000", 0x0430, "000000000000000101500000"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.RGBControl, 0, 1),
|
||||
hidpp.Response("0000", 0x0450),
|
||||
hidpp.Response("010100", 0x0450, "0101"),
|
||||
fake_hidpp.Response("0000", 0x0450),
|
||||
fake_hidpp.Response("010100", 0x0450, "0101"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(
|
||||
|
@ -300,181 +300,181 @@ simple_tests = [
|
|||
hidpp20.LEDEffectSetting(ID=3, intensity=0x50, period=0x100),
|
||||
hidpp20.LEDEffectSetting(ID=2, color=0x505050, speed=0x50),
|
||||
),
|
||||
hidpp.Response("FFFF0100000001", 0x0400, "FFFF00"),
|
||||
hidpp.Response("0000000102", 0x0400, "00FF00"),
|
||||
hidpp.Response("0000000300040005", 0x0400, "000000"),
|
||||
hidpp.Response("0001000200080009", 0x0400, "000100"),
|
||||
hidpp.Response("000000000000010050", 0x04E0, "00"),
|
||||
hidpp.Response("00015050505000000000000001", 0x0410, "00015050505000000000000001"),
|
||||
fake_hidpp.Response("FFFF0100000001", 0x0400, "FFFF00"),
|
||||
fake_hidpp.Response("0000000102", 0x0400, "00FF00"),
|
||||
fake_hidpp.Response("0000000300040005", 0x0400, "000000"),
|
||||
fake_hidpp.Response("0001000200080009", 0x0400, "000100"),
|
||||
fake_hidpp.Response("000000000000010050", 0x04E0, "00"),
|
||||
fake_hidpp.Response("00015050505000000000000001", 0x0410, "00015050505000000000000001"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.RGBEffectSetting, None, hidpp20.LEDEffectSetting(ID=3, intensity=0x60, period=0x101)),
|
||||
hidpp.Response("FFFF0100000001", 0x0400, "FFFF00"),
|
||||
hidpp.Response("0000000102", 0x0400, "00FF00"),
|
||||
hidpp.Response("0000000300040005", 0x0400, "000000"),
|
||||
hidpp.Response("0001000200080009", 0x0400, "000100"),
|
||||
hidpp.Response("00000000000000010160000001", 0x0410, "00000000000000010160000001"),
|
||||
fake_hidpp.Response("FFFF0100000001", 0x0400, "FFFF00"),
|
||||
fake_hidpp.Response("0000000102", 0x0400, "00FF00"),
|
||||
fake_hidpp.Response("0000000300040005", 0x0400, "000000"),
|
||||
fake_hidpp.Response("0001000200080009", 0x0400, "000100"),
|
||||
fake_hidpp.Response("00000000000000010160000001", 0x0410, "00000000000000010160000001"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.RGBEffectSetting, None, hidpp20.LEDEffectSetting(ID=3, intensity=0x60, period=0x101)),
|
||||
hidpp.Response("FF000200020004000000000000000000", 0x0400, "FFFF00"),
|
||||
hidpp.Response("00000002040000000000000000000000", 0x0400, "00FF00"),
|
||||
hidpp.Response("00000000000000000000000000000000", 0x0400, "000000"),
|
||||
hidpp.Response("00010001000000000000000000000000", 0x0400, "000100"),
|
||||
hidpp.Response("00020003C00503E00000000000000000", 0x0400, "000200"),
|
||||
hidpp.Response("0003000AC0011E0B0000000000000000", 0x0400, "000300"),
|
||||
hidpp.Response("01000001070000000000000000000000", 0x0400, "01FF00"),
|
||||
hidpp.Response("01000000000000000000000000000000", 0x0400, "010000"),
|
||||
hidpp.Response("01010001000000000000000000000000", 0x0400, "010100"),
|
||||
hidpp.Response("0102000AC0011E0B0000000000000000", 0x0400, "010200"),
|
||||
hidpp.Response("01030003C00503E00000000000000000", 0x0400, "010300"),
|
||||
hidpp.Response("01040004DCE1001E0000000000000000", 0x0400, "010400"),
|
||||
hidpp.Response("0105000B000000320000000000000000", 0x0400, "010500"),
|
||||
hidpp.Response("0106000C001B02340000000000000000", 0x0400, "010600"),
|
||||
hidpp.Response("00020000000000010160000001", 0x0410, "00020000000000010160000001"),
|
||||
fake_hidpp.Response("FF000200020004000000000000000000", 0x0400, "FFFF00"),
|
||||
fake_hidpp.Response("00000002040000000000000000000000", 0x0400, "00FF00"),
|
||||
fake_hidpp.Response("00000000000000000000000000000000", 0x0400, "000000"),
|
||||
fake_hidpp.Response("00010001000000000000000000000000", 0x0400, "000100"),
|
||||
fake_hidpp.Response("00020003C00503E00000000000000000", 0x0400, "000200"),
|
||||
fake_hidpp.Response("0003000AC0011E0B0000000000000000", 0x0400, "000300"),
|
||||
fake_hidpp.Response("01000001070000000000000000000000", 0x0400, "01FF00"),
|
||||
fake_hidpp.Response("01000000000000000000000000000000", 0x0400, "010000"),
|
||||
fake_hidpp.Response("01010001000000000000000000000000", 0x0400, "010100"),
|
||||
fake_hidpp.Response("0102000AC0011E0B0000000000000000", 0x0400, "010200"),
|
||||
fake_hidpp.Response("01030003C00503E00000000000000000", 0x0400, "010300"),
|
||||
fake_hidpp.Response("01040004DCE1001E0000000000000000", 0x0400, "010400"),
|
||||
fake_hidpp.Response("0105000B000000320000000000000000", 0x0400, "010500"),
|
||||
fake_hidpp.Response("0106000C001B02340000000000000000", 0x0400, "010600"),
|
||||
fake_hidpp.Response("00020000000000010160000001", 0x0410, "00020000000000010160000001"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.Backlight2, 0xFF, 0x00),
|
||||
common.NamedInts(Disabled=0xFF, Enabled=0x00),
|
||||
hidpp.Response("000201000000000000000000", 0x0400),
|
||||
hidpp.Response("010201", 0x0410, "0102FF00000000000000"),
|
||||
fake_hidpp.Response("000201000000000000000000", 0x0400),
|
||||
fake_hidpp.Response("010201", 0x0410, "0102FF00000000000000"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.Backlight2, 0x03, 0xFF),
|
||||
common.NamedInts(Disabled=0xFF, Automatic=0x01, Manual=0x03),
|
||||
hidpp.Response("011838000000000000000000", 0x0400),
|
||||
hidpp.Response("001801", 0x0410, "0018FF00000000000000"),
|
||||
fake_hidpp.Response("011838000000000000000000", 0x0400),
|
||||
fake_hidpp.Response("001801", 0x0410, "0018FF00000000000000"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.Backlight2Level, 0, 3, version=0x03),
|
||||
[0, 4],
|
||||
hidpp.Response("011830000000000000000000", 0x0400),
|
||||
hidpp.Response("05", 0x0420),
|
||||
hidpp.Response("01180103000000000000", 0x0410, "0118FF03000000000000"),
|
||||
fake_hidpp.Response("011830000000000000000000", 0x0400),
|
||||
fake_hidpp.Response("05", 0x0420),
|
||||
fake_hidpp.Response("01180103000000000000", 0x0410, "0118FF03000000000000"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.Backlight2Level, 0, 2, version=0x03),
|
||||
[0, 4],
|
||||
hidpp.Response("011830000000000000000000", 0x0400),
|
||||
hidpp.Response("05", 0x0420),
|
||||
hidpp.Response("01180102000000000000", 0x0410, "0118FF02000000000000"),
|
||||
fake_hidpp.Response("011830000000000000000000", 0x0400),
|
||||
fake_hidpp.Response("05", 0x0420),
|
||||
fake_hidpp.Response("01180102000000000000", 0x0410, "0118FF02000000000000"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.OnboardProfiles, 0, 1, offset=0x0C),
|
||||
common.NamedInts(**{"Disabled": 0, "Profile 1": 1, "Profile 2": 2}),
|
||||
hidpp.Response("01030001010101000101", 0x0C00),
|
||||
hidpp.Response("00010100000201FFFFFFFFFFFFFFFFFF", 0x0C50, "00000000"),
|
||||
hidpp.Response("000201FFFFFFFFFFFFFFFFFFFFFFFFFF", 0x0C50, "00000004"),
|
||||
hidpp.Response("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 0x0C50, "00000008"),
|
||||
hidpp.Response("02", 0x0C20),
|
||||
hidpp.Response("01", 0x0C10, "01"),
|
||||
hidpp.Response("0001", 0x0C30, "0001"),
|
||||
fake_hidpp.Response("01030001010101000101", 0x0C00),
|
||||
fake_hidpp.Response("00010100000201FFFFFFFFFFFFFFFFFF", 0x0C50, "00000000"),
|
||||
fake_hidpp.Response("000201FFFFFFFFFFFFFFFFFFFFFFFFFF", 0x0C50, "00000004"),
|
||||
fake_hidpp.Response("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 0x0C50, "00000008"),
|
||||
fake_hidpp.Response("02", 0x0C20),
|
||||
fake_hidpp.Response("01", 0x0C10, "01"),
|
||||
fake_hidpp.Response("0001", 0x0C30, "0001"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.OnboardProfiles, 1, 0, offset=0x0C),
|
||||
common.NamedInts(**{"Disabled": 0, "Profile 1": 1, "Profile 2": 2}),
|
||||
hidpp.Response("01030001010101000101", 0x0C00),
|
||||
hidpp.Response("00010100000201FFFFFFFFFFFFFFFFFF", 0x0C50, "00000000"),
|
||||
hidpp.Response("000201FFFFFFFFFFFFFFFFFFFFFFFFFF", 0x0C50, "00000004"),
|
||||
hidpp.Response("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 0x0C50, "00000008"),
|
||||
hidpp.Response("01", 0x0C20),
|
||||
hidpp.Response("0001", 0x0C40),
|
||||
hidpp.Response("02", 0x0C10, "02"),
|
||||
fake_hidpp.Response("01030001010101000101", 0x0C00),
|
||||
fake_hidpp.Response("00010100000201FFFFFFFFFFFFFFFFFF", 0x0C50, "00000000"),
|
||||
fake_hidpp.Response("000201FFFFFFFFFFFFFFFFFFFFFFFFFF", 0x0C50, "00000004"),
|
||||
fake_hidpp.Response("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 0x0C50, "00000008"),
|
||||
fake_hidpp.Response("01", 0x0C20),
|
||||
fake_hidpp.Response("0001", 0x0C40),
|
||||
fake_hidpp.Response("02", 0x0C10, "02"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.ReportRate, 1, 5, offset=0x0C),
|
||||
common.NamedInts(**{"1ms": 1, "2ms": 2, "5ms": 5, "6ms": 6}),
|
||||
hidpp.Response("33", 0x0C00),
|
||||
hidpp.Response("01", 0x0C10),
|
||||
hidpp.Response("05", 0x0C20, "05"),
|
||||
fake_hidpp.Response("33", 0x0C00),
|
||||
fake_hidpp.Response("01", 0x0C10),
|
||||
fake_hidpp.Response("05", 0x0C20, "05"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.ExtendedReportRate, 1, 5, offset=0x0C),
|
||||
common.NamedInts(**{"8ms": 0, "4ms": 1, "500us": 4, "250us": 5}),
|
||||
hidpp.Response("33", 0x0C10),
|
||||
hidpp.Response("01", 0x0C20),
|
||||
hidpp.Response("05", 0x0C30, "05"),
|
||||
fake_hidpp.Response("33", 0x0C10),
|
||||
fake_hidpp.Response("01", 0x0C20),
|
||||
fake_hidpp.Response("05", 0x0C30, "05"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.AdjustableDpi, 800, 400, version=0x03),
|
||||
common.NamedInts.list([400, 800, 1600]),
|
||||
hidpp.Response("000190032006400000", 0x0410, "000000"),
|
||||
hidpp.Response("000320", 0x0420),
|
||||
hidpp.Response("000190", 0x0430, "000190"),
|
||||
fake_hidpp.Response("000190032006400000", 0x0410, "000000"),
|
||||
fake_hidpp.Response("000320", 0x0420),
|
||||
fake_hidpp.Response("000190", 0x0430, "000190"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.AdjustableDpi, 256, 512, version=0x03),
|
||||
common.NamedInts.list([256, 512]),
|
||||
hidpp.Response("000100e10002000000", 0x0410, "000000"),
|
||||
hidpp.Response("000100", 0x0420),
|
||||
hidpp.Response("000200", 0x0430, "000200"),
|
||||
fake_hidpp.Response("000100e10002000000", 0x0410, "000000"),
|
||||
fake_hidpp.Response("000100", 0x0420),
|
||||
fake_hidpp.Response("000200", 0x0430, "000200"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.AdjustableDpi, 400, 800, version=0x03),
|
||||
common.NamedInts.list([400, 800, 1200, 1600]),
|
||||
hidpp.Response("000190E19006400000000000000000", 0x0410, "000000"),
|
||||
hidpp.Response("000190", 0x0420),
|
||||
hidpp.Response("000320", 0x0430, "000320"),
|
||||
fake_hidpp.Response("000190E19006400000000000000000", 0x0410, "000000"),
|
||||
fake_hidpp.Response("000190", 0x0420),
|
||||
fake_hidpp.Response("000320", 0x0430, "000320"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.Multiplatform, 0, 1),
|
||||
common.NamedInts(**{"MacOS 0.1-0.5": 0, "iOS 0.1-0.7": 1, "Linux 0.2-0.9": 2, "Windows 0.3-0.9": 3}),
|
||||
hidpp.Response("020004000001", 0x0400),
|
||||
hidpp.Response("00FF200000010005", 0x0410, "00"),
|
||||
hidpp.Response("01FF400000010007", 0x0410, "01"),
|
||||
hidpp.Response("02FF040000020009", 0x0410, "02"),
|
||||
hidpp.Response("03FF010000030009", 0x0410, "03"),
|
||||
hidpp.Response("FF01", 0x0430, "FF01"),
|
||||
fake_hidpp.Response("020004000001", 0x0400),
|
||||
fake_hidpp.Response("00FF200000010005", 0x0410, "00"),
|
||||
fake_hidpp.Response("01FF400000010007", 0x0410, "01"),
|
||||
fake_hidpp.Response("02FF040000020009", 0x0410, "02"),
|
||||
fake_hidpp.Response("03FF010000030009", 0x0410, "03"),
|
||||
fake_hidpp.Response("FF01", 0x0430, "FF01"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.ChangeHost, 1, 0),
|
||||
common.NamedInts(**{"1:ABCDEF": 0, "2:GHIJKL": 1}),
|
||||
hidpp.Response("050003", 0x0000, "1815"), # HOSTS_INFO
|
||||
hidpp.Response("01000200", 0x0500),
|
||||
hidpp.Response("000100000600", 0x0510, "00"),
|
||||
hidpp.Response("000041424344454600", 0x0530, "0000"),
|
||||
hidpp.Response("000100000600", 0x0510, "01"),
|
||||
hidpp.Response("00004748494A4B4C00", 0x0530, "0100"),
|
||||
hidpp.Response("0201", 0x0400),
|
||||
hidpp.Response(True, 0x0410, "00"),
|
||||
fake_hidpp.Response("050003", 0x0000, "1815"), # HOSTS_INFO
|
||||
fake_hidpp.Response("01000200", 0x0500),
|
||||
fake_hidpp.Response("000100000600", 0x0510, "00"),
|
||||
fake_hidpp.Response("000041424344454600", 0x0530, "0000"),
|
||||
fake_hidpp.Response("000100000600", 0x0510, "01"),
|
||||
fake_hidpp.Response("00004748494A4B4C00", 0x0530, "0100"),
|
||||
fake_hidpp.Response("0201", 0x0400),
|
||||
fake_hidpp.Response(True, 0x0410, "00"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.BrightnessControl, 0x10, 0x20),
|
||||
[0, 80],
|
||||
hidpp.Response("00505100000000", 0x0400), # 0 to 80, all acceptable, no separate on/off
|
||||
hidpp.Response("10", 0x0410), # brightness 16
|
||||
hidpp.Response("0020", 0x0420, "0020"), # set brightness 32
|
||||
fake_hidpp.Response("00505100000000", 0x0400), # 0 to 80, all acceptable, no separate on/off
|
||||
fake_hidpp.Response("10", 0x0410), # brightness 16
|
||||
fake_hidpp.Response("0020", 0x0420, "0020"), # set brightness 32
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.BrightnessControl, 0x10, 0x00),
|
||||
[0, 80],
|
||||
hidpp.Response("00505104000000", 0x0400), # 0 to 80, all acceptable, separate on/off
|
||||
hidpp.Response("10", 0x0410), # brightness 16
|
||||
hidpp.Response("01", 0x0430), # on
|
||||
hidpp.Response("00", 0x0440), # set off
|
||||
hidpp.Response("0000", 0x0420, "0000"), # set brightness 0
|
||||
fake_hidpp.Response("00505104000000", 0x0400), # 0 to 80, all acceptable, separate on/off
|
||||
fake_hidpp.Response("10", 0x0410), # brightness 16
|
||||
fake_hidpp.Response("01", 0x0430), # on
|
||||
fake_hidpp.Response("00", 0x0440), # set off
|
||||
fake_hidpp.Response("0000", 0x0420, "0000"), # set brightness 0
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.BrightnessControl, 0x00, 0x20),
|
||||
[0, 80],
|
||||
hidpp.Response("00505104000000", 0x0400), # 0 to 80, all acceptable, separate on/off
|
||||
hidpp.Response("10", 0x0410), # brightness 16
|
||||
hidpp.Response("00", 0x0430), # off
|
||||
hidpp.Response("01", 0x0440), # set on
|
||||
hidpp.Response("0020", 0x0420, "0020"), # set brightness 32
|
||||
fake_hidpp.Response("00505104000000", 0x0400), # 0 to 80, all acceptable, separate on/off
|
||||
fake_hidpp.Response("10", 0x0410), # brightness 16
|
||||
fake_hidpp.Response("00", 0x0430), # off
|
||||
fake_hidpp.Response("01", 0x0440), # set on
|
||||
fake_hidpp.Response("0020", 0x0420, "0020"), # set brightness 32
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.BrightnessControl, 0x20, 0x08),
|
||||
[0, 80],
|
||||
hidpp.Response("00504104001000", 0x0400), # 16 to 80, all acceptable, separate on/off
|
||||
hidpp.Response("20", 0x0410), # brightness 32
|
||||
hidpp.Response("01", 0x0430), # on
|
||||
hidpp.Response("00", 0x0440, "00"), # set off
|
||||
fake_hidpp.Response("00504104001000", 0x0400), # 16 to 80, all acceptable, separate on/off
|
||||
fake_hidpp.Response("20", 0x0410), # brightness 32
|
||||
fake_hidpp.Response("01", 0x0430), # on
|
||||
fake_hidpp.Response("00", 0x0440, "00"), # set off
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.SpeedChange, 0, None, 0), # need to set up all settings to successfully write
|
||||
common.NamedInts(**{"Off": 0, "DPI Change": 0xED}),
|
||||
*hidpp.responses_speedchange,
|
||||
*fake_hidpp.responses_speedchange,
|
||||
),
|
||||
]
|
||||
|
||||
|
@ -488,7 +488,7 @@ def mock_gethostname(mocker):
|
|||
def test_simple_template(test, mocker, mock_gethostname):
|
||||
tst = test.test
|
||||
print("TEST", tst.sclass.feature)
|
||||
device = hidpp.Device(responses=test.responses, feature=tst.sclass.feature, offset=tst.offset, version=tst.version)
|
||||
device = fake_hidpp.Device(responses=test.responses, feature=tst.sclass.feature, offset=tst.offset, version=tst.version)
|
||||
spy_request = mocker.spy(device, "request")
|
||||
|
||||
setting = settings_templates.check_feature(device, tst.sclass)
|
||||
|
@ -510,20 +510,20 @@ def test_simple_template(test, mocker, mock_gethostname):
|
|||
write_value = setting.write(tst.write_value) if tst.write_value is not None else None
|
||||
assert write_value == tst.write_value
|
||||
|
||||
hidpp.match_requests(tst.matched_calls, test.responses, spy_request.call_args_list)
|
||||
fake_hidpp.match_requests(tst.matched_calls, test.responses, spy_request.call_args_list)
|
||||
|
||||
|
||||
responses_reprog_controls = [
|
||||
hidpp.Response("03", 0x0500),
|
||||
hidpp.Response("00500038010001010400000000000000", 0x0510, "00"), # left button
|
||||
hidpp.Response("00510039010001010400000000000000", 0x0510, "01"), # right button
|
||||
hidpp.Response("00C4009D310003070500000000000000", 0x0510, "02"), # smart shift
|
||||
hidpp.Response("00500000000000000000000000000000", 0x0520, "0050"), # left button current
|
||||
hidpp.Response("00510000500000000000000000000000", 0x0520, "0051"), # right button current
|
||||
hidpp.Response("00C40000000000000000000000000000", 0x0520, "00C4"), # smart shift current
|
||||
hidpp.Response("00500005000000000000000000000000", 0x0530, "0050000050"), # left button write
|
||||
hidpp.Response("00510005000000000000000000000000", 0x0530, "0051000050"), # right button write
|
||||
hidpp.Response("00C4000C400000000000000000000000", 0x0530, "00C40000C4"), # smart shift write
|
||||
fake_hidpp.Response("03", 0x0500),
|
||||
fake_hidpp.Response("00500038010001010400000000000000", 0x0510, "00"), # left button
|
||||
fake_hidpp.Response("00510039010001010400000000000000", 0x0510, "01"), # right button
|
||||
fake_hidpp.Response("00C4009D310003070500000000000000", 0x0510, "02"), # smart shift
|
||||
fake_hidpp.Response("00500000000000000000000000000000", 0x0520, "0050"), # left button current
|
||||
fake_hidpp.Response("00510000500000000000000000000000", 0x0520, "0051"), # right button current
|
||||
fake_hidpp.Response("00C40000000000000000000000000000", 0x0520, "00C4"), # smart shift current
|
||||
fake_hidpp.Response("00500005000000000000000000000000", 0x0530, "0050000050"), # left button write
|
||||
fake_hidpp.Response("00510005000000000000000000000000", 0x0530, "0051000050"), # right button write
|
||||
fake_hidpp.Response("00C4000C400000000000000000000000", 0x0530, "00C40000C4"), # smart shift write
|
||||
]
|
||||
|
||||
key_tests = [
|
||||
|
@ -535,22 +535,22 @@ key_tests = [
|
|||
common.NamedInt(0xC4, "Smart Shift"): common.UnsortedNamedInts(Smart_Shift=0xC4, Left_Click=80, Right_Click=81),
|
||||
},
|
||||
*responses_reprog_controls,
|
||||
hidpp.Response("0051000051", 0x0530, "0051000051"), # right button set write
|
||||
fake_hidpp.Response("0051000051", 0x0530, "0051000051"), # right button set write
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.DivertKeys, {0xC4: 0}, {0xC4: 1}, 2, offset=0x05),
|
||||
{common.NamedInt(0xC4, "Smart Shift"): common.NamedInts(Regular=0, Diverted=1, Mouse_Gestures=2)},
|
||||
*responses_reprog_controls,
|
||||
hidpp.Response("00C4020000", 0x0530, "00C4020000"), # Smart Shift write
|
||||
hidpp.Response("00C4030000", 0x0530, "00C4030000"), # Smart Shift divert write
|
||||
fake_hidpp.Response("00C4020000", 0x0530, "00C4020000"), # Smart Shift write
|
||||
fake_hidpp.Response("00C4030000", 0x0530, "00C4030000"), # Smart Shift divert write
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.DivertKeys, {0xC4: 0}, {0xC4: 2}, 2, offset=0x05),
|
||||
{common.NamedInt(0xC4, "Smart Shift"): common.NamedInts(Regular=0, Diverted=1, Mouse_Gestures=2, Sliding_DPI=3)},
|
||||
*responses_reprog_controls,
|
||||
hidpp.Response("0A0001", 0x0000, "2201"), # ADJUSTABLE_DPI
|
||||
hidpp.Response("00C4300000", 0x0530, "00C4300000"), # Smart Shift write
|
||||
hidpp.Response("00C4030000", 0x0530, "00C4030000"), # Smart Shift divert write
|
||||
fake_hidpp.Response("0A0001", 0x0000, "2201"), # ADJUSTABLE_DPI
|
||||
fake_hidpp.Response("00C4300000", 0x0530, "00C4300000"), # Smart Shift write
|
||||
fake_hidpp.Response("00C4030000", 0x0530, "00C4030000"), # Smart Shift divert write
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.PersistentRemappableAction, {80: 16797696, 81: 16797696}, {0x51: 16797952}, 3),
|
||||
|
@ -558,18 +558,18 @@ key_tests = [
|
|||
common.NamedInt(80, "Left Button"): special_keys.KEYS_KEYS_CONSUMER,
|
||||
common.NamedInt(81, "Right Button"): special_keys.KEYS_KEYS_CONSUMER,
|
||||
},
|
||||
hidpp.Response("050001", 0x0000, "1B04"), # REPROG_CONTROLS_V4
|
||||
fake_hidpp.Response("050001", 0x0000, "1B04"), # REPROG_CONTROLS_V4
|
||||
*responses_reprog_controls,
|
||||
hidpp.Response("0041", 0x0400),
|
||||
hidpp.Response("0201", 0x0410),
|
||||
hidpp.Response("02", 0x0400),
|
||||
hidpp.Response("0050", 0x0420, "00FF"), # left button
|
||||
hidpp.Response("0051", 0x0420, "01FF"), # right button
|
||||
hidpp.Response("0050000100500000", 0x0430, "0050FF"), # left button current
|
||||
hidpp.Response("0051000100500001", 0x0430, "0051FF"), # right button current
|
||||
hidpp.Response("0050FF01005000", 0x0440, "0050FF01005000"), # left button write
|
||||
hidpp.Response("0051FF01005000", 0x0440, "0051FF01005000"), # right button write
|
||||
hidpp.Response("0051FF01005100", 0x0440, "0051FF01005100"), # right button set write
|
||||
fake_hidpp.Response("0041", 0x0400),
|
||||
fake_hidpp.Response("0201", 0x0410),
|
||||
fake_hidpp.Response("02", 0x0400),
|
||||
fake_hidpp.Response("0050", 0x0420, "00FF"), # left button
|
||||
fake_hidpp.Response("0051", 0x0420, "01FF"), # right button
|
||||
fake_hidpp.Response("0050000100500000", 0x0430, "0050FF"), # left button current
|
||||
fake_hidpp.Response("0051000100500001", 0x0430, "0051FF"), # right button current
|
||||
fake_hidpp.Response("0050FF01005000", 0x0440, "0050FF01005000"), # left button write
|
||||
fake_hidpp.Response("0051FF01005000", 0x0440, "0051FF01005000"), # right button write
|
||||
fake_hidpp.Response("0051FF01005100", 0x0440, "0051FF01005100"), # right button set write
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(
|
||||
|
@ -591,11 +591,11 @@ key_tests = [
|
|||
{45: True},
|
||||
4,
|
||||
),
|
||||
*hidpp.responses_gestures,
|
||||
hidpp.Response("0001FF6F", 0x0420, "0001FF6F"), # write
|
||||
hidpp.Response("01010F04", 0x0420, "01010F04"),
|
||||
hidpp.Response("0001FF7F", 0x0420, "0001FF7F"), # write 45
|
||||
hidpp.Response("01010F04", 0x0420, "01010F04"),
|
||||
*fake_hidpp.responses_gestures,
|
||||
fake_hidpp.Response("0001FF6F", 0x0420, "0001FF6F"), # write
|
||||
fake_hidpp.Response("01010F04", 0x0420, "01010F04"),
|
||||
fake_hidpp.Response("0001FF7F", 0x0420, "0001FF7F"), # write 45
|
||||
fake_hidpp.Response("01010F04", 0x0420, "01010F04"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(
|
||||
|
@ -604,26 +604,26 @@ key_tests = [
|
|||
{44: True},
|
||||
4,
|
||||
),
|
||||
*hidpp.responses_gestures,
|
||||
hidpp.Response("0001FF00", 0x0440, "0001FF00"), # write
|
||||
hidpp.Response("01010300", 0x0440, "01010300"),
|
||||
hidpp.Response("0001FF08", 0x0440, "0001FF08"), # write 44
|
||||
hidpp.Response("01010300", 0x0440, "01010300"),
|
||||
*fake_hidpp.responses_gestures,
|
||||
fake_hidpp.Response("0001FF00", 0x0440, "0001FF00"), # write
|
||||
fake_hidpp.Response("01010300", 0x0440, "01010300"),
|
||||
fake_hidpp.Response("0001FF08", 0x0440, "0001FF08"), # write 44
|
||||
fake_hidpp.Response("01010300", 0x0440, "01010300"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.Gesture2Params, {4: {"scale": 256}}, {4: {"scale": 128}}, 2),
|
||||
*hidpp.responses_gestures,
|
||||
hidpp.Response("000100FF000000000000000000000000", 0x0480, "000100FF"),
|
||||
hidpp.Response("000080FF000000000000000000000000", 0x0480, "000080FF"),
|
||||
*fake_hidpp.responses_gestures,
|
||||
fake_hidpp.Response("000100FF000000000000000000000000", 0x0480, "000100FF"),
|
||||
fake_hidpp.Response("000080FF000000000000000000000000", 0x0480, "000080FF"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.Equalizer, {0: -0x20, 1: 0x10}, {1: 0x18}, 2),
|
||||
[-32, 32],
|
||||
hidpp.Response("0220000000", 0x0400),
|
||||
hidpp.Response("0000800100000000000000", 0x0410, "00"),
|
||||
hidpp.Response("E010", 0x0420, "00"),
|
||||
hidpp.Response("E010", 0x0430, "02E010"),
|
||||
hidpp.Response("E018", 0x0430, "02E018"),
|
||||
fake_hidpp.Response("0220000000", 0x0400),
|
||||
fake_hidpp.Response("0000800100000000000000", 0x0410, "00"),
|
||||
fake_hidpp.Response("E010", 0x0420, "00"),
|
||||
fake_hidpp.Response("E010", 0x0430, "02E010"),
|
||||
fake_hidpp.Response("E018", 0x0430, "02E018"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.PerKeyLighting, {1: -1, 2: -1, 9: -1, 10: -1, 113: -1}, {2: 0xFF0000}, 4, 4, 0, 1),
|
||||
|
@ -634,13 +634,13 @@ key_tests = [
|
|||
common.NamedInt(10, "J"): special_keys.COLORSPLUS,
|
||||
common.NamedInt(113, "KEY 113"): special_keys.COLORSPLUS,
|
||||
},
|
||||
hidpp.Response("00000606000000000000000000000000", 0x0400, "0000"), # first group of keys
|
||||
hidpp.Response("00000200000000000000000000000000", 0x0400, "0001"), # second group of keys
|
||||
hidpp.Response("00000000000000000000000000000000", 0x0400, "0002"), # last group of keys
|
||||
hidpp.Response("02FF0000", 0x0410, "02FF0000"), # write one value
|
||||
hidpp.Response("00", 0x0470, "00"), # finish
|
||||
hidpp.Response("02FF0000", 0x0410, "02FF0000"), # write one value
|
||||
hidpp.Response("00", 0x0470, "00"), # finish
|
||||
fake_hidpp.Response("00000606000000000000000000000000", 0x0400, "0000"), # first group of keys
|
||||
fake_hidpp.Response("00000200000000000000000000000000", 0x0400, "0001"), # second group of keys
|
||||
fake_hidpp.Response("00000000000000000000000000000000", 0x0400, "0002"), # last group of keys
|
||||
fake_hidpp.Response("02FF0000", 0x0410, "02FF0000"), # write one value
|
||||
fake_hidpp.Response("00", 0x0470, "00"), # finish
|
||||
fake_hidpp.Response("02FF0000", 0x0410, "02FF0000"), # write one value
|
||||
fake_hidpp.Response("00", 0x0470, "00"), # finish
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(
|
||||
|
@ -659,17 +659,17 @@ key_tests = [
|
|||
common.NamedInt(10, "J"): special_keys.COLORSPLUS,
|
||||
common.NamedInt(113, "KEY 113"): special_keys.COLORSPLUS,
|
||||
},
|
||||
hidpp.Response("00000606000000000000000000000000", 0x0400, "0000"), # first group of keys
|
||||
hidpp.Response("00000200000000000000000000000000", 0x0400, "0001"), # second group of keys
|
||||
hidpp.Response("00000000000000000000000000000000", 0x0400, "0002"), # last group of keys
|
||||
hidpp.Response("02FF0000", 0x0410, "02FF0000"), # write one value
|
||||
hidpp.Response("00", 0x0470, "00"), # finish
|
||||
hidpp.Response("09FF0000", 0x0410, "09FF0000"), # write one value
|
||||
hidpp.Response("00", 0x0470, "00"), # finish
|
||||
hidpp.Response("0AFF0000", 0x0410, "0AFF0000"), # write one value
|
||||
hidpp.Response("00", 0x0470, "00"), # finish
|
||||
hidpp.Response("02FF000009FF00000AFF0000", 0x0410, "02FF000009FF00000AFF0000"), # write three values
|
||||
hidpp.Response("00", 0x0470, "00"), # finish
|
||||
fake_hidpp.Response("00000606000000000000000000000000", 0x0400, "0000"), # first group of keys
|
||||
fake_hidpp.Response("00000200000000000000000000000000", 0x0400, "0001"), # second group of keys
|
||||
fake_hidpp.Response("00000000000000000000000000000000", 0x0400, "0002"), # last group of keys
|
||||
fake_hidpp.Response("02FF0000", 0x0410, "02FF0000"), # write one value
|
||||
fake_hidpp.Response("00", 0x0470, "00"), # finish
|
||||
fake_hidpp.Response("09FF0000", 0x0410, "09FF0000"), # write one value
|
||||
fake_hidpp.Response("00", 0x0470, "00"), # finish
|
||||
fake_hidpp.Response("0AFF0000", 0x0410, "0AFF0000"), # write one value
|
||||
fake_hidpp.Response("00", 0x0470, "00"), # finish
|
||||
fake_hidpp.Response("02FF000009FF00000AFF0000", 0x0410, "02FF000009FF00000AFF0000"), # write three values
|
||||
fake_hidpp.Response("00", 0x0470, "00"), # finish
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(
|
||||
|
@ -689,33 +689,33 @@ key_tests = [
|
|||
common.NamedInt(113, "KEY 113"): special_keys.COLORSPLUS,
|
||||
common.NamedInt(114, "KEY 114"): special_keys.COLORSPLUS,
|
||||
},
|
||||
hidpp.Response("00000606000000000000000000000000", 0x0400, "0000"), # first group of keys
|
||||
hidpp.Response("00000600000000000000000000000000", 0x0400, "0001"), # second group of keys
|
||||
hidpp.Response("00000000000000000000000000000000", 0x0400, "0002"), # last group of keys
|
||||
hidpp.Response("01FF0000", 0x0410, "01FF0000"), # write one value
|
||||
hidpp.Response("00", 0x0470, "00"), # finish
|
||||
hidpp.Response("02FF0000", 0x0410, "02FF0000"), # write one value
|
||||
hidpp.Response("00", 0x0470, "00"), # finish
|
||||
hidpp.Response("09FF0000", 0x0410, "09FF0000"), # write one value
|
||||
hidpp.Response("00", 0x0470, "00"), # finish
|
||||
hidpp.Response("0AFF0000", 0x0410, "0AFF0000"), # write one value
|
||||
hidpp.Response("00", 0x0470, "00"), # finish
|
||||
hidpp.Response("7100FF00", 0x0410, "7100FF00"), # write one value
|
||||
hidpp.Response("00", 0x0470, "00"), # finish
|
||||
hidpp.Response("72FF0000", 0x0410, "72FF0000"), # write one value
|
||||
hidpp.Response("00", 0x0470, "00"), # finish
|
||||
hidpp.Response("FF00000102090A72", 0x460, "FF00000102090A72"), # write one value for five keys
|
||||
hidpp.Response("7100FF00", 0x0410, "7100FF00"), # write one value
|
||||
hidpp.Response("00", 0x0470, "00"), # finish
|
||||
fake_hidpp.Response("00000606000000000000000000000000", 0x0400, "0000"), # first group of keys
|
||||
fake_hidpp.Response("00000600000000000000000000000000", 0x0400, "0001"), # second group of keys
|
||||
fake_hidpp.Response("00000000000000000000000000000000", 0x0400, "0002"), # last group of keys
|
||||
fake_hidpp.Response("01FF0000", 0x0410, "01FF0000"), # write one value
|
||||
fake_hidpp.Response("00", 0x0470, "00"), # finish
|
||||
fake_hidpp.Response("02FF0000", 0x0410, "02FF0000"), # write one value
|
||||
fake_hidpp.Response("00", 0x0470, "00"), # finish
|
||||
fake_hidpp.Response("09FF0000", 0x0410, "09FF0000"), # write one value
|
||||
fake_hidpp.Response("00", 0x0470, "00"), # finish
|
||||
fake_hidpp.Response("0AFF0000", 0x0410, "0AFF0000"), # write one value
|
||||
fake_hidpp.Response("00", 0x0470, "00"), # finish
|
||||
fake_hidpp.Response("7100FF00", 0x0410, "7100FF00"), # write one value
|
||||
fake_hidpp.Response("00", 0x0470, "00"), # finish
|
||||
fake_hidpp.Response("72FF0000", 0x0410, "72FF0000"), # write one value
|
||||
fake_hidpp.Response("00", 0x0470, "00"), # finish
|
||||
fake_hidpp.Response("FF00000102090A72", 0x460, "FF00000102090A72"), # write one value for five keys
|
||||
fake_hidpp.Response("7100FF00", 0x0410, "7100FF00"), # write one value
|
||||
fake_hidpp.Response("00", 0x0470, "00"), # finish
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.ExtendedAdjustableDpi, {0: 256}, {0: 512}, 2, offset=0x9),
|
||||
{common.NamedInt(0, "X"): common.NamedInts.list([256, 512])},
|
||||
hidpp.Response("000000", 0x0910, "00"), # no y direction, no lod
|
||||
hidpp.Response("0000000100e10002000000", 0x0920, "000000"),
|
||||
hidpp.Response("00010000000000000000", 0x0950),
|
||||
hidpp.Response("000100000000", 0x0960, "000100000000"),
|
||||
hidpp.Response("000200000000", 0x0960, "000200000000"),
|
||||
fake_hidpp.Response("000000", 0x0910, "00"), # no y direction, no lod
|
||||
fake_hidpp.Response("0000000100e10002000000", 0x0920, "000000"),
|
||||
fake_hidpp.Response("00010000000000000000", 0x0950),
|
||||
fake_hidpp.Response("000100000000", 0x0960, "000100000000"),
|
||||
fake_hidpp.Response("000200000000", 0x0960, "000200000000"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.ExtendedAdjustableDpi, {0: 0x64, 1: 0xE4}, {0: 0x164}, 2, offset=0x9),
|
||||
|
@ -723,15 +723,15 @@ key_tests = [
|
|||
common.NamedInt(0, "X"): common.NamedInts.list([0x064, 0x074, 0x084, 0x0A4, 0x0C4, 0x0E4, 0x0124, 0x0164, 0x01C4]),
|
||||
common.NamedInt(1, "Y"): common.NamedInts.list([0x064, 0x074, 0x084, 0x0A4, 0x0C4, 0x0E4, 0x0124, 0x0164]),
|
||||
},
|
||||
hidpp.Response("000001", 0x0910, "00"), # supports y direction, no lod
|
||||
hidpp.Response("0000000064E0100084E02000C4E02000", 0x0920, "000000"),
|
||||
hidpp.Response("000001E4E0400124E0400164E06001C4", 0x0920, "000001"),
|
||||
hidpp.Response("00000000000000000000000000000000", 0x0920, "000002"),
|
||||
hidpp.Response("0000000064E0100084E02000C4E02000", 0x0920, "000100"),
|
||||
hidpp.Response("000001E4E0400124E040016400000000", 0x0920, "000101"),
|
||||
hidpp.Response("000064007400E4007400", 0x0950),
|
||||
hidpp.Response("00006400E400", 0x0960, "00006400E400"),
|
||||
hidpp.Response("00016400E400", 0x0960, "00016400E400"),
|
||||
fake_hidpp.Response("000001", 0x0910, "00"), # supports y direction, no lod
|
||||
fake_hidpp.Response("0000000064E0100084E02000C4E02000", 0x0920, "000000"),
|
||||
fake_hidpp.Response("000001E4E0400124E0400164E06001C4", 0x0920, "000001"),
|
||||
fake_hidpp.Response("00000000000000000000000000000000", 0x0920, "000002"),
|
||||
fake_hidpp.Response("0000000064E0100084E02000C4E02000", 0x0920, "000100"),
|
||||
fake_hidpp.Response("000001E4E0400124E040016400000000", 0x0920, "000101"),
|
||||
fake_hidpp.Response("000064007400E4007400", 0x0950),
|
||||
fake_hidpp.Response("00006400E400", 0x0960, "00006400E400"),
|
||||
fake_hidpp.Response("00016400E400", 0x0960, "00016400E400"),
|
||||
),
|
||||
Setup(
|
||||
FeatureTest(settings_templates.ExtendedAdjustableDpi, {0: 0x64, 1: 0xE4, 2: 1}, {1: 0x164}, 2, offset=0x9),
|
||||
|
@ -740,15 +740,15 @@ key_tests = [
|
|||
common.NamedInt(1, "Y"): common.NamedInts.list([0x064, 0x074, 0x084, 0x0A4, 0x0C4, 0x0E4, 0x0124, 0x0164]),
|
||||
common.NamedInt(2, "LOD"): common.NamedInts(LOW=0, MEDIUM=1, HIGH=2),
|
||||
},
|
||||
hidpp.Response("000003", 0x0910, "00"), # supports y direction and lod
|
||||
hidpp.Response("0000000064E0100084E02000C4E02000", 0x0920, "000000"),
|
||||
hidpp.Response("000001E4E0400124E0400164E06001C4", 0x0920, "000001"),
|
||||
hidpp.Response("00000000000000000000000000000000", 0x0920, "000002"),
|
||||
hidpp.Response("0000000064E0100084E02000C4E02000", 0x0920, "000100"),
|
||||
hidpp.Response("000001E4E0400124E040016400000000", 0x0920, "000101"),
|
||||
hidpp.Response("000064007400E4007401", 0x0950),
|
||||
hidpp.Response("00006400E401", 0x0960, "00006400E401"),
|
||||
hidpp.Response("000064016401", 0x0960, "000064016401"),
|
||||
fake_hidpp.Response("000003", 0x0910, "00"), # supports y direction and lod
|
||||
fake_hidpp.Response("0000000064E0100084E02000C4E02000", 0x0920, "000000"),
|
||||
fake_hidpp.Response("000001E4E0400124E0400164E06001C4", 0x0920, "000001"),
|
||||
fake_hidpp.Response("00000000000000000000000000000000", 0x0920, "000002"),
|
||||
fake_hidpp.Response("0000000064E0100084E02000C4E02000", 0x0920, "000100"),
|
||||
fake_hidpp.Response("000001E4E0400124E040016400000000", 0x0920, "000101"),
|
||||
fake_hidpp.Response("000064007400E4007401", 0x0950),
|
||||
fake_hidpp.Response("00006400E401", 0x0960, "00006400E401"),
|
||||
fake_hidpp.Response("000064016401", 0x0960, "000064016401"),
|
||||
),
|
||||
]
|
||||
|
||||
|
@ -756,7 +756,7 @@ key_tests = [
|
|||
@pytest.mark.parametrize("test", key_tests)
|
||||
def test_key_template(test, mocker):
|
||||
tst = test.test
|
||||
device = hidpp.Device(responses=test.responses, feature=tst.sclass.feature, offset=tst.offset, version=tst.version)
|
||||
device = fake_hidpp.Device(responses=test.responses, feature=tst.sclass.feature, offset=tst.offset, version=tst.version)
|
||||
spy_request = mocker.spy(device, "request")
|
||||
|
||||
print("FEATURE", tst.sclass.feature)
|
||||
|
@ -784,18 +784,18 @@ def test_key_template(test, mocker):
|
|||
if tst.rewrite:
|
||||
write_value = setting.write(value)
|
||||
|
||||
hidpp.match_requests(tst.matched_calls, test.responses, spy_request.call_args_list)
|
||||
fake_hidpp.match_requests(tst.matched_calls, test.responses, spy_request.call_args_list)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"responses, currentSpeed, newSpeed",
|
||||
[
|
||||
(hidpp.responses_speedchange, 100, 200),
|
||||
(hidpp.responses_speedchange, None, 250),
|
||||
(fake_hidpp.responses_speedchange, 100, 200),
|
||||
(fake_hidpp.responses_speedchange, None, 250),
|
||||
],
|
||||
)
|
||||
def test_SpeedChange_action(responses, currentSpeed, newSpeed, mocker):
|
||||
device = hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.POINTER_SPEED)
|
||||
device = fake_hidpp.Device(responses=responses, feature=hidpp20_constants.FEATURE.POINTER_SPEED)
|
||||
spy_setting_callback = mocker.spy(device, "setting_callback")
|
||||
settings_templates.check_feature_settings(device, device.settings) # need to set up all the settings
|
||||
device.persister = {"pointer_speed": currentSpeed, "_speed-change": newSpeed}
|
||||
|
@ -814,7 +814,7 @@ def test_SpeedChange_action(responses, currentSpeed, newSpeed, mocker):
|
|||
@pytest.mark.parametrize("test", simple_tests + key_tests)
|
||||
def test_check_feature_settings(test, mocker):
|
||||
tst = test.test
|
||||
device = hidpp.Device(responses=test.responses, feature=tst.sclass.feature, offset=tst.offset, version=tst.version)
|
||||
device = fake_hidpp.Device(responses=test.responses, feature=tst.sclass.feature, offset=tst.offset, version=tst.version)
|
||||
|
||||
already_known = []
|
||||
setting = settings_templates.check_feature_settings(device, already_known)
|
||||
|
@ -828,14 +828,14 @@ def test_check_feature_settings(test, mocker):
|
|||
[
|
||||
Setup(
|
||||
FeatureTest(settings_templates.K375sFnSwap, False, True, offset=0x06),
|
||||
hidpp.Response("FF0001", 0x0600, "FF"),
|
||||
hidpp.Response("FF0101", 0x0610, "FF01"),
|
||||
fake_hidpp.Response("FF0001", 0x0600, "FF"),
|
||||
fake_hidpp.Response("FF0101", 0x0610, "FF01"),
|
||||
)
|
||||
],
|
||||
)
|
||||
def test_check_feature_setting(test, mocker):
|
||||
tst = test.test
|
||||
device = hidpp.Device(responses=test.responses, feature=tst.sclass.feature, offset=tst.offset, version=tst.version)
|
||||
device = fake_hidpp.Device(responses=test.responses, feature=tst.sclass.feature, offset=tst.offset, version=tst.version)
|
||||
|
||||
setting = settings_templates.check_feature_setting(device, tst.sclass.name)
|
||||
|
||||
|
|
Loading…
Reference in New Issue