settings: ignore hidden features
This commit is contained in:
parent
44a647499c
commit
2cb5fa4b97
|
|
@ -1,59 +1,62 @@
|
||||||
Solaar version 1.1.3
|
Solaar version 1.1.14
|
||||||
|
|
||||||
1: PRO X Wireless
|
2: PRO X Wireless
|
||||||
Device path : None
|
Device path : None
|
||||||
WPID : 4093
|
WPID : 4093
|
||||||
Codename : PRO X
|
Codename : PRO X
|
||||||
Kind : mouse
|
Kind : mouse
|
||||||
Protocol : HID++ 4.2
|
Protocol : HID++ 4.2
|
||||||
Polling rate : 8 ms (125Hz)
|
Report Rate : 1ms
|
||||||
Serial number: 42F42E12
|
Serial number: 8B24D1D1
|
||||||
Model ID: 4093C0940000
|
Model ID: 4093C0940000
|
||||||
Unit ID: 42F42E12
|
Unit ID: 8B24D1D1
|
||||||
Bootloader: BL1 25.00.B0013
|
1: BL1 25.01.B0018
|
||||||
Other:
|
3:
|
||||||
Firmware: MPM 25.01.B0018
|
0: MPM 25.01.B0018
|
||||||
Supports 28 HID++ 2.0 features:
|
Supports 28 HID++ 2.0 features:
|
||||||
0: ROOT {0000}
|
0: ROOT {0000} V0
|
||||||
1: FEATURE SET {0001}
|
1: FEATURE SET {0001} V0
|
||||||
2: DEVICE FW VERSION {0003}
|
2: DEVICE FW VERSION {0003} V3
|
||||||
Firmware: Bootloader BL1 25.00.B0013 AB00BE657A82
|
Firmware: 1 BL1 25.01.B0018 AB00FE92436C
|
||||||
Firmware: Other
|
Firmware: 3
|
||||||
Firmware: Firmware MPM 25.01.B0018 4093FE92436C
|
Firmware: 0 MPM 25.01.B0018 4093FE92436C
|
||||||
Unit ID: 42F42E12 Model ID: 4093C0940000 Transport IDs: {'wpid': '4093', 'usbid': 'C094'}
|
Unit ID: 8B24D1D1 Model ID: 4093C0940000 Transport IDs: {'wpid': '4093', 'usbid': 'C094'}
|
||||||
3: DEVICE NAME {0005}
|
3: DEVICE NAME {0005} V0
|
||||||
Name: PRO X Wireless
|
Name: PRO X Wireless
|
||||||
Kind: mouse
|
Kind: mouse
|
||||||
4: WIRELESS DEVICE STATUS {1D4B}
|
4: WIRELESS DEVICE STATUS {1D4B} V0
|
||||||
5: RESET {0020}
|
5: CONFIG CHANGE {0020} V0
|
||||||
6: UNIFIED BATTERY {1004}
|
Configuration: 11000000000000000000000000000000
|
||||||
7: COLOR LED EFFECTS {8070} internal, hidden
|
6: UNIFIED BATTERY {1004} V1
|
||||||
8: ONBOARD PROFILES {8100}
|
Battery: 71%, 0.
|
||||||
Device Mode: Host
|
7: COLOR LED EFFECTS {8070} V4 internal, hidden
|
||||||
Onboard Profiles (saved): Disable
|
LED Control : HID++ error {'number': 2, 'request': 1908, 'error': 5, 'params': b''}
|
||||||
Onboard Profiles : Disable
|
8: ONBOARD PROFILES {8100} V0
|
||||||
9: MOUSE BUTTON SPY {8110}
|
Device Mode: On-Board
|
||||||
10: REPORT RATE {8060}
|
Onboard Profiles (saved): Profile 1
|
||||||
Polling Rate (ms): 1
|
Onboard Profiles : Profile 1
|
||||||
Polling Rate (ms) (saved): 1
|
9: MOUSE BUTTON SPY {8110} V0
|
||||||
Polling Rate (ms) : 1
|
10: REPORT RATE {8060} V0
|
||||||
11: ADJUSTABLE DPI {2201}
|
Report Rate: 1ms
|
||||||
Sensitivity (DPI) (saved): 1000
|
Report Rate (saved): 1ms
|
||||||
Sensitivity (DPI) : 1000
|
Report Rate : 1ms
|
||||||
12: unknown:1500 {1500}
|
11: ADJUSTABLE DPI {2201} V2
|
||||||
13: DEVICE RESET {1802} internal, hidden
|
Sensitivity (DPI) (saved): 800
|
||||||
14: unknown:1803 {1803} internal, hidden
|
Sensitivity (DPI) : 800
|
||||||
15: CONFIG DEVICE PROPS {1806} internal, hidden
|
12: FORCE PAIRING {1500} V0
|
||||||
16: unknown:1811 {1811} internal, hidden
|
13: DEVICE RESET {1802} V0 internal, hidden
|
||||||
17: OOBSTATE {1805} internal, hidden
|
14: unknown:1803 {1803} V0 internal, hidden
|
||||||
18: unknown:1830 {1830} internal, hidden
|
15: CONFIG DEVICE PROPS {1806} V4 internal, hidden
|
||||||
19: unknown:1890 {1890} internal, hidden
|
16: unknown:1811 {1811} V0 internal, hidden
|
||||||
20: unknown:1891 {1891} internal, hidden
|
17: OOBSTATE {1805} V0 internal, hidden
|
||||||
21: unknown:18A1 {18A1} internal, hidden
|
18: unknown:1830 {1830} V0 internal, hidden
|
||||||
22: unknown:1801 {1801} internal, hidden
|
19: unknown:1890 {1890} V5 internal, hidden
|
||||||
23: unknown:18B1 {18B1} internal, hidden
|
20: unknown:1891 {1891} V5 internal, hidden
|
||||||
24: unknown:1E00 {1E00} hidden
|
21: unknown:18A1 {18A1} V0 internal, hidden
|
||||||
25: unknown:1EB0 {1EB0} internal, hidden
|
22: unknown:1801 {1801} V0 internal, hidden
|
||||||
26: unknown:1863 {1863} internal, hidden
|
23: unknown:18B1 {18B1} V0 internal, hidden
|
||||||
27: unknown:1E22 {1E22} internal, hidden
|
24: unknown:1E00 {1E00} V0 hidden
|
||||||
Battery: 76%, discharging.
|
25: unknown:1EB0 {1EB0} V0 internal, hidden
|
||||||
|
26: unknown:1863 {1863} V0 internal, hidden
|
||||||
|
27: unknown:1E22 {1E22} V0 internal, hidden
|
||||||
|
Battery: 71%, 0.
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@ from .hidpp20_constants import DEVICE_KIND
|
||||||
from .hidpp20_constants import ChargeLevel
|
from .hidpp20_constants import ChargeLevel
|
||||||
from .hidpp20_constants import ChargeType
|
from .hidpp20_constants import ChargeType
|
||||||
from .hidpp20_constants import ErrorCode
|
from .hidpp20_constants import ErrorCode
|
||||||
|
from .hidpp20_constants import FeatureFlag
|
||||||
from .hidpp20_constants import GestureId
|
from .hidpp20_constants import GestureId
|
||||||
from .hidpp20_constants import ParamId
|
from .hidpp20_constants import ParamId
|
||||||
from .hidpp20_constants import SupportedFeature
|
from .hidpp20_constants import SupportedFeature
|
||||||
|
|
@ -137,6 +138,7 @@ class FeaturesArray(dict):
|
||||||
self.device = device
|
self.device = device
|
||||||
self.inverse = {}
|
self.inverse = {}
|
||||||
self.version = {}
|
self.version = {}
|
||||||
|
self.flags = {}
|
||||||
self.count = 0
|
self.count = 0
|
||||||
|
|
||||||
def _check(self) -> bool:
|
def _check(self) -> bool:
|
||||||
|
|
@ -183,6 +185,7 @@ class FeaturesArray(dict):
|
||||||
feature = f"unknown:{data:04X}"
|
feature = f"unknown:{data:04X}"
|
||||||
self[feature] = index
|
self[feature] = index
|
||||||
self.version[feature] = response[3]
|
self.version[feature] = response[3]
|
||||||
|
self.flags[feature] = response[2]
|
||||||
return feature
|
return feature
|
||||||
|
|
||||||
def enumerate(self): # return all features and their index, ordered by index
|
def enumerate(self): # return all features and their index, ordered by index
|
||||||
|
|
@ -195,6 +198,15 @@ class FeaturesArray(dict):
|
||||||
if self[feature]:
|
if self[feature]:
|
||||||
return self.version.get(feature, 0)
|
return self.version.get(feature, 0)
|
||||||
|
|
||||||
|
def get_flags(self, feature: NamedInt) -> Optional[int]:
|
||||||
|
if self[feature]:
|
||||||
|
return self.flags.get(feature, 0)
|
||||||
|
|
||||||
|
def get_hidden(self, feature: NamedInt) -> Optional[bool]:
|
||||||
|
if self[feature]:
|
||||||
|
return self.flags.get(feature, 0) & FeatureFlag.INTERNAL
|
||||||
|
return True
|
||||||
|
|
||||||
def __contains__(self, feature: NamedInt) -> bool:
|
def __contains__(self, feature: NamedInt) -> bool:
|
||||||
try:
|
try:
|
||||||
index = self.__getitem__(feature)
|
index = self.__getitem__(feature)
|
||||||
|
|
@ -215,6 +227,7 @@ class FeaturesArray(dict):
|
||||||
index = response[0]
|
index = response[0]
|
||||||
self[feature] = index if index else False
|
self[feature] = index if index else False
|
||||||
self.version[feature] = response[2]
|
self.version[feature] = response[2]
|
||||||
|
self.flags[feature] = response[1]
|
||||||
return index if index else False
|
return index if index else False
|
||||||
|
|
||||||
def __setitem__(self, feature, index):
|
def __setitem__(self, feature, index):
|
||||||
|
|
|
||||||
|
|
@ -1898,6 +1898,8 @@ def check_feature(device, settings_class: SettingsProtocol) -> None | bool | Set
|
||||||
return
|
return
|
||||||
if settings_class.min_version > device.features.get_feature_version(settings_class.feature):
|
if settings_class.min_version > device.features.get_feature_version(settings_class.feature):
|
||||||
return
|
return
|
||||||
|
if device.features.get_hidden(settings_class.feature):
|
||||||
|
return
|
||||||
try:
|
try:
|
||||||
detected = settings_class.build(device)
|
detected = settings_class.build(device)
|
||||||
if logger.isEnabledFor(logging.DEBUG):
|
if logger.isEnabledFor(logging.DEBUG):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue