AprilNEA / AprilNEA/OpenLogi

[Feature]: Support pointer speed (HID++ 0x2205) for M590 等无 Adjustable DPI 的型号

Open
#602 3 comments 1 reaction 0 assignees View on GitHub
area: hidpp platform: all type: feature
Dominant language
Rust
Stars
21k
Forks
675
Avg merge
1d 6h
Merged PRs (30d)
180

Description

## Problem / motivation

Logitech M590 (M585/M590) 是一款只支持 **Pointer Speed**(HID++ `0x2205 PointerMotionScaling`)、**不支持 Adjustable DPI**(无 `0x2201`/`0x2202`)的办公鼠标。因此在 OpenLogi GUI 中,M590 的设备详情页只有「Buttons / Actions Ring / Device」三个选项卡,**没有 Pointer(DPI)选项卡**——这是符合预期的(`DetailTab::tabs_for` 只在 `caps.pointer` 为 true 时显示 Pointer 面板),但同时也意味着:

- M590 用户无法在 OpenLogi 中调节指针速度(鼠标灵敏度);
- 官方 Logi Options+ 对 M590 提供的正是"Pointer Speed"调节(而非 DPI);
- 目前唯一的替代方案是系统级指针速度设置(macOS「系统设置 → 鼠标 → 跟踪速度」)或 Solaar。

希望 OpenLogi 也能覆盖这类"无 DPI、仅有 Pointer Speed"的型号。

## Proposed solution

为 HID++ `0x2205 PointerMotionScaling` 增加读写支持(当前 `crates/openlogi-hidpp/src/feature/registry.rs` 只注册了该 feature 的名称,没有任何实现),并在 GUI 的 Pointer 面板中,对**未上报 `0x2201/0x2202` 但上报 `0x2205`** 的设备显示"Pointer Speed"控制(滑块或数值),复用或扩展现有的 Pointer 选项卡。

参考实现:Solaar 对 M590 的 `POINTER SPEED` 读写(`docs/devices/Multi Device Silent Mouse M585-M590 406B.txt`,feature `{2205}` V0,Pointer Speed 1.0 / 256)。

## Alternatives considered

- 系统级指针速度设置(macOS 跟踪速度 / Windows 指针速度):可用,但无法按设备、按应用配置,也不符合 OpenLogi「本地优先、全设备配置」的目标。
- Solaar:仅 Linux 可用,macOS 上无法使用。

## Related area(s)

- [x] GUI
- [ ] CLI
- [ ] Button actions / remapping
- [x] DPI(Pointer / pointer-speed 面板)
- [ ] SmartShift
- [ ] Per-application profiles
- [ ] Configuration (TOML)
- [ ] Auto-update
- [ ] Other

## Additional context

设备 HID++ feature dump(来自 Solaar 1.1.7,M585/M590, WPID 406B)——注意没有 `2201/2202`,只有 `2205`:

```
13: POINTER SPEED {2205} V0
Pointer Speed: 1.0
Sensibilidad (Velocidad del puntero) (saved): 256
Sensibilidad (Velocidad del puntero) : 256
```

环境:macOS + M590 蓝牙直连,OpenLogi v0.6.27。

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with crates/openlogi-hidpp/src/feature/registry.rs and the DetailTab::tabs_for entry point to trace feature registration and Pointer panel visibility. Use docs/devices/Multi Device Silent Mouse M585-M590 406B.txt as the device reference. Done means HID++ 0x2205 read/write support and a Pointer Speed control for devices without 0x2201/0x2202 but with 0x2205.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend-api-design, desktop
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.