openlogi-hidpp
OpenLogi's vendored fork of the hidpp crate —
an implementation of the Logitech HID++ protocol.
- Upstream: https://github.com/lus/logy (crate
hidpp) - Forked at: commit
135c5600807845c269b5d5bfa1f33032281fbd86(upstream v0.3.0, 2025-12-26) - License: 0BSD © Lukas Schulte Pelkum (see
LICENSE)
The library target is named hidpp, so dependents use hidpp::… unchanged.
OpenLogi-specific changes live here; the source is otherwise kept close to
upstream to ease future syncs.
The crate is versioned with the OpenLogi workspace (unified versioning), not
upstream's 0.3.0 — that number is provenance, recorded above.
Feature coverage
Beyond upstream, this fork adds typed wrappers for a broad set of HID++ 2.0
features. Each is registered in feature::registry and obtained via
device.get_feature::<…>(); implemented areas include:
- Device & power — Root, FeatureSet, DeviceInformation, DeviceTypeAndName, DeviceFriendlyName, UnifiedBattery, WirelessDeviceStatus.
- Hosts & platform — HostsInfo, ChangeHost, MultiPlatform, DualPlatform.
- Pointer & wheel — MousePointer, AdjustableDpi, ExtendedAdjustableDpi, VerticalScrolling, HiResWheel, Thumbwheel, SmartShift (and enhanced).
- Controls & remapping — ReprogControls (
0x1b04, with named control-id and task-id constants), PersistentRemappableAction. - Keyboard — Fn inversion (legacy and multi-host), DisableKeys, DisableKeysByUsage, ModeStatus.
- Lighting — Backlight, Illumination, BrightnessControl, ColorLedEffects, RgbEffects, PerKeyLighting.
- Audio — Sidetone, Equalizer.
- Report rate — AdjustableReportRate, ExtendedAdjustableReportRate.
- Touch, crown & misc — Crown, TouchpadRawXy, TouchMouseRaw, SolarKeyboardDashboard.
Each wrapper encodes/decodes the official wire format, models domain values with
enums/bitflags/newtypes, returns Hidpp20Error::UnsupportedResponse for unknown
wire values rather than guessing, and is unit-tested against the published spec.