device: determine device number from protocol for direct-connected devices; add G9 Laser Mouse
This commit is contained in:
parent
862fd9c110
commit
71ac905d76
|
@ -29,7 +29,7 @@ from .hidpp10 import REGISTERS as _R
|
|||
|
||||
_DeviceDescriptor = namedtuple(
|
||||
'_DeviceDescriptor',
|
||||
('name', 'kind', 'wpid', 'codename', 'protocol', 'registers', 'settings', 'persister', 'usbid', 'interface', 'btid')
|
||||
('name', 'kind', 'wpid', 'codename', 'protocol', 'registers', 'settings', 'usbid', 'interface', 'btid')
|
||||
)
|
||||
del namedtuple
|
||||
|
||||
|
@ -45,7 +45,6 @@ def _D(
|
|||
protocol=None,
|
||||
registers=None,
|
||||
settings=None,
|
||||
persister=None,
|
||||
usbid=None,
|
||||
interface=None,
|
||||
btid=None,
|
||||
|
@ -84,7 +83,6 @@ def _D(
|
|||
protocol=protocol,
|
||||
registers=registers,
|
||||
settings=settings,
|
||||
persister=persister,
|
||||
usbid=usbid,
|
||||
interface=interface,
|
||||
btid=btid
|
||||
|
@ -441,6 +439,18 @@ _D('MX Vertical Wireless Mouse', codename='MX Vertical', protocol=4.5, wpid='407
|
|||
_D('Wireless Mouse Pebble M350', protocol=2.0, wpid='4080', codename='Pebble')
|
||||
_D('MX Master 3 Wireless Mouse', codename='MX Master 3', protocol=4.5, wpid='4082', btid=0xb023)
|
||||
_D('PRO X Wireless', kind='mouse', codename='PRO X', wpid='4093', usbid=0xc094)
|
||||
_D(
|
||||
'G9 Laser Mouse',
|
||||
codename='G9',
|
||||
usbid=0xc048,
|
||||
interface=1,
|
||||
protocol=1.0,
|
||||
settings=[
|
||||
_PerformanceMXDpi,
|
||||
_ST.RegisterSmoothScroll,
|
||||
_ST.RegisterSideScroll,
|
||||
]
|
||||
)
|
||||
_D('G402 Gaming Mouse', codename='G402', usbid=0xc07e, interface=1)
|
||||
_D('G900 Chaos Spectrum Gaming Mouse', codename='G900', usbid=0xc081)
|
||||
_D('G403 Gaming Mouse', codename='G403', usbid=0xc082)
|
||||
|
|
|
@ -44,10 +44,7 @@ class Device:
|
|||
|
||||
if receiver:
|
||||
assert number > 0 and number <= receiver.max_devices
|
||||
else:
|
||||
assert number == 0xFF
|
||||
# Device number, 1..6 for unifying devices, 1 otherwise.
|
||||
self.number = number
|
||||
self.number = number # will be None at this point for directly connected devices
|
||||
# 'device active' flag; requires manual management.
|
||||
self.online = None
|
||||
|
||||
|
@ -140,8 +137,10 @@ class Device:
|
|||
self.online = None # a direct connected device might not be online (as reported by user)
|
||||
self.product_id = info.product_id
|
||||
self.bluetooth = info.bus_id == 0x0005
|
||||
self.descriptor = _descriptors.get_btid(self.product_id
|
||||
) if self.bluetooth else _descriptors.get_usbid(self.product_id)
|
||||
self.descriptor = _descriptors.get_btid(self.product_id) if self.bluetooth else \
|
||||
_descriptors.get_usbid(self.product_id)
|
||||
if self.number is None: # for direct-connected devices get 'number' from descriptor protocol else use 0xFF
|
||||
self.number = 0x00 if self.descriptor and self.descriptor.protocol and self.descriptor.protocol < 2.0 else 0xFF
|
||||
|
||||
if self.descriptor:
|
||||
self._name = self.descriptor.name
|
||||
|
@ -458,7 +457,7 @@ class Device:
|
|||
try:
|
||||
handle = _base.open_path(device_info.path)
|
||||
if handle:
|
||||
return Device(None, 0xFF, info=device_info)
|
||||
return Device(None, None, info=device_info)
|
||||
except OSError as e:
|
||||
_log.exception('open %s', device_info)
|
||||
if e.errno == _errno.EACCES:
|
||||
|
|
Loading…
Reference in New Issue