[Bug]: Horizontal wheel scrolling between tabs jumps between first and last tab
- Dominant language
- Rust
- Stars
- 21k
- Forks
- 675
- Avg merge
- 2d 5h
- Merged PRs (30d)
- 172
Description
### Pre-flight checklist
- [x] I searched [existing issues](https://github.com/AprilNEA/OpenLogi/issues?q=is%3Aissue) and this is not a duplicate.
- [x] I am on the [latest release](https://github.com/AprilNEA/OpenLogi/releases/latest) or a recent `master` build.
- [x] I quit **Logi Options+** before running OpenLogi (the two apps fight over HID++ access and only one can own a receiver at a time).
### Which part of OpenLogi?
Not sure
### OpenLogi version
0.6.22
### Operating system
Windows
### OS version & architecture
Windows 11 26H2 26300.8935
### Device model
MX Master 3 + Unifying receiver
### How is the device connected?
Logi Bolt receiver
### Affected area(s)
- [ ] Device discovery / detection
- [x] Button remapping
- [ ] DPI control
- [ ] SmartShift
- [ ] Per-application profiles
- [ ] Battery status
- [ ] Settings / configuration (TOML)
- [ ] Auto-update
- [ ] Menu bar / tray
- [ ] Other
### What happened?
When using the horizontal wheel to scroll between tabs in Firefox or Edge (haven't tried other browsers), even the smallest of scroll makes the tab jump from the last one to the first one, and vice-versa depending on the direction of the scroll.
### Steps to reproduce
1. Set the horizontal wheel to previous and next tab
2. Use the horizontal wheel to scroll between tabs in a browser
### Diagnostics report
```markdown
### OpenLogi Diagnostics
**App**
- OpenLogi (GUI): v0.6.22 (release)
- Agent: v0.6.22 (connected)
- IPC protocol: GUI 10 / agent 10
- Inventory: ready
- OS: Windows (x86_64)
- Locale: fr-FR (UI: follow system)
- Accessibility: granted · Input hook: installed
- Launch at login: no · Menu bar: yes · Update check: on
- Running from: source build (dev)
- Config: schema 3 · 2 configured device(s) · thumbwheel 14
**Assets**
- Source: user cache · Index: loaded (210 models) · User cache: present
- Cache path: C:\Users\guigu\.local/share/openlogi\assets · Bundle assets: absent
**Devices (4)**
- MX Master — mouse
- Connection: Logi Unifying receiver · Online: no · Battery: n/a
- Capabilities: not probed
- Model: receiver:02289624:slot:1
- Render: ⚠️ none (silhouette) · Slot 1
- MX Master 3 — mouse (codename: MX Master 3)
- Connection: Logi Unifying receiver · Online: yes · Battery: n/a
- Capabilities: buttons=yes, pointer=yes, lighting=no
- Model: receiver:02289624:slot:2 (wpid: 4082, model-ids: b023/4082/0000, ext-model: 00)
- Transports: eQuad, BTLE
- Render: mx_master_3 · Slot 2
- MX Keys — keyboard
- Connection: Logi Unifying receiver · Online: no · Battery: n/a
- Capabilities: not probed
- Model: receiver:02289624:slot:3
- Render: ⚠️ none (silhouette) · Slot 3
- MX Mechanical Mini — keyboard (codename: MX MCHNCL M)
- Connection: Logi Bolt receiver · Online: yes · Battery: 100% (discharging, full)
- Capabilities: buttons=yes, pointer=no, lighting=no
- Model: receiver:c955ca37896330bc:slot:1 (model-ids: b367/0000/0000, ext-model: 00)
- Transports: BTLE
- Render: mx_mechanical_mini · Slot 1
**Receivers (2)**
- Logi Bolt Receiver (VID 046d / PID c548)
- Unifying Receiver (VID 046d / PID c52b)
```
### `openlogi list` output
```text
```
### Logs
```shell
```
### macOS permissions (if applicable)
- [ ] OpenLogi has **Accessibility** permission (needed to remap buttons via the event tap).
- [ ] OpenLogi has **Input Monitoring** permission (needed for Bluetooth-direct devices and capture).
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by tracing the horizontal-wheel button-remapping path for previous and next tab actions, then reproduce the behavior in Firefox or Edge with the MX Master 3. Check how small horizontal scroll values are handled and verify that scrolling moves between adjacent tabs without wrapping from the first tab to the last or vice versa.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- desktop
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100