Solaar/docs/devices
Ken Sanislo 12aabf029b
centurion: support PRO X 2 LIGHTSPEED headphones Centurion features (#3150)
* Add Centurion transport and PRO X 2 LIGHTSPEED headset support

Adds support for the Logitech PRO X 2 LIGHTSPEED Gaming Headset (PID 0x0AF7)
which uses the Centurion transport protocol (report ID 0x51 on USB usage page
0xFFA0) instead of standard HID++ report IDs.

Changes:
- HID enumeration: detect Centurion devices via report descriptor parsing
  (usage page 0xFFA0, report ID 0x51, 63-byte frames)
- Centurion transport: wrap/unwrap HID++ 2.0 frames in Centurion framing
  for write, read, and ping operations
- Feature discovery: enumerate features individually on Centurion devices
  (different response format: [remaining_count, feat_hi, feat_lo])
- Device descriptor for PRO X 2 LIGHTSPEED Gaming Headset
- New feature enum entries for Centurion-era headset features (0x06xx)
- CenturionRawRW class for write-only headset settings controlled via
  raw Centurion commands reverse-engineered from HeadsetControl
- HeadsetSidetone setting (0-100 range, persisted locally)

Known limitations:
- Only sidetone control is implemented; other features need RE work
- Settings are write-only (no read-back from device)
- Headset features (0x06xx) not discoverable via IRoot; registered manually

* Remove static PRO X 2 descriptor; fully probe Centurion devices at runtime

Replace the hardcoded descriptor entry with dynamic discovery of all device
properties via the Centurion protocol. The headset name, kind, serial,
firmware, and battery are now probed at runtime — matching how the device
actually presents itself rather than relying on static data.

Key changes:
- Discover sub-device features via CentPPBridge and route requests through
  the bridge automatically
- Infer device kind from feature IDs (0x06xx = headset) for both wireless
  and direct USB connections
- Read device name from USB product string with protocol probe fallback
- Parse bridge error responses (sub_feat_idx=0xFF) instead of timing out
- Handle unknown HID++ error codes gracefully in base.py
- Fix firmware deduplication for Centurion parent devices
- Prefer sub-device serial/firmware over parent (non-printable) values
- Add Centurion-aware display in solaar show with parent/sub-device sections
- Support both wireless (0AF7 dongle) and direct USB (0AF8) connections

* Display Centurion dongle as receiver with headset as child device

- Add CenturionReceiver class that provides the Receiver UI interface so
  the dongle appears as a parent with the headset indented underneath,
  matching how Lightspeed/Unifying receivers display
- Independently probe dongle features via feature_request() on the
  CenturionReceiver, separate from headset features via bridge
- Fix bridge notification dispatch: remove incorrect sub_cpl=0xFF filter
  that was silently dropping all battery and other notifications
- Fix battery status decoding: charging status is at byte 2 (not byte 1)
  of the CENTURION_BATTERY_SOC response
- Detect wired vs wireless by checking for CentPPBridge in discovered
  features; wired headsets fall back to standalone Device
- Name the dongle "Centurion Receiver" to distinguish from the headset
- Filter unprintable dongle serial (control characters 0x14-0x1F)
- Update CLI show output with proper receiver/child hierarchy and spacing

* Fix headset setting validators and code formatting

- Add signed int8 support to RangeValidator for HeadsetMicGain (0x0611)
- Make HeadsetSidetone version-aware: v1 uses 2-byte skip, v2+ uses
  3-byte skip with 0xFF separator per protocol spec
- Fix ruff formatting in device.py, listener.py, udev_impl.py
- Update CenturionReceiver test for renamed receiver

* Use ConnectionStateChangedEvent for headset online/offline detection

Replace ad-hoc heuristics with proper bridge event function dispatch:
- Function 0 (ConnectionStateChangedEvent): parse sub-device list length
  to determine connect (len>0) vs disconnect (len=0)
- Function 1 (MessageEvent): fallback online detection if headset sends
  a message while marked offline (handles cold-start power-on)

Remove CPL sub_id>=0x80 fallback in listener that misidentified HID++
error replies as disconnect events. Skip HID++ 1.0
set_configuration_pending_flags for CenturionReceiver (not supported).

Also adds OnboardEQ (0x0636) support, bridge multi-fragment sends,
bridge-based headset ping probe, and CLI offline display.

* Update PRO X 2 LIGHTSPEED device doc with current solaar show output

* Fix Centurion protocol version display (1.16 not 2.6)

The HID++ ping math (major + minor/10.0) produced a bogus "2.6" for
Centurion devices whose ProtocolCapabilities returns major=1, minor=0x10.
Store the raw (major, minor) bytes from the ping response and display
them correctly as "Centurion 1.16" in both CLI and GUI.

* Add OnboardEQ (0x0636) support for Centurion headsets

Implement host-computed biquad EQ coefficient generation and multi-fragment
bridge writes for the PRO X 2 LIGHTSPEED headset's 5-band parametric EQ.

The coefficient algorithm uses standard Audio EQ Cookbook peaking EQ formulas
with a simplified rescale normalization (max_b0 × 1.19 headroom). This is our
own implementation — not an exact replica of LGHUB's ~350-line per-band cascade
normalization — but it produces functionally correct results. The DSP
compensates via the rescale factor, and the EQ changes are audible and working
on real hardware.

Wire format verified against 38 LGHUB pcap writes:
- 4-byte LE section headers, LE uint16 coefficient words
- Mixed Q1.31/Q2.30 fixed-point with 24-bit precision
- Only b-coefficients divided by rescale; a-coefficients unchanged
- Two sections: 48kHz playback + 16kHz mic
- No trailing padding, no extra words between sections

Changes:
- base.py: Add flags parameter to write_centurion_cpl() for multi-fragment CPL
- device.py: Rewrite multi-fragment bridge send — proper CPL fragmentation with
  fragment 0 carrying bridge prefix/hdr and continuations carrying raw sub_msg,
  all fragments sent back-to-back without intermediate ACKs
- hidpp20.py: Replace placeholder coefficient code with full biquad math,
  mixed Q-format quantization, rescale normalization, and dual-section output
- settings_templates.py: Persist EQ to slot 0x80 after writing to slot 0x00
  so settings survive power cycle
- tests: Update expected SetEQParameters payloads for new coefficient format

* Extract Centurion protocol into separate modules

Move CenturionReceiver class, factory function, and Centurion protocol
queries (firmware, serial, hardware info, battery, name) from device.py
and hidpp20.py into new centurion.py module. Move OnboardEQ biquad math
and payload builders from hidpp20.py into new onboard_eq.py module.
Move _read_usb_product_string() to common.py to avoid circular imports.

Re-exports preserve backward compatibility for all existing callers.

* Add vertical graphic EQ slider widget for headset equalizer

Replace horizontal slider rows with a traditional graphic EQ layout
using vertical sliders side-by-side, with dB value display and
frequency labels per band.

* Fix device online state clobbered by debug ping in _status_changed

The INFO-level logging guard in _status_changed() called device.ping()
before logging, purely to show accurate online status. But ping() has
side effects — it sets device.online based on the result. When a
ConnectionStateChangedEvent correctly marked a device online, the
subsequent _status_changed() callback would re-ping. If the device
wasn't ready yet (e.g. Centurion headset still booting), the ping
timed out and set online back to False, requiring 2-3 power cycles
to sync state.

Remove the unnecessary ping — the log message already reads
device.online which reflects the state set by the event handler.

* Sort feature constants by ID and add PROFILE_MANAGEMENT

Move RPM_INDICATOR/RPM_LED_PATTERN (0x807A-B) before PER_KEY_LIGHTING
(0x8080-81), sort five Centurion-era headset entries into their correct
positions by feature ID, and add missing PROFILE_MANAGEMENT = 0x8101.

* Add CenturionCoreFeature enum for colliding feature IDs

Centurion transport reuses HID++ 2.0 feature IDs 0x0000, 0x0001,
0x0003, 0x0005, 0x0007 with different meanings. Since SupportedFeature
(IntEnum) requires unique values, create a separate CenturionCoreFeature
enum and resolve_feature() helper for transport-aware lookup.

Also replace the +0x100 offset hack in FeaturesArray.inverse with a
dedicated sub_inverse dict for sub-device feature indexing.

* Fix ruff I001 import sorting in centurion.py and hidpp20.py

* Add 9 missing centurion/headset feature names

Add feature constants split out from the HID++ 2.0 names PR (#3153):
CENTURION_LED_BRIGHTNESS (0x0110), CENTURION_EU_POWER_MODE (0x0115),
CENTURION_DEVICE_BOOL_STATE (0x0116), HEADSET_ADVANCED_PARA_EQ (0x020D),
HEADSET_MIC_TEST (0x020E), HEADSET_EQ_STYLES (0x0213),
BT_HOST_INFO (0x0305), LIGHTSPEED_PAIRING (0x0309),
BT_GAMING_MODE (0x030A).

* Extract _record_ping_protocol helper so all ping paths capture Centurion version

The raw Centurion (major, minor) pickup was only in the Centurion-child
dongle branch of Device.ping(). Wired Centurion variants (e.g. PRO X 2
LIGHTSPEED 046d:0AF8) go through the generic fallback branch and never
recorded the raw version, so they displayed "Centurion 2.6" instead of
"Centurion 1.16".

Extract the protocol + centurion version recording into a helper and
call it from both branches.

---------

Co-authored-by: Peter F. Patel-Schneider <pfpschneider@gmail.com>
2026-04-14 11:43:23 -04:00
..
00README.txt docs: update device directory documentation 2022-08-18 10:10:10 -04:00
Bluetooth Multi-Device Keyboard K380 B342.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Bolt Receiver C548.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Candy companion chip 405F.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Couch Mouse M515 4007.txt doc: update devices directory 2022-11-14 16:51:38 -05:00
Craft Advanced Keyboard 4066.txt docs: new conventions for device documentation files 2022-08-17 14:49:50 -04:00
Craft Advanced Keyboard B350.txt docs: new conventions for device documentation files 2022-08-17 14:49:50 -04:00
ERGO M575 Trackball 4096.txt docs: update ERGO M575 Trackball 4096 description 2022-08-23 08:29:15 -04:00
EX100 Receiver 27 Mhz C517.text docs: update EX100 information 2024-03-09 10:36:40 -05:00
G Pro Wireless Gaming Mouse 4079.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
G213 Prodigy Gaming Keyboard C366.txt docs: add several device descriptions 2022-09-14 19:03:59 -04:00
G304 Lightspeed Wireless Gaming Mouse 4074.txt doc: add description of G304 Lightspeed Wireless Gaming Mouse 2023-02-21 10:25:30 -05:00
G305 Lightspeed Wireless Gaming Mouse 4074.text docs: add descriptions of G305 and MX Keys S 2024-01-30 08:02:25 -05:00
G502 Gaming Mouse C07D.text docs: update description for G502 and add description for G733 headset 2022-09-25 12:22:36 -04:00
G502 Lightspeed Wireless Gaming Mouse 407F.txt settings: improve label and description for LED zone settings 2024-04-19 16:05:29 -04:00
G502 Proteus Spectrum Optical Mouse C332.txt docs: add description of several devices 2023-05-19 07:12:19 -04:00
G502 SE Hero Gaming Mouse C08B.txt docs: add description of several devices 2023-05-19 07:12:19 -04:00
G502 X C099.txt docs: add description of several devices 2022-11-08 21:43:38 -05:00
G502 X PLUS 4099.txt docs: add several device descriptions 2026-03-19 11:27:26 -04:00
G515 LS TKL 40B4.text ui: handle missing receiver_path more gracefully 2026-01-08 12:38:14 -05:00
G535 Wireless Gaming Headset 0AC4.txt docs: add description of G535 and N545 2022-12-31 12:23:23 -05:00
G600 Gaming Mouse C24A.txt docs: add several device descriptions 2022-09-14 19:03:59 -04:00
G604 Wireless Gaming Mouse 4085.txt docs: add G604 mouse details 2025-04-13 20:29:39 -04:00
G613 Wireless Mechanical Gaming Keyboard 4065.txt docs: add several device descriptions 2026-03-19 11:27:26 -04:00
G703 Wired-Wireless Gaming Mouse 4070.txt doc: update devices directory 2022-11-14 16:51:38 -05:00
G733 Gaming Headset 0AB5.text docs: add information on G733 Gaming Headest 2026-02-05 10:41:07 -05:00
G733 Gaming Headset 0AFE.text release 1.1.12rc1 2024-04-19 03:54:54 -04:00
G815 Mechanical Keyboard C33F.txt docs: add description of several devices 2023-05-19 07:12:19 -04:00
G903 LIGHTSPEED Wireless Gaming Mouse 4087.txt docs: add description of G903 2022-12-17 13:06:23 -05:00
G915 TKL LIGHTSPEED Wireless RGB Mechanical Gaming Keyboard 408E.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
G915 WIRELESS RGB MECHANICAL GAMING KEYBOARD 407C.text settings: improve label and description for LED zone settings 2024-04-19 16:05:29 -04:00
G915 WIRELESS RGB MECHANICAL GAMING KEYBOARD C33E.text docs: add files for MX Anywhere 2S and G915 2023-12-24 23:59:34 -05:00
G915 WIRELESS RGB Mechanical Gaming Keyboard 407E.txt doc: descriptions for Lightspeed Receiver C541 and G915 WIRELESS RGB Mechanical Gaming Keyboard 407E 2022-09-04 12:05:53 -04:00
G935 Gaming Headset 0A87.txt docs: add description of several devices 2022-11-08 21:43:38 -05:00
Illuminated Keyboard C318.txt doc: add description of Illuminated Keyboard with ID C318 2023-02-03 09:34:27 -05:00
Illuminated Living-Room Keyboard K830 4032.txt doc: update devices directory 2022-11-14 16:51:38 -05:00
K850 Performance Wireless Keyboard 4062.txt doc: update devices directory 2022-11-14 16:51:38 -05:00
K850 Performance Wireless Keyboard B34D.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Keyboard K600 TV 4078.txt docs: update documentation on several devices 2022-11-16 10:35:37 -05:00
LIFT For Business B033.txt docs: add description for LIFT mouse 2023-03-09 06:43:35 -05:00
LIFT VERTICAL ERGONOMIC MOUSE B031.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Lightspeed Receiver C53A.txt doc: update lightspeed receiver descriptions 2023-01-09 13:22:45 -05:00
Lightspeed Receiver C53D.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Lightspeed Receiver C53F.txt doc: update lightspeed receiver descriptions 2023-01-09 13:22:45 -05:00
Lightspeed Receiver C539.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Lightspeed Receiver C541.txt doc: descriptions for Lightspeed Receiver C541 and G915 WIRELESS RGB Mechanical Gaming Keyboard 407E 2022-09-04 12:05:53 -04:00
Lightspeed Receiver C545.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Lightspeed Receiver C547.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Logi Pop Keys B365.txt docs: add Logi Pop Keys description 2023-02-18 11:25:25 -05:00
Logitech G933 Gaming Wireless Headset 0A5B.txt docs: add several device descriptions 2026-03-19 11:27:26 -04:00
Logitech PRO X Wireless Gaming Headset 0ABA.txt docs: add description of Marathon Mouse M705 2022-09-15 09:51:24 -04:00
M720 Triathlon Multi-Device Mouse 405E.txt doc: update devices directory 2022-11-14 16:51:38 -05:00
M720 Triathlon Multi-Device Mouse B015.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
MX Anywhere 3 4090.txt docs: move old device descriptions to new locations and fix up 2022-09-07 11:42:10 -04:00
MX Anywhere 3 B025.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
MX Anywhere 3 for Business B02D.txt docs: add information for MX Anywhere 3 for Business 2025-03-29 09:24:07 -04:00
MX Ergo Multi-Device Trackball 406F.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
MX Keys Keyboard 408A.txt docs: device documentation for MX Keys Keyboard and Wireless Mouse Pebble M350 2022-08-20 20:12:48 -04:00
MX Keys Keyboard B35B.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
MX Keys Mini B369.txt docs: update device documentation for MX Keys Mini and MX Master 3S 2022-08-18 10:34:56 -04:00
MX Keys S B378.text docs: add descriptions of G305 and MX Keys S 2024-01-30 08:02:25 -05:00
MX Keys for Business B363.text docs: add Dell receiver and several devices 2022-10-13 16:00:15 -04:00
MX Master 3 Wireless Mouse 4082.txt docs: new conventions for device documentation files 2022-08-17 14:49:50 -04:00
MX Master 3 Wireless Mouse B023.txt docs: new conventions for device documentation files 2022-08-17 14:49:50 -04:00
MX Master 3 for Business B028.text docs: update information about MX Master 3 for Business 2023-03-02 07:57:26 -05:00
MX Master 3S B034.txt docs: update documentation on several devices 2022-11-15 15:29:48 -05:00
MX Master 4.text settings: add scroll ratchet force setting 2025-11-04 03:25:12 +09:00
MX Mechanical B366.txt docs: update documentation on several devices 2022-11-15 15:29:48 -05:00
MX Mechanical Mini B367.txt release 1.1.5rc1 2022-09-10 09:41:31 -04:00
MX Vertical Wireless Mouse 407B.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
MX Vertical Wireless Mouse B020.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Marathon Mouse M705 101B.txt docs: update description of Marathon Mouse M705 2022-10-13 16:00:15 -04:00
Marathon Mouse M705 406D.txt docs: add description of Marathon Mouse M705 2022-09-15 09:51:24 -04:00
Multi Device Silent Mouse M585-M590 406B.txt docs: update documentation on several devices 2022-11-16 10:35:37 -05:00
Nano Receiver C52F.txt docs: add several device descriptions 2022-09-14 19:03:59 -04:00
Nano Receiver C534.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Nano Receiver C535.txt docs: add Dell receiver and several devices 2022-10-13 16:00:15 -04:00
Number Pad N545 2006.txt docs: add description of G535 and N545 2022-12-31 12:23:23 -05:00
PRO X 2 40A9.text release 1.1.12rc1 2024-04-19 03:54:54 -04:00
PRO X 2 LIGHTSPEED 0AF7.text centurion: support PRO X 2 LIGHTSPEED headphones Centurion features (#3150) 2026-04-14 11:43:23 -04:00
PRO X 2 Superstrike 40BD.txt device: Add PRO X 2 Superstrike mouse support with HITS tuning settings (#3132) 2026-04-12 09:53:47 -04:00
PRO X Wireless 4093.txt settings: ignore hidden features 2025-10-27 15:27:13 -04:00
Rechargeable Trackpad T651 B00C.txt doc: update devices directory 2022-11-14 16:51:38 -05:00
Signature M550.text cli: correctly handle timeout in Bolt discovery 2026-01-18 14:21:56 -05:00
Signature M650 L Mouse B02A.txt docs: add descriptions of M650 and PRO X 2 2024-01-20 11:23:01 -05:00
Unifying Receiver C52B.txt docs: new conventions for device documentation files 2022-08-17 14:49:50 -04:00
Wireless All-in-One Keyboard TK820 4102.txt doc: add Wireless All-in-One Keyboard TK820 2022-11-03 07:22:00 -04:00
Wireless Illuminated Keyboard K800 2010.txt docs: add several device descriptions 2022-09-14 19:03:59 -04:00
Wireless Illuminated Keyboard K800 new 406E.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Wireless Keyboard 4075.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Wireless Keyboard Dell KB714 4015.txt docs: add Dell-branded mouse and keyboard 2022-10-21 16:48:07 -04:00
Wireless Keyboard K220 4005.txt doc: update devices directory 2022-11-14 16:51:38 -05:00
Wireless Keyboard K230 400D.txt docs: add several device descriptions 2022-09-14 19:03:59 -04:00
Wireless Keyboard K270(unifying) 4003.txt doc: update devices directory 2022-11-14 16:51:38 -05:00
Wireless Keyboard K360 4004.txt doc: descriptions for K360 4004 and MX Master 4071 2022-09-04 12:05:53 -04:00
Wireless Keyboard K470 4075.txt device: add description for K470 keyboard from the MK470 combo (#1945) 2022-12-25 20:11:48 -05:00
Wireless Keyboard K520 2011.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Wireless Keyboard MK270 4023.txt doc: update devices directory 2022-11-14 16:51:38 -05:00
Wireless Mobile Mouse MX Anywhere 2 4072.txt docs: add several device descriptions 2022-09-14 19:03:59 -04:00
Wireless Mobile Mouse MX Anywhere 2S 406A.txt docs: add Wireless Mobile Mouse MX Anywhere 2S 406A description 2022-08-23 08:29:15 -04:00
Wireless Mobile Mouse MX Anywhere 2S B01A.txt docs: add files for MX Anywhere 2S and G915 2023-12-24 23:59:34 -05:00
Wireless Mouse 4022.txt doc: update devices directory 2022-11-14 16:51:38 -05:00
Wireless Mouse Dell WM514 4029.txt docs: add Dell-branded mouse and keyboard 2022-10-21 16:48:07 -04:00
Wireless Mouse M185 new 4054.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Wireless Mouse M185,M235,M310 4055.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Wireless Mouse M185.text release 1.1.15rc2 2025-10-10 09:19:31 -04:00
Wireless Mouse M215 2nd Gen 401B.txt docs: add Dell receiver and several devices 2022-10-13 16:00:15 -04:00
Wireless Mouse M310 M310t 4031.txt docs: move old device descriptions to new locations and fix up 2022-09-07 11:42:10 -04:00
Wireless Mouse M325 400A.txt device: remove incorrect feature for M325 mice 2023-12-14 08:50:02 -05:00
Wireless Mouse M345 4017.txt doc: update devices directory 2022-11-14 16:51:38 -05:00
Wireless Mouse M510 1025.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Wireless Mouse M510 4051.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Wireless Mouse M525 4013.txt doc: update devices directory 2022-11-14 16:51:38 -05:00
Wireless Mouse M560 402D.txt doc: update devices directory 2022-11-14 16:51:38 -05:00
Wireless Mouse MX Anywhere 2 404A.txt doc: update devices directory 2022-11-14 16:51:38 -05:00
Wireless Mouse MX Master 2S 4069.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Wireless Mouse MX Master 2S B019.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Wireless Mouse MX Master 4041.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Wireless Mouse MX Master 4071.txt doc: descriptions for K360 4004 and MX Master 4071 2022-09-04 12:05:53 -04:00
Wireless Mouse MX Master B012.txt docs: move old device descriptions to new locations and fix up 2022-09-07 11:42:10 -04:00
Wireless Mouse Pebble M350 4080.txt docs: device documentation for MX Keys Keyboard and Wireless Mouse Pebble M350 2022-08-20 20:12:48 -04:00
Wireless Multi-Device Keyboard K780 405B.txt docs: update documentation on several devices 2022-11-16 10:35:37 -05:00
Wireless Rechargeable Touchpad T650 4101.txt docs: move old device descriptions to new locations and fix up 2022-09-07 11:42:10 -04:00
Wireless Solar Keyboard K750 4002.txt doc: update devices directory 2022-11-14 16:51:38 -05:00
Wireless Touch Keyboard K400 4024.txt doc: update devices directory 2022-11-14 16:51:38 -05:00
Wireless Touch Keyboard K400 Plus 404D.txt docs: update device documentation files 2022-08-17 14:49:50 -04:00
Wireless Trackball M570 1028.txt doc: update devices directory 2022-11-14 16:51:38 -05:00
Zone Touch Mouse T400 4026.txt docs: move old device descriptions to new locations and fix up 2022-09-07 11:42:10 -04:00
anywhere-mx.txt docs/devices: add Anywhere MX mouse 2013-08-21 21:45:04 +02:00
mk700.txt docs: add mk700 2013-06-05 12:39:00 +02:00
performance-mx.txt pre-commit: initial fix 2020-07-07 15:11:15 +01:00