identify HID devices also by interface and usage page
This commit is contained in:
parent
8285bc458f
commit
91deea89da
|
@ -263,7 +263,7 @@ class DeviceNotFoundError(Exception):
|
||||||
class DeviceUnpairableError(Exception):
|
class DeviceUnpairableError(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
Device = namedtuple("Device", "path interface_number id_ product_key")
|
Device = namedtuple("Device", "path interface_number id_ product_key usage_page")
|
||||||
DeviceInfo = namedtuple("DeviceInfo", "device label initialized")
|
DeviceInfo = namedtuple("DeviceInfo", "device label initialized")
|
||||||
|
|
||||||
class DeviceMgr(ThreadJob, PrintError):
|
class DeviceMgr(ThreadJob, PrintError):
|
||||||
|
@ -504,12 +504,14 @@ class DeviceMgr(ThreadJob, PrintError):
|
||||||
product_key = (d['vendor_id'], d['product_id'])
|
product_key = (d['vendor_id'], d['product_id'])
|
||||||
if product_key in self.recognised_hardware:
|
if product_key in self.recognised_hardware:
|
||||||
# Older versions of hid don't provide interface_number
|
# Older versions of hid don't provide interface_number
|
||||||
interface_number = d.get('interface_number', 0)
|
interface_number = d.get('interface_number', -1)
|
||||||
serial = d['serial_number']
|
usage_page = d['usage_page']
|
||||||
if len(serial) == 0:
|
id_ = d['serial_number']
|
||||||
serial = d['path']
|
if len(id_) == 0:
|
||||||
|
id_ = d['path']
|
||||||
|
id_ += str(interface_number) + str(usage_page)
|
||||||
devices.append(Device(d['path'], interface_number,
|
devices.append(Device(d['path'], interface_number,
|
||||||
serial, product_key))
|
id_, product_key, usage_page))
|
||||||
|
|
||||||
# Now find out what was disconnected
|
# Now find out what was disconnected
|
||||||
pairs = [(dev.path, dev.id_) for dev in devices]
|
pairs = [(dev.path, dev.id_) for dev in devices]
|
||||||
|
|
Loading…
Reference in New Issue