Pre-flight checklist
Problem / motivation
OpenLogi disables per-device scroll inversion unless a device exposes HID++ 0x2121 HiResWheel with the native inversion capability. A Logitech Signature Plus M750 L connected through a Logi Bolt receiver instead exposes 0x2130 RatchetWheel and does not expose 0x2121, so the GUI reports that native HID++ scroll inversion is unavailable.
The same mouse and connection support reversed scrolling in Logi Options+, which indicates that a software/host-side implementation is possible. OpenLogi 0.7.1 on macOS 26.6.2 reproduces the problem.
No existing M750 scroll-inversion or 0x2130 fallback issue was found.
Proposed solution
Add a per-device software scroll-inversion path for 0x2130 RatchetWheel devices.
Suggested behavior:
- Continue to prefer native
0x2121 inversion when the device advertises has_invert.
- Implement the
0x2130 get/set wheel-mode calls and wheel-movement notification decoding.
- When inversion is enabled on an
0x2130 device, divert wheel reports to HID++, invert the vertical delta, and inject the resulting OS scroll event through OpenLogi's existing input-injection layer.
- Restore ordinary HID reporting when the software inversion setting is disabled or OpenLogi exits.
- Keep the setting scoped to the physical mouse so the macOS trackpad direction is unchanged.
- Clearly label the GUI mode as a software fallback rather than native HID++ inversion.
If divert-and-inject is not reliable on every platform, an OS-hook transformation for the selected physical device could be used as the fallback instead.
Alternatives considered
- macOS “Natural scrolling”: changes system-level behavior and does not provide OpenLogi's per-device separation.
- Manually setting
invert_scroll = true: the agent intentionally gates the write on the live scroll_inversion capability.
- Forcing the persisted capability flags: cannot add
0x2121 firmware support and would make OpenLogi attempt an unsupported write.
- Treating
0x2130 as native inversion support: the RatchetWheel protocol only exposes HID/HID++ report diversion, not an inversion bit.
Related area(s)
Additional context
Hardware and software
- Device: Logitech Signature Plus M750 L / Logi M750
- Connection: Logi Bolt receiver, VID
046d, PID c548
- OpenLogi:
0.7.1
- OS: macOS
26.6.2, Apple Silicon
- Logi Options+: reversed scrolling works with the same device
Redacted openlogi list output
Logi Bolt Receiver (<redacted>, vid=046d pid=c548)
└─ slot 2 ● Logi M750 (mouse, wpid=?, battery=85% full (discharging))
model_ids=[b02c,0000,0000] ext=03 serial=<redacted> unit_id=<redacted> transports=btle
openlogi diag features result
The device reports 32 features. Relevant entries:
13 0x2130 v0
14 0x2201 v2
There is no 0x2121 entry.
openlogi diag wheel output
device: Logi M750 (slot 2 on receiver <redacted>)
Error: read HiResWheel mode
Caused by:
device does not expose HID++ feature 0x2121
OpenLogi already names 0x2130 as RatchetWheel in the feature registry, but it has no implementation registered: https://github.com/AprilNEA/OpenLogi/blob/master/crates/openlogi-hidpp/src/feature/registry.rs
The available 0x2130 protocol description exposes report diversion and wheel-movement events, but no native inversion flag: https://lekensteyn.nl/files/logitech/x2130_ratchetwheel.html
Pre-flight checklist
Problem / motivation
OpenLogi disables per-device scroll inversion unless a device exposes HID++
0x2121 HiResWheelwith the native inversion capability. A Logitech Signature Plus M750 L connected through a Logi Bolt receiver instead exposes0x2130 RatchetWheeland does not expose0x2121, so the GUI reports that native HID++ scroll inversion is unavailable.The same mouse and connection support reversed scrolling in Logi Options+, which indicates that a software/host-side implementation is possible. OpenLogi 0.7.1 on macOS 26.6.2 reproduces the problem.
No existing M750 scroll-inversion or
0x2130fallback issue was found.Proposed solution
Add a per-device software scroll-inversion path for
0x2130 RatchetWheeldevices.Suggested behavior:
0x2121inversion when the device advertiseshas_invert.0x2130get/set wheel-mode calls and wheel-movement notification decoding.0x2130device, divert wheel reports to HID++, invert the vertical delta, and inject the resulting OS scroll event through OpenLogi's existing input-injection layer.If divert-and-inject is not reliable on every platform, an OS-hook transformation for the selected physical device could be used as the fallback instead.
Alternatives considered
invert_scroll = true: the agent intentionally gates the write on the livescroll_inversioncapability.0x2121firmware support and would make OpenLogi attempt an unsupported write.0x2130as native inversion support: the RatchetWheel protocol only exposes HID/HID++ report diversion, not an inversion bit.Related area(s)
Additional context
Hardware and software
046d, PIDc5480.7.126.6.2, Apple SiliconRedacted
openlogi listoutputopenlogi diag featuresresultThe device reports 32 features. Relevant entries:
There is no
0x2121entry.openlogi diag wheeloutputOpenLogi already names
0x2130asRatchetWheelin the feature registry, but it has no implementation registered: https://github.com/AprilNEA/OpenLogi/blob/master/crates/openlogi-hidpp/src/feature/registry.rsThe available
0x2130protocol description exposes report diversion and wheel-movement events, but no native inversion flag: https://lekensteyn.nl/files/logitech/x2130_ratchetwheel.html