updated descriptors with a few more devices
This commit is contained in:
parent
f54ea27d97
commit
a4f0eab855
|
@ -40,9 +40,6 @@ Solaar, but its supported features are not specified here, I would love to hear
|
||||||
about it.
|
about it.
|
||||||
|
|
||||||
|
|
||||||
Devices marked with an asterisk (*) use a Nano receiver that knows the Unifying
|
|
||||||
protocol, and should be fully supported by Solaar.
|
|
||||||
|
|
||||||
The HID++ column specifies the device's HID++ version.
|
The HID++ column specifies the device's HID++ version.
|
||||||
|
|
||||||
The Battery column specifies if Solaar is able to read the device's battery
|
The Battery column specifies if Solaar is able to read the device's battery
|
||||||
|
@ -56,14 +53,14 @@ You are able to read this feature using solaar-cli, but it is not possible to
|
||||||
assign different keys.
|
assign different keys.
|
||||||
|
|
||||||
|
|
||||||
Keyboards:
|
Keyboards (Unifying):
|
||||||
|
|
||||||
| Device | HID++ | Battery | Other supported features |
|
| Device | HID++ | Battery | Other supported features |
|
||||||
|------------------|-------|---------|-----------------------------------------|
|
|------------------|-------|---------|-----------------------------------------|
|
||||||
| K230 | 2.0 | yes | |
|
| K230 | 2.0 | yes | |
|
||||||
| K270 | | | |
|
| K270 | 1.0 | yes | |
|
||||||
| K340 | | | |
|
| K340 | 1.0 | yes | |
|
||||||
| K350 | | | |
|
| K350 | 1.0 | yes | |
|
||||||
| K360 | 2.0 | yes | FN swap, reprog keys |
|
| K360 | 2.0 | yes | FN swap, reprog keys |
|
||||||
| K400 Touch | 2.0 | yes | |
|
| K400 Touch | 2.0 | yes | |
|
||||||
| K750 Solar | 2.0 | yes | FN swap, Lux reading, light button |
|
| K750 Solar | 2.0 | yes | FN swap, Lux reading, light button |
|
||||||
|
@ -71,50 +68,70 @@ Keyboards:
|
||||||
| MK700 | 1.0 | yes | FN swap, reprog keys |
|
| MK700 | 1.0 | yes | FN swap, reprog keys |
|
||||||
|
|
||||||
|
|
||||||
Mice:
|
Mice (Unifying):
|
||||||
|
|
||||||
| Device | HID++ | Battery | DPI | Other supported features |
|
| Device | HID++ | Battery | DPI | Other supported features |
|
||||||
|------------------|-------|---------|-------|---------------------------------|
|
|------------------|-------|---------|-------|---------------------------------|
|
||||||
| V450 Nano | 1.0 | yes | - | smooth scrolling |
|
|
||||||
| V550 Nano | 1.0 | yes | - | smooth scrolling |
|
|
||||||
| VX Nano | 1.0 | yes | - | smooth scrolling |
|
|
||||||
| M175 * | | yes | | |
|
|
||||||
| M185 * | | yes | | |
|
|
||||||
| M187 * | 2.0 | yes | | |
|
|
||||||
| M215 * | 1.0 | yes | | |
|
|
||||||
| M235 * | | yes | | |
|
|
||||||
| M305 * | 1.0 | yes | | |
|
|
||||||
| M310 * | | yes | | |
|
|
||||||
| M315 * | | yes | | |
|
|
||||||
| M317 | | | | |
|
| M317 | | | | |
|
||||||
| M325 | | | | |
|
| M325 | | | | |
|
||||||
| M345 | 2.0 | yes | - | |
|
| M345 | 2.0 | yes | - | |
|
||||||
| M505 | 1.0 | yes | | |
|
| M350 | 1.0 | yes | | |
|
||||||
|
| M505 | 1.0 | yes | | smooth scrolling |
|
||||||
| M510 | 1.0 | yes | | smooth scrolling |
|
| M510 | 1.0 | yes | | smooth scrolling |
|
||||||
| M515 Couch | 2.0 | yes | - | |
|
| M515 Couch | 2.0 | yes | - | |
|
||||||
| M525 | 2.0 | yes | - | |
|
| M525 | 2.0 | yes | - | |
|
||||||
| M600 Touch | 2.0 | yes | | |
|
| M600 Touch | 2.0 | yes | | |
|
||||||
| M705 Marathon | 1.0 | yes | - | smooth scrolling |
|
| M705 Marathon | 1.0 | yes | - | smooth scrolling |
|
||||||
| T400 Zone Touch | | | | |
|
| T400 Zone Touch | | | | |
|
||||||
| T620 Touch | 2.0 | | | |
|
| T620 Touch | 2.0 | yes | | |
|
||||||
| Performance MX | 1.0 | yes | R/W | |
|
| Performance MX | 1.0 | yes | R/W | |
|
||||||
| Anywhere MX | 1.0 | yes | - | |
|
| Anywhere MX | 1.0 | yes | - | |
|
||||||
| Cube | 2.0 | yes | | |
|
| Cube | 2.0 | yes | | |
|
||||||
|
|
||||||
|
|
||||||
Trackballs:
|
Mice (Nano):
|
||||||
|
|
||||||
|
| Device | HID++ | Battery | DPI | Other supported features |
|
||||||
|
|------------------|-------|---------|-------|---------------------------------|
|
||||||
|
| V450 Nano | 1.0 | yes | - | smooth scrolling |
|
||||||
|
| V550 Nano | 1.0 | yes | - | smooth scrolling |
|
||||||
|
| VX Nano | 1.0 | yes | - | smooth scrolling |
|
||||||
|
| M175 | | yes | | |
|
||||||
|
| M185 | | yes | | |
|
||||||
|
| M187 | 2.0 | yes | | |
|
||||||
|
| M215 | 1.0 | yes | | |
|
||||||
|
| M235 | | yes | | |
|
||||||
|
| M305 | 1.0 | yes | | |
|
||||||
|
| M310 | 1.0 | yes | | |
|
||||||
|
| M315 | | yes | | |
|
||||||
|
|
||||||
|
|
||||||
|
Mice (Mini):
|
||||||
|
|
||||||
|
| Device | HID++ | Battery | DPI | Other supported features |
|
||||||
|
|------------------|-------|---------|-------|---------------------------------|
|
||||||
|
| MX610 | 1.0 | yes | | |
|
||||||
|
| MX610 lefthanded | 1.0 | yes | | |
|
||||||
|
| V400 | 1.0 | yes | | |
|
||||||
|
| V450 | 1.0 | yes | | |
|
||||||
|
| VX Revolution | 1.0 | yes | | |
|
||||||
|
| MX Air | 1.0 | yes | | |
|
||||||
|
| MX Revolution | 1.0 | yes | | |
|
||||||
|
|
||||||
|
|
||||||
|
Trackballs (Unifying):
|
||||||
|
|
||||||
| Device | HID++ | Battery | DPI | Other supported features |
|
| Device | HID++ | Battery | DPI | Other supported features |
|
||||||
|------------------|-------|---------|-------|---------------------------------|
|
|------------------|-------|---------|-------|---------------------------------|
|
||||||
| M570 Trackball | | | | |
|
| M570 Trackball | | | | |
|
||||||
|
|
||||||
|
|
||||||
Touchpads:
|
Touchpads (Unifying):
|
||||||
|
|
||||||
| Device | HID++ | Battery | DPI | Other supported features |
|
| Device | HID++ | Battery | DPI | Other supported features |
|
||||||
|------------------|-------|---------|-------|---------------------------------|
|
|------------------|-------|---------|-------|---------------------------------|
|
||||||
| Wireless Touch | 2.0 | | | |
|
| Wireless Touch | 2.0 | yes | | |
|
||||||
| T650 Touchpad | 2.0 | | | |
|
| T650 Touchpad | 2.0 | yes | | |
|
||||||
|
|
||||||
|
|
||||||
Mouse-Keyboard combos:
|
Mouse-Keyboard combos:
|
||||||
|
|
|
@ -20,12 +20,10 @@
|
||||||
from __future__ import absolute_import, division, print_function, unicode_literals
|
from __future__ import absolute_import, division, print_function, unicode_literals
|
||||||
|
|
||||||
|
|
||||||
from . import hidpp10 as _hidpp10
|
|
||||||
from .common import NamedInts as _NamedInts
|
from .common import NamedInts as _NamedInts
|
||||||
|
from .hidpp10 import REGISTERS as _R, DEVICE_KIND as _DK
|
||||||
from .settings_templates import RegisterSettings as _RS, FeatureSettings as _FS
|
from .settings_templates import RegisterSettings as _RS, FeatureSettings as _FS
|
||||||
|
|
||||||
_R = _hidpp10.REGISTERS
|
|
||||||
|
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
@ -41,10 +39,11 @@ def _D(name, codename=None, kind=None, wpid=None, protocol=None, registers=None,
|
||||||
assert name
|
assert name
|
||||||
|
|
||||||
if kind is None:
|
if kind is None:
|
||||||
kind = (_hidpp10.DEVICE_KIND.mouse if 'Mouse' in name
|
kind = (_DK.mouse if 'Mouse' in name
|
||||||
else _hidpp10.DEVICE_KIND.keyboard if 'Keyboard' in name
|
else _DK.keyboard if 'Keyboard' in name
|
||||||
else _hidpp10.DEVICE_KIND.touchpad if 'Touchpad' in name
|
else _DK.numpad if 'Number Pad' in name
|
||||||
else _hidpp10.DEVICE_KIND.trackball if 'Trackball' in name
|
else _DK.touchpad if 'Touchpad' in name
|
||||||
|
else _DK.trackball if 'Trackball' in name
|
||||||
else None)
|
else None)
|
||||||
assert kind is not None, 'descriptor for %s does not have kind set' % name
|
assert kind is not None, 'descriptor for %s does not have kind set' % name
|
||||||
|
|
||||||
|
@ -64,12 +63,12 @@ def _D(name, codename=None, kind=None, wpid=None, protocol=None, registers=None,
|
||||||
if wpid:
|
if wpid:
|
||||||
for w in wpid if isinstance(wpid, tuple) else (wpid, ):
|
for w in wpid if isinstance(wpid, tuple) else (wpid, ):
|
||||||
if protocol > 1.0:
|
if protocol > 1.0:
|
||||||
assert w[0:1] == '4', name + ' has protocol ' + protocol + ', wpid ' + w
|
assert w[0:1] == '4', '%s has protocol %0.1f, wpid %s' % (name, protocol, w)
|
||||||
else:
|
else:
|
||||||
if w[0:1] == '1':
|
if w[0:1] == '1':
|
||||||
assert kind == _hidpp10.DEVICE_KIND.mouse, name + ' has protocol ' + protocol + ', wpid ' + w
|
assert kind == _DK.mouse, '%s has protocol %0.1f, wpid %s' % (name, protocol, w)
|
||||||
elif w[0:1] == '2':
|
elif w[0:1] == '2':
|
||||||
assert kind == _hidpp10.DEVICE_KIND.keyboard, name + ' has protocol ' + protocol + ', wpid ' + w
|
assert kind in (_DK.keyboard, _DK.numpad), '%s has protocol %0.1f, wpid %s' % (name, protocol, w)
|
||||||
|
|
||||||
device_descriptor = _DeviceDescriptor(name=name, kind=kind,
|
device_descriptor = _DeviceDescriptor(name=name, kind=kind,
|
||||||
wpid=wpid, codename=codename, protocol=protocol,
|
wpid=wpid, codename=codename, protocol=protocol,
|
||||||
|
@ -144,10 +143,16 @@ _PERFORMANCE_MX_DPIS = _NamedInts.range(0x81, 0x8F, lambda x: str((x - 0x80) * 1
|
||||||
# Keyboards
|
# Keyboards
|
||||||
|
|
||||||
_D('Wireless Keyboard K230', protocol=2.0, wpid='400D')
|
_D('Wireless Keyboard K230', protocol=2.0, wpid='400D')
|
||||||
_D('Wireless Keyboard K270')
|
_D('Wireless Keyboard K270', protocol=1.0,
|
||||||
|
registers=(_R.battery_status, ),
|
||||||
|
)
|
||||||
_D('Wireless Keyboard MK330')
|
_D('Wireless Keyboard MK330')
|
||||||
_D('Wireless Keyboard K340')
|
_D('Wireless Compact Keyboard K340', protocol=1.0, wpid='2007',
|
||||||
_D('Wireless Keyboard K350', wpid='200A')
|
registers=(_R.battery_status, ),
|
||||||
|
)
|
||||||
|
_D('Wireless Wave Keyboard K350', protocol=1.0, wpid='200A',
|
||||||
|
registers=(_R.battery_status, ),
|
||||||
|
)
|
||||||
_D('Wireless Keyboard K360', protocol=2.0, wpid='4004',
|
_D('Wireless Keyboard K360', protocol=2.0, wpid='4004',
|
||||||
settings=[
|
settings=[
|
||||||
_FS.fn_swap()
|
_FS.fn_swap()
|
||||||
|
@ -158,7 +163,15 @@ _D('Wireless Touch Keyboard K400', protocol=2.0, wpid=('400E', '4024'),
|
||||||
_FS.fn_swap()
|
_FS.fn_swap()
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
_D('Wireless Keyboard MK520')
|
_D('Wireless Keyboard K520', protocol=1.0, wpid='2011',
|
||||||
|
registers=(_R.battery_status, ),
|
||||||
|
settings=[
|
||||||
|
_RS.fn_swap(),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
_D('Number Pad N545', protocol=1.0, wpid='2006',
|
||||||
|
registers=(_R.battery_status, ),
|
||||||
|
)
|
||||||
_D('Wireless Keyboard MK550')
|
_D('Wireless Keyboard MK550')
|
||||||
_D('Wireless Keyboard MK700', protocol=1.0, wpid='2008',
|
_D('Wireless Keyboard MK700', protocol=1.0, wpid='2008',
|
||||||
registers=(_R.battery_status, ),
|
registers=(_R.battery_status, ),
|
||||||
|
@ -192,11 +205,16 @@ _D('Wireless Mouse M305', protocol=1.0, wpid='101F',
|
||||||
_RS.side_scroll(),
|
_RS.side_scroll(),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
_D('Wireless Mouse M310')
|
_D('Wireless Mouse M310', protocol=1.0, wpid='1024',
|
||||||
|
registers=(_R.battery_status, ),
|
||||||
|
)
|
||||||
_D('Wireless Mouse M315')
|
_D('Wireless Mouse M315')
|
||||||
_D('Wireless Mouse M317')
|
_D('Wireless Mouse M317')
|
||||||
_D('Wireless Mouse M325')
|
_D('Wireless Mouse M325')
|
||||||
_D('Wireless Mouse M345', protocol=2.0, wpid='4017')
|
_D('Wireless Mouse M345', protocol=2.0, wpid='4017')
|
||||||
|
_D('Wireless Mouse M350', protocol=1.0, wpid='101C',
|
||||||
|
registers=(_R.battery_charge, ),
|
||||||
|
)
|
||||||
_D('Wireless Mouse M505', codename='M505/B605', protocol=1.0, wpid='101D',
|
_D('Wireless Mouse M505', codename='M505/B605', protocol=1.0, wpid='101D',
|
||||||
registers=(_R.battery_charge, ),
|
registers=(_R.battery_charge, ),
|
||||||
settings=[
|
settings=[
|
||||||
|
@ -223,7 +241,7 @@ _D('Marathon Mouse M705', protocol=1.0, wpid='101B',
|
||||||
)
|
)
|
||||||
_D('Zone Touch Mouse T400')
|
_D('Zone Touch Mouse T400')
|
||||||
_D('Touch Mouse T620', protocol=2.0)
|
_D('Touch Mouse T620', protocol=2.0)
|
||||||
_D('Logitech Cube', kind=_hidpp10.DEVICE_KIND.mouse, protocol=2.0)
|
_D('Logitech Cube', kind=_DK.mouse, protocol=2.0)
|
||||||
_D('Anywhere Mouse MX', codename='Anywhere MX', protocol=1.0, wpid='1017',
|
_D('Anywhere Mouse MX', codename='Anywhere MX', protocol=1.0, wpid='1017',
|
||||||
registers=(_R.battery_charge, ),
|
registers=(_R.battery_charge, ),
|
||||||
settings=[
|
settings=[
|
||||||
|
@ -240,6 +258,13 @@ _D('Performance Mouse MX', codename='Performance MX', protocol=1.0, wpid='101A',
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
_D('G7 Cordless Laser Mouse', codename='G7', protocol=1.0, wpid='1002',
|
||||||
|
registers=(_R.battery_status, ),
|
||||||
|
)
|
||||||
|
_D('G700 Gaming Mouse', codename='G700', protocol=1.0, wpid='1023',
|
||||||
|
registers=(_R.battery_status, ),
|
||||||
|
)
|
||||||
|
|
||||||
# Trackballs
|
# Trackballs
|
||||||
|
|
||||||
_D('Wireless Trackball M570')
|
_D('Wireless Trackball M570')
|
||||||
|
@ -254,7 +279,7 @@ _D('Wireless Touchpad', codename='Wireless Touch', protocol=2.0, wpid='4011')
|
||||||
# A wpid is necessary to properly identify them.
|
# A wpid is necessary to properly identify them.
|
||||||
#
|
#
|
||||||
|
|
||||||
_D('VX Nano Cordless Laser Mouse', codename='VX Nano', protocol=1.0, wpid='100F',
|
_D('VX Nano Cordless Laser Mouse', codename='VX Nano', protocol=1.0, wpid=('100B', '100F'),
|
||||||
registers=(_R.battery_charge, ),
|
registers=(_R.battery_charge, ),
|
||||||
settings=[
|
settings=[
|
||||||
_RS.smooth_scroll(),
|
_RS.smooth_scroll(),
|
||||||
|
@ -271,3 +296,34 @@ _D('V550 Nano Cordless Laser Mouse', codename='V550 Nano', protocol=1.0, wpid='1
|
||||||
_RS.side_scroll(),
|
_RS.side_scroll(),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Mini receiver mice
|
||||||
|
|
||||||
|
_D('MX610 Laser Cordless Mouse', codename='MX610', protocol=1.0, wpid='1001',
|
||||||
|
registers=(_R.battery_status, ),
|
||||||
|
)
|
||||||
|
_D('MX620 Laser Cordless Mouse', codename='MX620', protocol=1.0, wpid=('100A', '1016'),
|
||||||
|
registers=(_R.battery_charge, ),
|
||||||
|
)
|
||||||
|
_D('MX610 Left-Handled Mouse', codename='MX610L', protocol=1.0, wpid='1004',
|
||||||
|
registers=(_R.battery_status, ),
|
||||||
|
)
|
||||||
|
_D('V400 Laser Cordless Mouse', codename='V400', protocol=1.0, wpid='1003',
|
||||||
|
registers=(_R.battery_status, ),
|
||||||
|
)
|
||||||
|
_D('V450 Laser Cordless Mouse', codename='V450', protocol=1.0, wpid='1005',
|
||||||
|
registers=(_R.battery_status, ),
|
||||||
|
)
|
||||||
|
_D('VX Revolution', codename='VX Revolution', kind=_DK.mouse, protocol=1.0, wpid=('1006', '100D'),
|
||||||
|
registers=(_R.battery_charge, ),
|
||||||
|
)
|
||||||
|
_D('MX Air', codename='MX Air', protocol=1.0, kind=_DK.mouse, wpid=('1007', '100E'),
|
||||||
|
registers=(_R.battery_charge, ),
|
||||||
|
)
|
||||||
|
_D('MX Revolution', codename='MX Revolution', protocol=1.0, kind=_DK.mouse, wpid=('1008', '100C'),
|
||||||
|
registers=(_R.battery_charge, ),
|
||||||
|
)
|
||||||
|
|
||||||
|
# Some exotics...
|
||||||
|
|
||||||
|
_D('Fujitsu Sonic Mouse', codename='Sonic', protocol=1.0, wpid='1029')
|
||||||
|
|
Loading…
Reference in New Issue