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 = namedtuple(
|
||||||
'_DeviceDescriptor',
|
'_DeviceDescriptor',
|
||||||
('name', 'kind', 'wpid', 'codename', 'protocol', 'registers', 'settings', 'persister', 'usbid', 'interface', 'btid')
|
('name', 'kind', 'wpid', 'codename', 'protocol', 'registers', 'settings', 'usbid', 'interface', 'btid')
|
||||||
)
|
)
|
||||||
del namedtuple
|
del namedtuple
|
||||||
|
|
||||||
|
@ -45,7 +45,6 @@ def _D(
|
||||||
protocol=None,
|
protocol=None,
|
||||||
registers=None,
|
registers=None,
|
||||||
settings=None,
|
settings=None,
|
||||||
persister=None,
|
|
||||||
usbid=None,
|
usbid=None,
|
||||||
interface=None,
|
interface=None,
|
||||||
btid=None,
|
btid=None,
|
||||||
|
@ -84,7 +83,6 @@ def _D(
|
||||||
protocol=protocol,
|
protocol=protocol,
|
||||||
registers=registers,
|
registers=registers,
|
||||||
settings=settings,
|
settings=settings,
|
||||||
persister=persister,
|
|
||||||
usbid=usbid,
|
usbid=usbid,
|
||||||
interface=interface,
|
interface=interface,
|
||||||
btid=btid
|
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('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('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('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('G402 Gaming Mouse', codename='G402', usbid=0xc07e, interface=1)
|
||||||
_D('G900 Chaos Spectrum Gaming Mouse', codename='G900', usbid=0xc081)
|
_D('G900 Chaos Spectrum Gaming Mouse', codename='G900', usbid=0xc081)
|
||||||
_D('G403 Gaming Mouse', codename='G403', usbid=0xc082)
|
_D('G403 Gaming Mouse', codename='G403', usbid=0xc082)
|
||||||
|
|
|
@ -44,10 +44,7 @@ class Device:
|
||||||
|
|
||||||
if receiver:
|
if receiver:
|
||||||
assert number > 0 and number <= receiver.max_devices
|
assert number > 0 and number <= receiver.max_devices
|
||||||
else:
|
self.number = number # will be None at this point for directly connected devices
|
||||||
assert number == 0xFF
|
|
||||||
# Device number, 1..6 for unifying devices, 1 otherwise.
|
|
||||||
self.number = number
|
|
||||||
# 'device active' flag; requires manual management.
|
# 'device active' flag; requires manual management.
|
||||||
self.online = None
|
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.online = None # a direct connected device might not be online (as reported by user)
|
||||||
self.product_id = info.product_id
|
self.product_id = info.product_id
|
||||||
self.bluetooth = info.bus_id == 0x0005
|
self.bluetooth = info.bus_id == 0x0005
|
||||||
self.descriptor = _descriptors.get_btid(self.product_id
|
self.descriptor = _descriptors.get_btid(self.product_id) if self.bluetooth else \
|
||||||
) if self.bluetooth else _descriptors.get_usbid(self.product_id)
|
_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:
|
if self.descriptor:
|
||||||
self._name = self.descriptor.name
|
self._name = self.descriptor.name
|
||||||
|
@ -458,7 +457,7 @@ class Device:
|
||||||
try:
|
try:
|
||||||
handle = _base.open_path(device_info.path)
|
handle = _base.open_path(device_info.path)
|
||||||
if handle:
|
if handle:
|
||||||
return Device(None, 0xFF, info=device_info)
|
return Device(None, None, info=device_info)
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
_log.exception('open %s', device_info)
|
_log.exception('open %s', device_info)
|
||||||
if e.errno == _errno.EACCES:
|
if e.errno == _errno.EACCES:
|
||||||
|
|
Loading…
Reference in New Issue