libinput issueshttps://gitlab.freedesktop.org/libinput/libinput/-/issues2023-09-30T17:17:15Zhttps://gitlab.freedesktop.org/libinput/libinput/-/issues/800Enable spurious debouncing with Logitech G502 HERO Gaming Mouse?2023-09-30T17:17:15ZJakob HainEnable spurious debouncing with Logitech G502 HERO Gaming Mouse?<!--
Before your file a feature request, please read
https://wayland.freedesktop.org/libinput/doc/latest/what-is-libinput.html
The amount of developer time libinput has available is very small.
Requesting a feature is no guarantee tha...<!--
Before your file a feature request, please read
https://wayland.freedesktop.org/libinput/doc/latest/what-is-libinput.html
The amount of developer time libinput has available is very small.
Requesting a feature is no guarantee that it will get implemented. Someone
(you!) needs to step up to do the work.
-->
## Summary
Sorry to bother you. I have the same issue as https://gitlab.freedesktop.org/libinput/libinput/-/issues/441.
Dragging occasionally releases the mouse. The time it's released is definitely <100ms, and where the delay of letting go because of debounce check would not be an issue.
Is there a way to increase spurious debounce time?
<!-- Summarize the requested feature in a few sentences. -->
## Feature details
Either increase spurious debounce for Logitech G502 HERO Gaming Mouse in upstream, or provide a setting in local-overrides.quirks so I can do so locally.
<!-- A step-by-step list of what the feature should achieve (where applicable) -->
## Affected Hardware
<!-- Which hardware types would be affected by this -->
Logitech G502 HERO Gaming Mouse
As well as any other faulty mouse
## Implementation in Other Systems
<!-- Does this feature already exist elsewhere? How does it work there? Try
to provide as many details as possible -->https://gitlab.freedesktop.org/libinput/libinput/-/issues/666hires wheel scrolling on MX Master 3 causing scroll twitching2023-11-11T19:35:57Zgudvinrhires wheel scrolling on MX Master 3 causing scroll twitchingSo, it is not really a bug in libinput per se, however it is an issue that is immediately noticeable with libinput 1.19.
Logitech MX Master 3 supports hires wheel scrolling and it works. You can turn off stepped scrolling via switch on ...So, it is not really a bug in libinput per se, however it is an issue that is immediately noticeable with libinput 1.19.
Logitech MX Master 3 supports hires wheel scrolling and it works. You can turn off stepped scrolling via switch on the mouse and get that smooth movement.
But when you lock mouse movement and scroll with "steps", you see noticeable twitching because mouse issues small movements when you jiggle wheel a little. It is especially annoying when you scroll down, then release pressure from wheel. In that case wheel will slightly move back.
I am attaching example where I scroll in Firefox. But it is the same thing for other apps.
![Peek_2021-09-20_16-42](/uploads/6526159c99ca18f7b7e545e10cf85876/Peek_2021-09-20_16-42.mp4)José ExpósitoJosé Expósitohttps://gitlab.freedesktop.org/libinput/libinput/-/issues/635Mouse profiles2021-07-20T13:12:45ZRob KamMouse profiles## Summary
To easily switch mouse profiles/functionality per application, window or tab.
## Feature details
To easily re-configure the mouse per application, window or tab. To have an icon in the system tray indicating the current mou...## Summary
To easily switch mouse profiles/functionality per application, window or tab.
## Feature details
To easily re-configure the mouse per application, window or tab. To have an icon in the system tray indicating the current mouse profile and to easily switch to another using hot-keys, mouse buttons or via a click on the icon.
Each click or chord of the mouse can be remapped to whatever mouse click or key combination the user requires.
## Affected Hardware
Mouse, etc.
## Implementation in Other Systems
[X-Mouse Button Control](https://www.highrez.co.uk/downloads/xmousebuttoncontrol.htm) a third party application for Microsoft Windows.https://gitlab.freedesktop.org/libinput/libinput/-/issues/634Scroll one screen per mouse wheel notch2021-07-20T13:11:02ZRob KamScroll one screen per mouse wheel notch## Summary
In System Settings - Mouse > Mouse wheel scrolls by, there's no option for One screen at a time.
## Feature details
Being able to scroll up and down a page at a time by a small simple movement of a finger. However where req...## Summary
In System Settings - Mouse > Mouse wheel scrolls by, there's no option for One screen at a time.
## Feature details
Being able to scroll up and down a page at a time by a small simple movement of a finger. However where required zooming in and out with the mouse wheel should also still function.
Add to System Settings - Mouse > Mouse wheel scrolls by
Roll wheel one notch to scroll:
* The following number of lines at a time:
* One screen at a time
## Affected Hardware
Common notched mouse wheel, etc.
## Implementation in Other Systems
This is an option in Microsoft Windows - Control Panel
[contol_panel](/uploads/b7b181a20dc9c33e5b47dcbc29361cf6/contol_panel.png)https://gitlab.freedesktop.org/libinput/libinput/-/issues/616Button debouncing does not work with my "E-Signal USB Gaming Mouse" (ZeleSouris)2022-05-20T23:58:17ZMaxime ChéramyButton debouncing does not work with my "E-Signal USB Gaming Mouse" (ZeleSouris)## Summary
Accidental double clicks are not filtered out by libinput of a defective mouse .
Here are the debug events for a *simple click":
```
event23 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_IS_...## Summary
Accidental double clicks are not filtered out by libinput of a defective mouse .
Here are the debug events for a *simple click":
```
event23 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_IS_DOWN_WAITING
-event23 POINTER_BUTTON +9.380s BTN_LEFT (272) pressed, seat count: 1
event23 - debounce state: DEBOUNCE_STATE_IS_DOWN_WAITING → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_IS_UP_DELAYING
event23 - debounce state: DEBOUNCE_STATE_IS_UP_DELAYING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_UP
event23 POINTER_BUTTON +9.400s BTN_LEFT (272) released, seat count: 0
event23 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_IS_DOWN_WAITING
event23 POINTER_BUTTON +9.422s BTN_LEFT (272) pressed, seat count: 1
event23 - debounce state: DEBOUNCE_STATE_IS_DOWN_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_DOWN
event23 - debounce state: DEBOUNCE_STATE_IS_DOWN → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS
event23 POINTER_BUTTON +9.474s BTN_LEFT (272) released, seat count: 0
event23 - debounce state: DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS → DEBOUNCE_EVENT_TIMEOUT_SHORT → DEBOUNCE_STATE_IS_UP_WAITING
event23 - debounce state: DEBOUNCE_STATE_IS_UP_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_UP
```
and here another click:
```
event23 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_IS_DOWN_WAITING
-event23 POINTER_BUTTON +78.562s BTN_LEFT (272) pressed, seat count: 1
event23 - debounce state: DEBOUNCE_STATE_IS_DOWN_WAITING → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_IS_UP_DELAYING
event23 - debounce state: DEBOUNCE_STATE_IS_UP_DELAYING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_UP
event23 POINTER_BUTTON +78.584s BTN_LEFT (272) released, seat count: 0
event23 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_IS_DOWN_WAITING
event23 POINTER_BUTTON +78.605s BTN_LEFT (272) pressed, seat count: 1
event23 - debounce state: DEBOUNCE_STATE_IS_DOWN_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_DOWN
event23 - debounce state: DEBOUNCE_STATE_IS_DOWN → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS
event23 POINTER_BUTTON +78.710s BTN_LEFT (272) released, seat count: 0
event23 - debounce state: DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS → DEBOUNCE_EVENT_TIMEOUT_SHORT → DEBOUNCE_STATE_IS_UP_WAITING
event23 - debounce state: DEBOUNCE_STATE_IS_UP_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_UP
```
## Steps to reproduce
Normal clicks, 10% of the time maybe.
## Required information
<!-- Note: if your libinput version is older than the current stable version,
please reproduce with a current version instead -->
- libinput version: 1.16.4-3
- hardware information: E-Signal USB Gaming Mouse
- `libinput record` output: [record.yml](/uploads/cb7b970543c4846b84964a5bfbfcb705/record.yml)https://gitlab.freedesktop.org/libinput/libinput/-/issues/583Disable mouse scroll wheel while middle click is held2021-03-17T03:44:21ZJosé ExpósitoDisable mouse scroll wheel while middle click is held<!--
Before your file a feature request, please read
https://wayland.freedesktop.org/libinput/doc/latest/what-is-libinput.html
The amount of developer time libinput has available is very small.
Requesting a feature is no guarantee tha...<!--
Before your file a feature request, please read
https://wayland.freedesktop.org/libinput/doc/latest/what-is-libinput.html
The amount of developer time libinput has available is very small.
Requesting a feature is no guarantee that it will get implemented. Someone
(you!) needs to step up to do the work.
-->
## Summary
<!-- Summarize the requested feature in a few sentences. -->
Do not send axis/scroll events when the mouse wheel is clicked.
## Feature details
<!-- A step-by-step list of what the feature should achieve (where applicable) -->
This feature was already requested in https://gitlab.freedesktop.org/libinput/libinput/-/issues/19 including details.
My personal use case is that I have a (cheap) mouse whose scroll wheel doesn't work that well and some times it scrolls when I press it. Trying to open a browser link in a new tab can be frustrating because the page scrolls on click.
I can submit a merge request including [the required changes](https://gitlab.freedesktop.org/libinput/libinput/-/issues/19#note_830466) to implement this feature.
## Affected Hardware
<!-- Which hardware types would be affected by this -->
Mice with a clickable scroll wheel.
## Implementation in Other Systems
<!-- Does this feature already exist elsewhere? How does it work there? Try
to provide as many details as possible -->
This is the default behavior in Windows 10 (Chrome).https://gitlab.freedesktop.org/libinput/libinput/-/issues/455Regression in libinput >1.7 - "double-click" LMB no longer works2021-08-16T21:13:09ZMartin CihlářRegression in libinput >1.7 - "double-click" LMB no longer works## Summary
<!--
Summarize the bug encountered concisely. See
https://wayland.freedesktop.org/libinput/doc/latest/reporting-bugs.html for
detailed instructions to report bugs
-->
My mouse, Trust GXT 25, has a handy "double-click" button...## Summary
<!--
Summarize the bug encountered concisely. See
https://wayland.freedesktop.org/libinput/doc/latest/reporting-bugs.html for
detailed instructions to report bugs
-->
My mouse, Trust GXT 25, has a handy "double-click" button that, when pressed, acts as if the user pressed the left mouse button twice in a quick succession. In versions of libinput 1.8 and upwards, this no longer works, pressing the double-click button functions the same as the left mouse button from the end-user perspective.
## Steps to reproduce
<!-- How to reproduce the issue on a developer machine - this is very important -->
Install a version of libinput >1.7.3, reboot.
## Required information
<!-- Note: if your libinput version is older than the current stable version,
please reproduce with a current version instead -->
- [X] libinput version: `dev-libs/libinput-1.15.4:0/10::gentoo` (latest) & `dev-libs/libinput-1.7.3:0/10::gentoo` (latest working)
- [X] hardware information: Trust GXT 25, recognised as "LXD Gaming Mouse" [list-devices.txt](/uploads/fe685aa1b12a1f654abba026213f2634/list-devices.txt)
- [X] `libinput record` output: [record.yml](/uploads/17486c17f34e86e6c76a2de8959e68dc/record.yml)<!-- do not paste, **attach** the file -->
- [X] `libinput debug-events --verbose` output: [debug-events.txt](/uploads/545b06840ba7ef8ef2506b43340fe145/debug-events.txt) [debug-events-1.7.txt](/uploads/336b9f88fa44aed45fd537e50c5dd1a1/debug-events-1.7.txt)<!-- do not paste, **attach the file -->
<!--
Paste any other relevant logs - please use code blocks (```) to format
console output, logs, and code as it's very hard to read otherwise.)
Do not paste logs longer than 10 lines, **attach** those instead.
If your libinput record is longer than 5-10s, we will not be able to process
it.
-->
I have attached the output of `libinput-debug-events --verbose` for both the latest version and the latest working version (1.7.3). I couldn't attach the output of `libinput record` for 1.7.3 as it doesn't seem to have this tool.
**In all of these instances, I pressed the "normal" LMB first, then the "double-click" button (I moved the mouse a little bit to give a clear visual distinction between the two presses in case it helps).**
I am using Gentoo but I did try other distros (Ubuntu 19.04, Fedora 30) that use newer versions of libinput and I got the same result, the double-click didn't function as it should. [Here is also my post about it on the Gentoo Forums.](https://forums.gentoo.org/viewtopic-t-1086384-start-0-postdays-0-postorder-asc-highlight-.html)https://gitlab.freedesktop.org/libinput/libinput/-/issues/445I have external mouse with a mouse wheel that is too slow on Linux in compari...2020-03-26T21:18:42ZFeldworI have external mouse with a mouse wheel that is too slow on Linux in comparison to Windows 10I use Ubuntu 19.10
Would like to know if libinput can be used to adjust external usb mouse wheel scroll speed.
External mouse wheel is not working as expected.
## Aside questions
Is libinput only about setting up "technical" "base"...I use Ubuntu 19.10
Would like to know if libinput can be used to adjust external usb mouse wheel scroll speed.
External mouse wheel is not working as expected.
## Aside questions
Is libinput only about setting up "technical" "base" preferences for devices?
Can libinput be also used to set-up personal preferences for each device?https://gitlab.freedesktop.org/libinput/libinput/-/issues/441Keyboard recognized as mouse causing spurious button debouncing2022-08-25T21:14:05ZCo ChoperKeyboard recognized as mouse causing spurious button debouncing## Summary
When a mouse button is held down it behaves as if it's being pressed multiple times.
Issue occurs even if the keyboard's USB pass-through is unplugged.
## Steps to reproduce
Press some mouse button on the mouse
## libinput ...## Summary
When a mouse button is held down it behaves as if it's being pressed multiple times.
Issue occurs even if the keyboard's USB pass-through is unplugged.
## Steps to reproduce
Press some mouse button on the mouse
## libinput version you encountered the bug on
```
Version : 1.15.2-1.1
```
## Hardware information:
```
Device 'Logitech G502 HERO Gaming Mouse':
Device Enabled (148): 1
Coordinate Transformation Matrix (150): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Natural Scrolling Enabled (283): 0
libinput Natural Scrolling Enabled Default (284): 0
libinput Scroll Methods Available (285): 0, 0, 1
libinput Scroll Method Enabled (286): 0, 0, 0
libinput Scroll Method Enabled Default (287): 0, 0, 0
libinput Button Scrolling Button (288): 2
libinput Button Scrolling Button Default (289): 2
libinput Middle Emulation Enabled (290): 0
libinput Middle Emulation Enabled Default (291): 0
libinput Accel Speed (292): -0.400000
libinput Accel Speed Default (293): 0.000000
libinput Accel Profiles Available (294): 1, 1
libinput Accel Profile Enabled (295): 0, 1
libinput Accel Profile Enabled Default (296): 1, 0
libinput Left Handed Enabled (297): 0
libinput Left Handed Enabled Default (298): 0
libinput Send Events Modes Available (268): 1, 0
libinput Send Events Mode Enabled (269): 0, 0
libinput Send Events Mode Enabled Default (270): 0, 0
Device Node (271): "/dev/input/event9"
Device Product ID (272): 1133, 49291
libinput Drag Lock Buttons (299): <no items>
libinput Horizontal Scroll Enabled (300): 1
```
## Other log output:
```
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ HyperX Alloy Elite RGB HyperX Alloy Elite RGB Consumer Control id=13 [slave pointer (2)]
⎜ ↳ Logitech G502 HERO Gaming Mouse id=14 [slave pointer (2)]
⎜ ↳ Logitech G502 HERO Gaming Mouse Consumer Control id=16 [slave pointer (2)]
⎜ ↳ HyperX Alloy Elite RGB HyperX Alloy Elite RGB Mouse id=11 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Power Button id=7 [slave keyboard (3)]
↳ HyperX Alloy Elite RGB HyperX Alloy Elite RGB id=8 [slave keyboard (3)]
↳ HyperX Alloy Elite RGB HyperX Alloy Elite RGB id=9 [slave keyboard (3)]
↳ HyperX Alloy Elite RGB HyperX Alloy Elite RGB Keyboard id=10 [slave keyboard (3)]
↳ HyperX Alloy Elite RGB HyperX Alloy Elite RGB System Control id=12 [slave keyboard (3)]
↳ Logitech G502 HERO Gaming Mouse Keyboard id=15 [slave keyboard (3)]
↳ Logitech G502 HERO Gaming Mouse System Control id=17 [slave keyboard (3)]
↳ Logitech G935 Gaming Headset Consumer Control id=18 [slave keyboard (3)]
↳ Logitech G935 Gaming Headset id=19 [slave keyboard (3)]
↳ HyperX Alloy Elite RGB HyperX Alloy Elite RGB Consumer Control id=20 [slave keyboard (3)]
↳ Logitech G502 HERO Gaming Mouse Consumer Control id=21 [slave keyboard (3)]
```
- `libinput record` output:[mouse.yml](/uploads/f25d24a6f26283ae8eb597c1cf8e1159/mouse.yml)
- `libinput debug-events --verbose` output: [file.txt](/uploads/ff08ad9f359cd61925576b748529d039/file.txt)https://gitlab.freedesktop.org/libinput/libinput/-/issues/425Spurious events when USB mouse button is held2020-03-12T02:23:52ZJaak RistiojaSpurious events when USB mouse button is held## Summary
I very often get spurious events when holding down the left mouse button. Oftentimes this results in double clicks instead of single clicks, aborted drags and even right button clicks.
## Steps to reproduce
Hold down the le...## Summary
I very often get spurious events when holding down the left mouse button. Oftentimes this results in double clicks instead of single clicks, aborted drags and even right button clicks.
## Steps to reproduce
Hold down the left mouse button.
## libinput version you encountered the bug on
1.14.3 and 1.15.1
## Hardware information:
Logitech B100 USB mouse directly connected to a Lenovo ThinkPad T490 (20N2) laptop USB port. But this has also happened with other Logitech mice, and also when the mice were connected through a docking station.
## Other log output:
For both of these logs I only pressed the left mouse button once.
- `libinput record` output of pressing and holding down left mouse button:
```
version: 1
ndevices: 1
libinput:
version: "1.15.1"
git: "unknown"
system:
kernel: "5.5.3-gentoo"
dmi: "dmi:bvnLENOVO:bvrN2IET82P(1.60):bd12/30/2019:svnLENOVO:pn20N2S04R00:pvrThinkPadT490:rvnLENOVO:rn20N2S04R00:rvrSDK0J40697WIN:cvnLENOVO:ct10:cvrNone:"
devices:
- node: /dev/input/event15
evdev:
# Name: Logitech USB Optical Mouse
# ID: bus 0x3 vendor 0x46d product 0xc077 version 0x111
# Supported Events:
# Event type 0 (EV_SYN)
# Event type 1 (EV_KEY)
# Event code 272 (BTN_LEFT)
# Event code 273 (BTN_RIGHT)
# Event code 274 (BTN_MIDDLE)
# Event type 2 (EV_REL)
# Event code 0 (REL_X)
# Event code 1 (REL_Y)
# Event code 8 (REL_WHEEL)
# Event code 11 (REL_WHEEL_HI_RES)
# Event type 4 (EV_MSC)
# Event code 4 (MSC_SCAN)
# Properties:
name: "Logitech USB Optical Mouse"
id: [3, 1133, 49271, 273]
codes:
0: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] # EV_SYN
1: [272, 273, 274] # EV_KEY
2: [0, 1, 8, 11] # EV_REL
4: [4] # EV_MSC
properties: []
hid: [5, 1, 9, 2, 161, 1, 9, 1, 161, 0, 5, 9, 25, 1, 41, 3, 21, 0, 37, 1, 149, 8, 117, 1, 129, 2, 5, 1, 9, 48, 9, 49, 9, 56, 21, 129, 37, 127, 117, 8, 149, 3, 129, 6, 192, 192 ]
udev:
properties:
- ID_INPUT=1
- ID_INPUT_MOUSE=1
- LIBINPUT_DEVICE_GROUP=3/46d/c077:usb-0000:00:14.0-4
quirks:
events:
- evdev:
- [ 0, 0, 4, 4, 589825] # EV_MSC / MSC_SCAN 589825
- evdev:
- [ 0, 0, 1, 272, 1] # EV_KEY / BTN_LEFT 1
- [ 0, 0, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +0ms
- evdev:
- [ 4, 296023, 4, 4, 589825] # EV_MSC / MSC_SCAN 589825
- [ 4, 296023, 1, 272, 0] # EV_KEY / BTN_LEFT 0
- [ 4, 296023, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +4296ms
- evdev:
- [ 8, 319879, 4, 4, 589825] # EV_MSC / MSC_SCAN 589825
- [ 8, 319879, 1, 272, 1] # EV_KEY / BTN_LEFT 1
- [ 8, 319879, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +4023ms
- evdev:
- [ 8, 343923, 4, 4, 589826] # EV_MSC / MSC_SCAN 589826
- [ 8, 343923, 1, 273, 1] # EV_KEY / BTN_RIGHT 1
- [ 8, 343923, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +24ms
- evdev:
- [ 8, 384008, 4, 4, 589825] # EV_MSC / MSC_SCAN 589825
- [ 8, 384008, 1, 272, 0] # EV_KEY / BTN_LEFT 0
- [ 8, 384008, 4, 4, 589826] # EV_MSC / MSC_SCAN 589826
- [ 8, 384008, 1, 273, 0] # EV_KEY / BTN_RIGHT 0
- [ 8, 384008, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +41ms
- evdev:
- [ 8, 895937, 4, 4, 589825] # EV_MSC / MSC_SCAN 589825
- [ 8, 895937, 1, 272, 1] # EV_KEY / BTN_LEFT 1
- [ 8, 895937, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +511ms
- evdev:
- [ 8, 919852, 4, 4, 589825] # EV_MSC / MSC_SCAN 589825
- [ 8, 919852, 1, 272, 0] # EV_KEY / BTN_LEFT 0
- [ 8, 919852, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +24ms
- evdev:
- [ 9, 48252, 4, 4, 589825] # EV_MSC / MSC_SCAN 589825
- [ 9, 48252, 1, 272, 1] # EV_KEY / BTN_LEFT 1
- [ 9, 48252, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +129ms
- evdev:
- [ 9, 71961, 4, 4, 589825] # EV_MSC / MSC_SCAN 589825
- [ 9, 71961, 1, 272, 0] # EV_KEY / BTN_LEFT 0
- [ 9, 71961, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +23ms
```
- `libinput debug-events --verbose` output of another test of pressing and holding down the mouse button:
```
# libinput debug-events --verbose /dev/input/event15
libinput version: 1.15.1
event15 - Logitech USB Optical Mouse: is tagged by udev as: Mouse
event15 - Logitech USB Optical Mouse: device is a pointer
-event15 DEVICE_ADDED Logitech USB Optical Mouse seat0 default group1 cap:p left scroll-nat scroll-button
event15 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_OTHERBUTTON → DEBOUNCE_STATE_IS_UP
event15 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_IS_DOWN_WAITING
event15 POINTER_BUTTON +0.000s BTN_LEFT (272) pressed, seat count: 1
event15 - debounce state: DEBOUNCE_STATE_IS_DOWN_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_DOWN
event15 - debounce state: DEBOUNCE_STATE_IS_DOWN → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS
event15 POINTER_BUTTON +0.928s BTN_LEFT (272) released, seat count: 0
event15 - debounce state: DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS → DEBOUNCE_EVENT_TIMEOUT_SHORT → DEBOUNCE_STATE_IS_UP_WAITING
event15 - debounce state: DEBOUNCE_STATE_IS_UP_WAITING → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_IS_DOWN_DELAYING
event15 - debounce state: DEBOUNCE_STATE_IS_DOWN_DELAYING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_DOWN
event15 POINTER_BUTTON +0.952s BTN_LEFT (272) pressed, seat count: 1
event15 - debounce state: DEBOUNCE_STATE_IS_DOWN → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS
event15 POINTER_BUTTON +1.344s BTN_LEFT (272) released, seat count: 0
event15 - debounce state: DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS → DEBOUNCE_EVENT_TIMEOUT_SHORT → DEBOUNCE_STATE_IS_UP_WAITING
event15 - debounce state: DEBOUNCE_STATE_IS_UP_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_UP
event15 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_OTHERBUTTON → DEBOUNCE_STATE_IS_UP
event15 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_IS_DOWN_WAITING
event15 - debounce state: DEBOUNCE_STATE_IS_DOWN_WAITING → DEBOUNCE_EVENT_OTHERBUTTON → DEBOUNCE_STATE_IS_DOWN
event15 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_IS_DOWN_WAITING
event15 - debounce state: DEBOUNCE_STATE_IS_DOWN_WAITING → DEBOUNCE_EVENT_OTHERBUTTON → DEBOUNCE_STATE_IS_DOWN
event15 POINTER_BUTTON +3.984s BTN_LEFT (272) pressed, seat count: 1
event15 POINTER_BUTTON +3.984s BTN_RIGHT (273) pressed, seat count: 1
event15 - debounce state: DEBOUNCE_STATE_IS_DOWN → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS
event15 POINTER_BUTTON +4.000s BTN_RIGHT (273) released, seat count: 0
event15 - debounce state: DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS → DEBOUNCE_EVENT_TIMEOUT_SHORT → DEBOUNCE_STATE_IS_UP_WAITING
event15 - debounce state: DEBOUNCE_STATE_IS_UP_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_UP
event15 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_IS_DOWN_WAITING
event15 POINTER_BUTTON +4.680s BTN_RIGHT (273) pressed, seat count: 1
event15 - debounce state: DEBOUNCE_STATE_IS_DOWN_WAITING → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_IS_UP_DELAYING
event15 - debounce state: DEBOUNCE_STATE_IS_UP_DELAYING → DEBOUNCE_EVENT_OTHERBUTTON → DEBOUNCE_STATE_IS_UP
event15 - debounce state: DEBOUNCE_STATE_IS_DOWN → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS
event15 POINTER_BUTTON +4.688s BTN_RIGHT (273) released, seat count: 0
event15 POINTER_BUTTON +4.704s BTN_LEFT (272) released, seat count: 0
event15 - debounce state: DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS → DEBOUNCE_EVENT_TIMEOUT_SHORT → DEBOUNCE_STATE_IS_UP_WAITING
event15 - debounce state: DEBOUNCE_STATE_IS_UP_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_UP
event15 - debounce state: DEBOUNCE_STATE_IS_UP → DEBOUNCE_EVENT_PRESS → DEBOUNCE_STATE_IS_DOWN_WAITING
event15 POINTER_BUTTON +4.824s BTN_LEFT (272) pressed, seat count: 1
event15 - debounce state: DEBOUNCE_STATE_IS_DOWN_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_DOWN
event15 - debounce state: DEBOUNCE_STATE_IS_DOWN → DEBOUNCE_EVENT_RELEASE → DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS
event15 POINTER_BUTTON +4.864s BTN_LEFT (272) released, seat count: 0
event15 - debounce state: DEBOUNCE_STATE_IS_UP_DETECTING_SPURIOUS → DEBOUNCE_EVENT_TIMEOUT_SHORT → DEBOUNCE_STATE_IS_UP_WAITING
event15 - debounce state: DEBOUNCE_STATE_IS_UP_WAITING → DEBOUNCE_EVENT_TIMEOUT → DEBOUNCE_STATE_IS_UP
^C
event15 - Logitech USB Optical Mouse: device removed
```https://gitlab.freedesktop.org/libinput/libinput/-/issues/350RFE: Mouse acceleration profile enhancements2023-01-29T18:03:33ZMatt MayfieldRFE: Mouse acceleration profile enhancements## Summary
Mouse acceleration that feels better subjectively than the existing profile, as agreed on by a reasonably large number of testers. Or, ability to choose between a small number of alternate acceleration profiles.
## Feature d...## Summary
Mouse acceleration that feels better subjectively than the existing profile, as agreed on by a reasonably large number of testers. Or, ability to choose between a small number of alternate acceleration profiles.
## Feature details
Compared to the current mouse acceleration profile, personally I find it desirable to have:
- A greater difference in speed between slow and fast movements
- Currently, at settings where slow movements are precise enough, fast movements aren't fast enough
- Likewise, at settings where fast movements are fast enough, slow movements are too fast and create muscle strain
- A smoother transition (continuous?) from less to more acceleration, over velocity
- Currently experimenting with quadratic curves instead of ramp/plateau/ramp
## Affected Hardware
All mice
## Implementation in Other Systems
Windows 10 with "Enhance pointer precision" on comes reasonably close to my preference on this. MacOS is slightly different subjectively, but fairly similar to Windows 10. AFAICT, current libinput differs from both of those more than they do from each other.
(@mdmayfield is currently working on a proof-of-concept for this)Matt MayfieldMatt Mayfieldhttps://gitlab.freedesktop.org/libinput/libinput/-/issues/337My Scrolling is very slow2019-09-26T03:34:19ZSergio Sánchez LópezMy Scrolling is very slowHello. My scrolling mouse don't work correctly. If i move wheel of mouse quick, the scroll
just progress. I have to move the wheel slowly to make it work.
I use KDE NEON 18.04 and kernel 5.0.0-23-generic. My Mouse is "MSI Interceptor ...Hello. My scrolling mouse don't work correctly. If i move wheel of mouse quick, the scroll
just progress. I have to move the wheel slowly to make it work.
I use KDE NEON 18.04 and kernel 5.0.0-23-generic. My Mouse is "MSI Interceptor DS B1 Gaming Mouse".
command "xinput" show:
```
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SteelSeries SteelSeries KLC id=11 [slave pointer (2)]
⎜ ↳ USB OPTICAL MOUSE id=13 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=16 [slave pointer (2)]
⎜ ↳ CUST0001:00 06CB:CDAD Touchpad id=14 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Video Bus id=8 [slave keyboard (3)]
↳ Power Button id=9 [slave keyboard (3)]
↳ Sleep Button id=10 [slave keyboard (3)]
↳ HD Webcam: HD Webcam id=12 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=15 [slave keyboard (3)]
↳ MSI WMI hotkeys id=17 [slave keyboard (3)]
↳ SteelSeries SteelSeries KLC id=18 [slave keyboard (3)]
```
command "xinput list 13" show:
```
USB OPTICAL MOUSE id=13 [slave pointer (2)]
Reporting 7 classes:
Class originated from: 13. Type: XIButtonClass
Buttons supported: 9
Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra"
Button state:
Class originated from: 13. Type: XIValuatorClass
Detail for Valuator 0:
Label: Rel X
Range: -1.000000 - -1.000000
Resolution: 0 units/m
MSI Interceptor DS B1 Gaming Mouse Mode: relative
Class originated from: 13. Type: XIValuatorClass
Detail for Valuator 1:
Label: Rel Y
Range: -1.000000 - -1.000000
Resolution: 0 units/m
Mode: relative
Class originated from: 13. Type: XIValuatorClass
Detail for Valuator 2:
Label: Rel Horiz Scroll
Range: -1.000000 - -1.000000
Resolution: 0 units/m
Mode: relative
Class originated from: 13. Type: XIValuatorClass
Detail for Valuator 3:
Label: Rel Vert Scroll
Range: -1.000000 - -1.000000
Resolution: 0 units/m
Mode: relative
Class originated from: 13. Type: XIScrollClass
Scroll info for Valuator 2
type: 2 (horizontal)
increment: 15.000000
flags: 0x0
Class originated from: 13. Type: XIScrollClass
Scroll info for Valuator 3
type: 1 (vertical)
increment: 15.000000
flags: 0x0
```
Help me? Thanks!https://gitlab.freedesktop.org/libinput/libinput/-/issues/282Initial velocity calculation uses the wrong indices2019-06-19T00:30:53ZPeter HuttererInitial velocity calculation uses the wrong indicesThis was pointed out by Simon Thum, introduced by commit 7d06ccc06125844ffc3e914ee8fa0a7b6e0a0df3. Discussion was in email, but this is my analysis:
Trackers are a set of deltas to the current point, including time and direction. `track...This was pointed out by Simon Thum, introduced by commit 7d06ccc06125844ffc3e914ee8fa0a7b6e0a0df3. Discussion was in email, but this is my analysis:
Trackers are a set of deltas to the current point, including time and direction. `trackers[0]` is `0/0`, `trackers[2]` is the delta to point 2 events ago. Velocity is simply that tracker's delta/time.
For up to `trackers[2]`, we use the velocity of that event as initial velocity. But that's wrong, after 6 events we would use event 4 as initial velocity after than actual event 2. I suspect my mistake was taking `offset[2]` as the second event rather than the event 2 events ago.
Before this patch, `initial_velocity` was always `velocity[tracker[1]]`. The fix to get the intended behaviour would be to use something like `(tracker->ntrackers - 2)` instead, but only for `result`, not `initial_velocity`.
Additional problem: we don't have a notion of "the first two events" as 7d06ccc wants it, the trackers are just a continuous buffer. No automatic reset after a timeout is present.https://gitlab.freedesktop.org/libinput/libinput/-/issues/281Configurable constant scale factor2019-06-19T00:30:49ZHactarConfigurable constant scale factor## Summary
There is currently no proper way to simply scale the pointer speed by a constant factor, something which seems quite basic and very useful. There are several workarounds, each of which has their drawbacks:
* `Accel Speed` wo...## Summary
There is currently no proper way to simply scale the pointer speed by a constant factor, something which seems quite basic and very useful. There are several workarounds, each of which has their drawbacks:
* `Accel Speed` works if the "flat" acceleration profile is used. Under any other profile, 'Accel Speed' does not simply scale the resulting pointer movement; it alters the shape of the acceleration curve [as shown here](https://wayland.freedesktop.org/libinput/doc/latest/pointer-acceleration.html). I like my mouse _acceleration_ the way it is, but the _speed_ is too fast.
* `CoordinateTransformationMatrix` can be used to achieve the desired effect, but it is not meant for relative devices like mouse pointers and so causes [other problems](https://gitlab.freedesktop.org/xorg/xserver/issues/633). Additionally, it is my understanding that this would not be available under Wayland, where Libinput is the default (and only?) option.
## Feature details
This feature would introduce a new option, called something like `Constant Scale Factor`, which would be a floating point value ranging from `0` to positive infinity. The acceleration factor for each pointer movement, after all other acceleration calculations, would be multiplied by this value.
Alternatively, call the value `Constant Deceleration` and _divide_ each acceleration factor by this value. This provides equivalent capability.
## Affected Hardware
This would affect all relative pointing devices (mice, touchpads, and maybe [trackpoints](https://xkcd.com/243/)). The option would default to `1`, so existing configurations would remain the same.
## Implementation in Other Systems
Xorg has an option `Device Accel Constant Deceleration` which does exactly what I want. Xorg divides each component of the pointer movement delta by this configurable constant value, after all other acceleration calculations.
## Other relevant links
#224 would have brought this back, but Kim Kröger wanted to use the flat profile anyway, where `Accel Speed` does the job. (I want to use the `adaptive` profile, and so `Accel Speed` does not do what I want.)
[This forum thread](https://bbs.archlinux.org/viewtopic.php?id=244000) and [this StackExchange post](https://unix.stackexchange.com/questions/491531/) should serve to illustrate that I am not the only one who would benefit from this feature, and that the currently accepted workaround is to use Xorg's `CoordinateTransformationMatrix`.
Thank you very much.https://gitlab.freedesktop.org/libinput/libinput/-/issues/254RFE: Allow ScrollButton lock2019-11-22T20:43:36ZPaul EwingRFE: Allow ScrollButton locklibinput currently supports button scroll, which allows the user to hold a
button and use a device's primary motion for scrolling. This is especially
useful for trackballs, where the ball is excellent for scrolling.
As a person who suff...libinput currently supports button scroll, which allows the user to hold a
button and use a device's primary motion for scrolling. This is especially
useful for trackballs, where the ball is excellent for scrolling.
As a person who suffers from dexterity issues in my hands, I would like to
request the ability to use the scroll button to "toggle" the scrolling feature
so that I don't have to hold the button down for long periods while scrolling.
Drag lock currently doesn't work for this purpose when applied to the scroll
button. From a brief discussion on the mailing list, the technical reason for
this is that button scrolling is a libinput feature whereas draglock is a
feature implemented in the xorg driver. Thus, by the time drag lock for the
scroll button activates, libinput is already done with that button.https://gitlab.freedesktop.org/libinput/libinput/-/issues/237Improve hardcoded delay value for button scrolling2021-12-21T04:51:33ZHenré BothaImprove hardcoded delay value for button scrolling## Summary
When using button scrolling, a hardcoded delay of 200 milliseconds between button down and scroll events being emitted makes fast scrolling gestures feel clunky and sometimes fail entirely. Let's discuss what this timeout val...## Summary
When using button scrolling, a hardcoded delay of 200 milliseconds between button down and scroll events being emitted makes fast scrolling gestures feel clunky and sometimes fail entirely. Let's discuss what this timeout value should be.
## Feature details
When using button scrolling (where holding a chosen button down translates pointer movement into scroll events), there is a hardcoded delay of 200 milliseconds (in src/evdev.c) during which the pointer is immobilised, but scroll events are not yet emitted. This delay forms part of the design allowing the chosen button to perform both its normal function and the button scroll function. It acts to prevent minor mouse movement during what is intended to be a normal click from swallowing the click event and instead emitting scroll events. (It is likely that a pointing device will experience minor movement during a normal button press; that is what this delay is attempting to work around.)
200 milliseconds is a long time. I have used dedicated utils in the past to provide this functionality on other operating systems, and those utils do not attempt to preserve the button's original function, and thereby have no need of a delay. Using those utils, it's easy to press the scroll button and immediately begin scrolling, which feels quite natural. Attempting this gesture with the 200 ms delay in place is much more clunky; the intended scrolling often does not happen at all (for quick "one page" scroll flicks, which for me take less than 200 ms).
I discussed this a bit with @whot over email, and he suggested we could discuss perhaps changing the timeout length, as the 200 ms value was chosen seemingly arbitrarily and has never changed.
I've compiled libinput with the delay reduced to 50 ms, which feels fairly natural for scrolling, but starts to lose the intended "anti-jitter" effect. I'm not sure whether a value exists which would both enable natural scrolling gestures and preserve the button's original function. Perhaps we need to concretely determine _how much_ anti-jitter is needed?
## Affected Hardware
Any pointing devices that use button scrolling are affected.
The feature in its current state benefits devices such as mice, but devices such as trackpads and trackballs actually see little benefit because it is easy to press a button with absolutely no pointer movement.
## Implementation in Other Systems
Other utils typically don't attempt to preserve the button's original function, and so don't have a delay in place.
<!-- original email
I've compiled libinput reducing that delay from 200 ms to 50 ms and it feels very responsive for scrolling. I think what was tripping me up before, being used to instantaneous move->scroll translation, was I had gotten used to being able to hit the button, "spin" the ball, and release the button over a very short (< 250 ms) period to scroll roughly one page up/down. With the long delay, that entire "gesture" got swallowed. With 50 ms, I can still do that quite easily.
However, from my testing, this does kill the previous desired behaviour of buffering against minor mouse movements while clicking.
-->