Add basic 0xc534 receiver and M185 mouse support

Fix connection notification protocol for M185
Fixes from review
This commit is contained in:
Alex Cherkayev 2017-02-10 18:51:49 +02:00
parent c36cc506b6
commit db0656967b
7 changed files with 27 additions and 7 deletions

View File

@ -49,7 +49,7 @@ NANO_RECEIVER_C525 = _nano_receiver(0xc525)
NANO_RECEIVER_C526 = _nano_receiver(0xc526)
NANO_RECEIVER_C52e = _nano_receiver(0xc52e)
NANO_RECEIVER_C531 = _nano_receiver(0xc531)
NANO_RECEIVER_C534 = _nano_receiver(0xc534)
del _unifying_receiver, _nano_receiver
@ -67,4 +67,5 @@ ALL = (
NANO_RECEIVER_C526,
NANO_RECEIVER_C52e,
NANO_RECEIVER_C531,
NANO_RECEIVER_C534,
)

View File

@ -213,7 +213,16 @@ _D('Illuminated Living-Room Keyboard K830', protocol=2.0, wpid='4032',
# Mice
_D('Wireless Mouse M175', protocol=2.0, wpid='4008')
_D('Wireless Mouse M185')
_D('Wireless Mouse M185 new', codename='M185n', protocol=4.5, wpid='4054',
settings=[
_FS.lowres_smooth_scroll(),
_FS.pointer_speed(),
])
_D('Wireless Mouse M185 old', codename='M185o', protocol=4.5, wpid='4055',
settings=[
_FS.lowres_smooth_scroll(),
_FS.pointer_speed(),
])
_D('Wireless Mouse M187', protocol=2.0, wpid='4019')
_D('Wireless Mouse M215', protocol=1.0, wpid='1020')
_D('Wireless Mouse M235')

View File

@ -156,6 +156,7 @@ def _process_hidpp10_notification(device, status, n):
if n.sub_id == 0x41:
protocol_name = ('unifying (eQuad DJ)' if n.address == 0x04
else 'eQuad' if n.address == 0x03
else 'M185' if n.address == 0x0A
else None)
if protocol_name:
if _log.isEnabledFor(_DEBUG):

View File

@ -336,10 +336,14 @@ class Receiver(object):
# read the serial immediately, so we can find out max_devices
# this will tell us if it's a Unifying or Nano receiver
serial_reply = self.read_register(_R.receiver_info, 0x03)
assert serial_reply
self.serial = _strhex(serial_reply[1:5])
self.max_devices = ord(serial_reply[6:7])
if self.product_id != 'c534':
serial_reply = self.read_register(_R.receiver_info, 0x03)
assert serial_reply
self.serial = _strhex(serial_reply[1:5])
self.max_devices = ord(serial_reply[6:7])
else:
self.serial = 0
self.max_devices = 6
if self.max_devices == 6:
self.name = 'Unifying Receiver'

View File

@ -335,8 +335,11 @@ TASK = _NamedInts(
ShowUI=0x0092,
)
TASK._fallback = lambda x: 'unknown:%04X' % x
# hidpp 4.5 info from https://lekensteyn.nl/files/logitech/x1b04_specialkeysmsebuttons.html
KEY_FLAG = _NamedInts(
virtual=0x80,
persistently_divertable=0x40,
divertable=0x20,
reprogrammable=0x10,
FN_sensitive=0x08,
nonstandard=0x04,

View File

@ -32,6 +32,7 @@ ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c518", GOTO="solaar_apply"
ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c51a", GOTO="solaar_apply"
ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c521", GOTO="solaar_apply"
ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c525", GOTO="solaar_apply"
ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c534", GOTO="solaar_apply"
GOTO="solaar_end"

View File

@ -32,6 +32,7 @@ ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c518", GOTO="solaar_apply"
ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c51a", GOTO="solaar_apply"
ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c521", GOTO="solaar_apply"
ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c525", GOTO="solaar_apply"
ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c534", GOTO="solaar_apply"
GOTO="solaar_end"