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.
|
||||
|
||||
|
||||
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 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.
|
||||
|
||||
|
||||
Keyboards:
|
||||
Keyboards (Unifying):
|
||||
|
||||
| Device | HID++ | Battery | Other supported features |
|
||||
|------------------|-------|---------|-----------------------------------------|
|
||||
| K230 | 2.0 | yes | |
|
||||
| K270 | | | |
|
||||
| K340 | | | |
|
||||
| K350 | | | |
|
||||
| K270 | 1.0 | yes | |
|
||||
| K340 | 1.0 | yes | |
|
||||
| K350 | 1.0 | yes | |
|
||||
| K360 | 2.0 | yes | FN swap, reprog keys |
|
||||
| K400 Touch | 2.0 | yes | |
|
||||
| K750 Solar | 2.0 | yes | FN swap, Lux reading, light button |
|
||||
|
@ -71,50 +68,70 @@ Keyboards:
|
|||
| MK700 | 1.0 | yes | FN swap, reprog keys |
|
||||
|
||||
|
||||
Mice:
|
||||
Mice (Unifying):
|
||||
|
||||
| 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 | | | | |
|
||||
| M325 | | | | |
|
||||
| M345 | 2.0 | yes | - | |
|
||||
| M505 | 1.0 | yes | | |
|
||||
| M350 | 1.0 | yes | | |
|
||||
| M505 | 1.0 | yes | | smooth scrolling |
|
||||
| M510 | 1.0 | yes | | smooth scrolling |
|
||||
| M515 Couch | 2.0 | yes | - | |
|
||||
| M525 | 2.0 | yes | - | |
|
||||
| M600 Touch | 2.0 | yes | | |
|
||||
| M705 Marathon | 1.0 | yes | - | smooth scrolling |
|
||||
| T400 Zone Touch | | | | |
|
||||
| T620 Touch | 2.0 | | | |
|
||||
| T620 Touch | 2.0 | yes | | |
|
||||
| Performance MX | 1.0 | yes | R/W | |
|
||||
| Anywhere MX | 1.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 |
|
||||
|------------------|-------|---------|-------|---------------------------------|
|
||||
| M570 Trackball | | | | |
|
||||
|
||||
|
||||
Touchpads:
|
||||
Touchpads (Unifying):
|
||||
|
||||
| Device | HID++ | Battery | DPI | Other supported features |
|
||||
|------------------|-------|---------|-------|---------------------------------|
|
||||
| Wireless Touch | 2.0 | | | |
|
||||
| T650 Touchpad | 2.0 | | | |
|
||||
| Wireless Touch | 2.0 | yes | | |
|
||||
| T650 Touchpad | 2.0 | yes | | |
|
||||
|
||||
|
||||
Mouse-Keyboard combos:
|
||||
|
|
|
@ -20,12 +20,10 @@
|
|||
from __future__ import absolute_import, division, print_function, unicode_literals
|
||||
|
||||
|
||||
from . import hidpp10 as _hidpp10
|
||||
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
|
||||
|
||||
_R = _hidpp10.REGISTERS
|
||||
|
||||
#
|
||||
#
|
||||
#
|
||||
|
@ -41,10 +39,11 @@ def _D(name, codename=None, kind=None, wpid=None, protocol=None, registers=None,
|
|||
assert name
|
||||
|
||||
if kind is None:
|
||||
kind = (_hidpp10.DEVICE_KIND.mouse if 'Mouse' in name
|
||||
else _hidpp10.DEVICE_KIND.keyboard if 'Keyboard' in name
|
||||
else _hidpp10.DEVICE_KIND.touchpad if 'Touchpad' in name
|
||||
else _hidpp10.DEVICE_KIND.trackball if 'Trackball' in name
|
||||
kind = (_DK.mouse if 'Mouse' in name
|
||||
else _DK.keyboard if 'Keyboard' in name
|
||||
else _DK.numpad if 'Number Pad' in name
|
||||
else _DK.touchpad if 'Touchpad' in name
|
||||
else _DK.trackball if 'Trackball' in name
|
||||
else None)
|
||||
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:
|
||||
for w in wpid if isinstance(wpid, tuple) else (wpid, ):
|
||||
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:
|
||||
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':
|
||||
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,
|
||||
wpid=wpid, codename=codename, protocol=protocol,
|
||||
|
@ -144,10 +143,16 @@ _PERFORMANCE_MX_DPIS = _NamedInts.range(0x81, 0x8F, lambda x: str((x - 0x80) * 1
|
|||
# Keyboards
|
||||
|
||||
_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 K340')
|
||||
_D('Wireless Keyboard K350', wpid='200A')
|
||||
_D('Wireless Compact Keyboard K340', protocol=1.0, wpid='2007',
|
||||
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',
|
||||
settings=[
|
||||
_FS.fn_swap()
|
||||
|
@ -158,7 +163,15 @@ _D('Wireless Touch Keyboard K400', protocol=2.0, wpid=('400E', '4024'),
|
|||
_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 MK700', protocol=1.0, wpid='2008',
|
||||
registers=(_R.battery_status, ),
|
||||
|
@ -192,11 +205,16 @@ _D('Wireless Mouse M305', protocol=1.0, wpid='101F',
|
|||
_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 M317')
|
||||
_D('Wireless Mouse M325')
|
||||
_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',
|
||||
registers=(_R.battery_charge, ),
|
||||
settings=[
|
||||
|
@ -223,7 +241,7 @@ _D('Marathon Mouse M705', protocol=1.0, wpid='101B',
|
|||
)
|
||||
_D('Zone Touch Mouse T400')
|
||||
_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',
|
||||
registers=(_R.battery_charge, ),
|
||||
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
|
||||
|
||||
_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.
|
||||
#
|
||||
|
||||
_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, ),
|
||||
settings=[
|
||||
_RS.smooth_scroll(),
|
||||
|
@ -271,3 +296,34 @@ _D('V550 Nano Cordless Laser Mouse', codename='V550 Nano', protocol=1.0, wpid='1
|
|||
_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