libinput issueshttps://gitlab.freedesktop.org/groups/libinput/-/issues2022-07-25T02:39:26Zhttps://gitlab.freedesktop.org/libinput/libinput/-/issues/235Enable Circular Scrolling2022-07-25T02:39:26Zghost6482Enable Circular ScrollingIt would be great if you add Circular Scrolling feature like in Synaptics driver. Many people have accustomed to it and find this feature useful.It would be great if you add Circular Scrolling feature like in Synaptics driver. Many people have accustomed to it and find this feature useful.https://gitlab.freedesktop.org/libinput/libinput/-/issues/298Request for three fingers click+movement2024-03-17T18:59:48ZPedro SantosRequest for three fingers click+movement## Summary
Request for a movement of three fingers touch the touchpad to cause the movement of the pointer
Request for a mouse left button down + up while moving the pointer with three fingers
## Feature details
1. rest three fingers ...## Summary
Request for a movement of three fingers touch the touchpad to cause the movement of the pointer
Request for a mouse left button down + up while moving the pointer with three fingers
## Feature details
1. rest three fingers at the touchpad
1. move the three fingers at the same time for the same direction
1. the pointer follows the the movement made by the three fingers
1. move the pointer to the window title bar
2. touch the touchpad with three fingers
2. move the three fingers to the right
2. the window moves to the right, as if the mouse left button were pressed
2. remove two fingers from the touchpad
2. the window stops moving as if the mouse left button stoped being pressed
2. keep moving the remaining finger on the touchpad
2. the pointer keeps moving following the remaining finger
## Implementation in Other Systems
This was the default behaviour in Apple trackpads in 2012 macbooks. Recently this behaviour for three fingers touch/movement is an options in the trackpad preferences.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/7RFE: Proposal for libinput mouse wheel acceleration2023-03-08T13:06:18ZBugzilla Migration UserRFE: Proposal for libinput mouse wheel acceleration## Submitted by Adam Goode
Assigned to **Wayland bug list**
**[Link to original bug (#101141)](https://bugs.freedesktop.org/show_bug.cgi?id=101141)**
## Description
Let me start with this proposal for mouse wheel acceleration in l...## Submitted by Adam Goode
Assigned to **Wayland bug list**
**[Link to original bug (#101141)](https://bugs.freedesktop.org/show_bug.cgi?id=101141)**
## Description
Let me start with this proposal for mouse wheel acceleration in libinput.
Use case:
- Scrolling through a long document is slow with a mouse wheel
Prior work showing benefits of wheel acceleration:
- macOS
- Chrome OS
Requirements:
- Don't break anything
- Require minimum changes from clients
Proposal:
- Mouse wheel acceleration at the libinput level, only for mouse wheels
- Do no acceleration on values returned from libinput_event_pointer_get_axis_value_discrete, this keeps the promise in the API of reporting "physical mouse wheel clicks" and keeps us from needing to implement a new "get unaccelerated" API
- Ensure that legacy X wheel events (pre-XI2.1) are not accelerated
Open questions:
- Does this cover enough clients without breaking things? Chrome and Firefox support XI2.1, so this would accelerate those programs.
- Under X or XWayland, is it possible to accelerate XI2.1 events but not the legacy events? Or are the legacy events generated automatically?
- Or is it ok to accelerate legacy X wheel events? emacs has scroll acceleration already, and other clients may as well.https://gitlab.freedesktop.org/libinput/libei/-/issues/1Tracking issue for portal support2023-12-20T14:56:42ZPeter HuttererTracking issue for portal supportThis makes it easier to figure out the right combination of branches
| Project | Branch/PR |
|---------|--------|
| libei | as of version `1.0.0`, branch [main](https://gitlab.freedesktop.org/whot/libei/-/tree/main) |
| ~~weston~~ | ...This makes it easier to figure out the right combination of branches
| Project | Branch/PR |
|---------|--------|
| libei | as of version `1.0.0`, branch [main](https://gitlab.freedesktop.org/whot/libei/-/tree/main) |
| ~~weston~~ | ~~[whot:wip/eis](https://gitlab.freedesktop.org/whot/weston/-/tree/wip/eis)~~ abandoned for now |
| xwayland| [PR (merged)](https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/975/diffs) |
| xdg-desktop-portal | [PR for `RemoteDesktop.ConnectToEIS` (merged)](https://github.com/flatpak/xdg-desktop-portal/pull/762)
| xdg-desktop-portal | [PR for `InputCapture` (merged)](https://github.com/flatpak/xdg-desktop-portal/pull/714) [1]
| libportal | [PR for `RemoteDesktop.ConnectToEIS` (merged)](https://github.com/flatpak/libportal/pull/114)
| libportal | [PR for `InputCapture`](https://github.com/flatpak/libportal/pull/96)
| xdg-desktop-portal-gnome | [PR for `RemoteDesktop.ConnectToEIS` (merged)](https://gitlab.gnome.org/GNOME/xdg-desktop-portal-gnome/-/merge_requests/97) |
| xdg-desktop-portal-gnome | [PR for `InputCapture` (merged)](https://gitlab.gnome.org/GNOME/xdg-desktop-portal-gnome/-/merge_requests/61) |
| xdg-desktop-portal-kde | [issue](https://invent.kde.org/plasma/xdg-desktop-portal-kde/-/issues/8)
| mutter | [PR (merged)](https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2628)
| input-leap | [PR (merged)](https://github.com/input-leap/input-leap/pull/1594)
| wlroots | Not planned, see [this issue](https://github.com/swaywm/wlroots/issues/2378) |
[1] As of Dec 13, the `InputCapture` PR is now rebased on top of the [`RemoteDesktop.ConnectToEIS` PR](https://github.com/flatpak/xdg-desktop-portal/pull/762) so that branch alone is sufficient.https://gitlab.freedesktop.org/libinput/libinput/-/issues/433Palm exclusion zones are not worth it on some hardware2023-04-11T00:06:47ZRyan HendricksonPalm exclusion zones are not worth it on some hardwareOn my MacBookPro5,1 internal touchpad, the palm exclusion zone logic very frequently caused my three- and four-finger taps and gestures to lose a finger. I ended up commenting out `tp_init_palmdetect_edge`, and the remaining palm detecti...On my MacBookPro5,1 internal touchpad, the palm exclusion zone logic very frequently caused my three- and four-finger taps and gestures to lose a finger. I ended up commenting out `tp_init_palmdetect_edge`, and the remaining palm detection mechanisms are sufficiently robust that I haven't noticed any palm touches at all since.
I know how you feel about configuration, so I'll only offer this as another data point (in addition to #190, at a minimum) that on some hardware at least, palm exclusion zones add no value beyond the other palm detection methods and detract from accurate gesture detection. Maybe this merits a hardware quirk to disable exclusion zones, or some other logic, or a broader reevaluation of the feature?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/193Implement TPCButton option for Wacom tablet PCs2021-01-25T10:29:34ZPeter HuttererImplement TPCButton option for Wacom tablet PCsTPCButton is the option provided by the wacom driver to modify the behaviour of the stylus buttons. When enabled, stylus
buttons act as a modifier for the tip.
To right-click:
- hold the stylus button down
- tap the screen with the tip...TPCButton is the option provided by the wacom driver to modify the behaviour of the stylus buttons. When enabled, stylus
buttons act as a modifier for the tip.
To right-click:
- hold the stylus button down
- tap the screen with the tip
cc @jigpu
This feature is enabled by default for a number of tablet PCs hardcoded into the wacom driver, but the last entry to this list was in 2014. This would obviously be a device quirk, but whether it's necessary is a completely different question...https://gitlab.freedesktop.org/libinput/libinput/-/issues/370tablet: configurable eraser button2022-06-10T04:40:06ZPeter Hutterertablet: configurable eraser buttonSome styli have the windows-style eraser button instead of the eraser at the back of the stylus. The button generates proximity events in the device, so the sequence on eraser button press is: stylus proximity out, eraser proximity in, a...Some styli have the windows-style eraser button instead of the eraser at the back of the stylus. The button generates proximity events in the device, so the sequence on eraser button press is: stylus proximity out, eraser proximity in, and the reverse on release.
Users don't always want/need an eraser button but want that button to work normally, so we should make this configurable behaviour.
- [x] we'll need libwacom support for tagging the affected styli
- [ ] any stylus with that functionality needs to export nbuttons + 1 and return the right bits from `has_key()` etc.
- [ ] the eraser button causes a proximity out event of the pen, then in the next evdev frame the proximity in, so we can't detect it as button press directly. We'll have to paper over this correctly.
cc @jigpuhttps://gitlab.freedesktop.org/libinput/libinput/-/issues/171Configuring tap to click timeout (DEFAULT_TAP_TIMEOUT_PERIOD constant)2022-01-14T09:44:34ZAndrey PetrovConfiguring tap to click timeout (DEFAULT_TAP_TIMEOUT_PERIOD constant)## Summary
Would love to be able to change the tap to click timeout without having to edit source code and recompile libinput.
## Feature details
Right now there is a constant that determines the time a tap has before it is released s...## Summary
Would love to be able to change the tap to click timeout without having to edit source code and recompile libinput.
## Feature details
Right now there is a constant that determines the time a tap has before it is released so that it counts as a click. It's defined here: https://gitlab.freedesktop.org/libinput/libinput/blob/master/src/evdev-mt-touchpad-tap.c#L35
It's hardcoded to 180ms, which is a fairly generous value. On other platforms (macOS/Windows), the tap to click timeout feels closer to 100-150ms. The result is when you try to tap to click, there is a noticeable "lag" before the click is registered.
Would be great if libinput consumers could easily override this timeout in a config.
## Implementation in Other Systems
- mtrack has `MaxTapTime` which defaults to 120ms: https://github.com/p2rkw/xf86-input-mtrack#MaxTapTime
- synaptics also has `MaxTapTime` but unsure of the default (maybe 180ms?).https://gitlab.freedesktop.org/libinput/libinput/-/issues/889Help me to understand where is the problem with HIRES wheel and how to dial w...2023-09-20T21:06:44ZVolodymyr ZolotopupovHelp me to understand where is the problem with HIRES wheel and how to dial with sync between non-hires and hires eventsI trying to understand how to deal with sync between non-hires and hires steps events, and is this is correct that libinput ignores non-hires steps from the kernel(REL_WHEEL) and counting themselves it from hires events to put it in .del...I trying to understand how to deal with sync between non-hires and hires steps events, and is this is correct that libinput ignores non-hires steps from the kernel(REL_WHEEL) and counting themselves it from hires events to put it in .delta.
Lets assume our application that using libinput starts when mouse been in free-spin mode(like MX master/anywhere 3, no stepping mode), in this case mouse can idle on non-step position and fresh run application will take current position as 0(will assume the wheel is stay on step position, not in the middle). Then we starting to accumulate v120 events to determine "steps" and those steps will be incorrect and out-of-sync with non-hires steps from the kernel because starting point was not on "step begin".
From this point we are running into incorrect stepping and user experiencing problems with non-hires scrolling like a skipping steps(because missed start step point) or opposite - double steps in one hardware step.
Do we need to sync REL_WHEEL with REL_WHEEL_HI_RES to determine hardware step, as the kernel driver have more control over the mouse and can determine "step begin" more accurate, or how to deal with it?
I have a problems with MX Anywhere 3 in wayland KDE session like I'm described before, miss-stepping and over-stepping(2 steps in one hardware step), and can't understand what is going on. Feels like the problems is starting from libinput and finish with kwin.
Also, I can mention that the in stepping mode, the mouse after kernel REL_WHEEL can push one or more events of REL_WHEEL_HI_RES ahead. I don't know is this is a normal behavior, but this is making the problem is more global, that involved all input chain of components.https://gitlab.freedesktop.org/libinput/libinput/-/issues/783A need for a new and more consistent Mouse Acceleration profile. (Inspired by...2022-07-09T08:55:09ZFeldworA need for a new and more consistent Mouse Acceleration profile. (Inspired by Windows Operating System)<!--
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
After some years of `libinput` and `evdev` experience, I have came up with a conclusion that
the [pointer acceleration profiles: `Flat` and `Adaptive`][1] might not be enough for an average user of Linux systems.
Especially if the user is coming from one of the most popular desktop operating systems Windows.
The mouse behaviour might not appear too different, but it definitely have at a very least a subconcious resistance.
So to ease this resistance, I believe and I think that an implementation of a new Mouse Acceleration profile is required.
This Mouse Acceleration profile should be loosely based on Enhance Pointer Precision feature found in Windows Mouse Properties.
Some people believe this is a personal preference , but it's no longer a personal preference,
once it affects millions of people with millions of pointer devices.
At the very least this would allow the possibility of a more standard behaviour in computer mouses.
[1]: https://wayland.freedesktop.org/libinput/doc/latest/pointer-acceleration.html#pointer-acceleration-profiles
<!-- Summarize the requested feature in a few sentences. -->
## Feature details
The new Mouse Acceleration profile should allow to feel the average Windows Mouse user at home.
**The suggestive name for this new mouse acceleration profile:** `ballistic`
<!-- A step-by-step list of what the feature should achieve (where applicable) -->
## Affected Hardware
Mouse pointer devices, of the Windows operating system users.
<!-- Which hardware types would be affected by this -->
## Implementation in Other Systems
### Windows Operating System
Enhance Pointer Precision feature found in Windows Mouse Properties.
I'm not sure how much of a help this might be, but I've found:
[An archived resource about Mouse Acceleration in Windows.](https://web.archive.org/web/20101222190833/http://www.microsoft.com/whdc/archive/pointer-bal.mspx) ([Mirror](https://superuser.com/a/1706565/740880)) [(Discussion)](https://news.ycombinator.com/item?id=23269286)
![image](/uploads/cb108c0ac24ff3fa880eec81d8e8aaa1/image.png)
<!-- 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/6244 fingers gestures sometimes prevent 3 fingers gestures2022-05-04T13:00:21ZOz Ls4 fingers gestures sometimes prevent 3 fingers gestures## Summary
Hello everyone! Sometimes, after a 4 fingers swipe gestures, 3 fingers gestures will start being interpreted as 2 finger gestures. For instance, a 3 fingers swipe up will be interpreted as a scroll. This also goes for a three...## Summary
Hello everyone! Sometimes, after a 4 fingers swipe gestures, 3 fingers gestures will start being interpreted as 2 finger gestures. For instance, a 3 fingers swipe up will be interpreted as a scroll. This also goes for a three finger tap, which gets interpreted as a right-click. The bug goes aways after a single new 4 fingers gesture (a simple tap will do), and 3 fingers gestures start working again normally.
## Steps to reproduce
I don't know how to reliably reproduce this, I know it's a rare occurence. I had it on a previous machine as well, so it is most likely due to interference with other software I use. Off the top of my head, here are some characteristics of both machines I encountered this issue with:
- Lenovo machine
- Arch-based distro
- Gnome is installed
- libinput-gestures installed (but I already checked and the bug happens even when it's not active at all)
Otherwise, I have noticed this on Gnome and Sway, both on Wayland.
## Required information
- libinput version: 1.18.0
Here are typical `libinput debug-events` logs of this bug happening.
(1) I start off with some 3 fingers gestures, they get recognized normally:
```
event8 GESTURE_SWIPE_UPDATE +13.149s 3 -1.00/10.30 (-3.75/38.53 unaccelerated)
event8 GESTURE_SWIPE_UPDATE +13.175s 3 -0.33/ 6.24 (-1.25/23.34 unaccelerated)
event8 GESTURE_SWIPE_END +13.199s 3
```
(2) I do a series of 4 fingers gestures, getting recognized normally as well:
```
event8 GESTURE_SWIPE_BEGIN +13.712s 4
event8 GESTURE_SWIPE_UPDATE +13.712s 4 0.58/-10.90 ( 2.19/-40.78 unaccelerated)
event8 GESTURE_SWIPE_UPDATE +13.738s 4 5.10/-17.97 (19.06/-67.21 unaccelerated)
event8 GESTURE_SWIPE_UPDATE +13.764s 4 0.00/-2.41 ( 0.00/-9.00 unaccelerated)
event8 GESTURE_SWIPE_END +13.799s 4
event8 GESTURE_SWIPE_BEGIN +14.122s 4
event8 GESTURE_SWIPE_UPDATE +14.122s 4 1.00/-6.02 ( 3.75/-22.50 unaccelerated)
event8 GESTURE_SWIPE_UPDATE +14.148s 4 0.42/-1.80 ( 1.56/-6.75 unaccelerated)
event8 GESTURE_SWIPE_END +14.170s 4
```
(3) I am doing 3 fingers gestures again, but now they get recognized as scrolling:
```
event8 POINTER_AXIS +14.697s vert 19.16/0* horiz 0.00/0 (finger)
event8 POINTER_AXIS +14.722s vert 9.39/0* horiz 0.00/0 (finger)
event8 POINTER_AXIS +14.747s vert -84.52/0* horiz 93.24/0* (finger)
event8 POINTER_AXIS +14.771s vert 0.00/0* horiz 0.00/0* (finger)
event8 POINTER_AXIS +15.758s vert 16.45/0* horiz 0.00/0 (finger)
```
Again, I know it's rare and it's probably coming from my specific mix of softwares etc, but it would really help if anybody had any idea what could cause this. I don't even understand what could be happening behind the scenes. It's not very important, but it's an annoying issue. Let me know if any more info is needed, and thanks in advance for any help!https://gitlab.freedesktop.org/libinput/libinput/-/issues/536Continue to slowly move the cursor when reaching the edge of the touchpad2023-04-12T01:27:44ZJoseph AveltsevContinue to slowly move the cursor when reaching the edge of the touchpad## Feature details
When you make a selection (e. g. text, selection rectangle, or something) and reach the edge of a touchpad the cursor stops moving. I'd like it to slowly continue to move as it's done on Windows.
## Implementation in...## Feature details
When you make a selection (e. g. text, selection rectangle, or something) and reach the edge of a touchpad the cursor stops moving. I'd like it to slowly continue to move as it's done on Windows.
## Implementation in Other Systems
It exists on Windows.https://gitlab.freedesktop.org/libinput/libinput/-/issues/469Support "Add finger to click" on Trackpads2021-02-11T13:54:16ZKevin CoxSupport "Add finger to click" on Trackpads## Summary
It should be possible to click while moving the cursor by tapping the trackpad with additional fingers. For example I am using one finger to place my cursor on a link, then I can tap a second finger to select that link. I can...## Summary
It should be possible to click while moving the cursor by tapping the trackpad with additional fingers. For example I am using one finger to place my cursor on a link, then I can tap a second finger to select that link. I can then continue dragging the cursor with the first finger.
## Feature details
This feature allows the user to be more efficient with a trackpad as they don't need to stop moving the cursor before clicking, something that is currently a lot more awkward compared to using a mouse.
Basic use case:
1. Move cursor to a clickable target then, without lifting the first finger, tap a second finger to click that target. The cursor can continue to be dragged with the original finger.
Additional use cases:
1. Move cursor to a dragable target, add a second finger to "pick up" the target, move the target to the destination, then let go of the second finger to drop.
- Note: Currently adding a second finger will enter scroll mode, so this should be behind a preference.
2. Move the cursor using a finger, add 2 fingers to right click, add 3 fingers to middle click.
## Affected Hardware
Multi-touch trackpads.
## Implementation in Other Systems
Yes, this feature is implemented on the builtin Macbook trackpads and on the Apple Magic Trackpad.
/label ~enhancement ~"needs triage"https://gitlab.freedesktop.org/libinput/libinput/-/issues/468Small movements are imprecise on Pinebook Pro touchpad2020-07-01T22:58:50ZVasily KhoruzhickSmall movements are imprecise on Pinebook Pro touchpad## Summary
Small movements are imprecise on Pinebook Pro touchpad. It feels like there's too much hysteresis
## Steps to reproduce
Try touchpad on Pinebook Pro, it's pretty easy to notice.
## Required information
- libinput version:...## Summary
Small movements are imprecise on Pinebook Pro touchpad. It feels like there's too much hysteresis
## Steps to reproduce
Try touchpad on Pinebook Pro, it's pretty easy to notice.
## Required information
- libinput version: git master (5a9fb539d94ec623289a8711b16d63862fe88ad6)
- hardware information:
- `libinput record` output: [out](/uploads/f5541c159c49c32700ea1a64b03da2ec/out)
- `libinput debug-events --verbose` output: [out-debug-events](/uploads/1324fdff1e68c3034814832b144ae1de/out-debug-events)
Disabling deceleration helps:
```
diff --git a/src/filter-touchpad.c b/src/filter-touchpad.c
index 0a9fdc2d..63419bd7 100644
--- a/src/filter-touchpad.c
+++ b/src/filter-touchpad.c
@@ -286,7 +286,8 @@ touchpad_accel_profile_linear(struct motion_filter *filter,
*/
if (speed_in < 7.0) {
- factor = min(baseline, 0.1 * speed_in + 0.3);
+ //factor = min(baseline, 0.1 * speed_in + 0.3);
+ factor = baseline;
/* up to the threshold, we keep factor 1, i.e. 1:1 movement */
} else if (speed_in < threshold) {
factor = baseline;
```https://gitlab.freedesktop.org/libinput/libinput/-/issues/379Add disable while typing timeout configuration options.2022-06-06T03:14:04ZRidgeAAdd disable while typing timeout configuration options.<!--
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
I would like to have an option to configure timeouts that applies for DWT feature. Often the default timeout (1000 ms) not enough for me.
<!-- Summarize the requested feature in a few sentences. -->
## Affected Hardware
<!-- Which hardware types would be affected by this -->
Touchpad and keyboard
## Implementation in Other Systems
<!-- Does this feature already exist elsewhere? How does it work there? Try
to provide as many details as possible -->
It is possible to configure it via `syndaemon`
e.g.
```
syndaemon -i .5
```https://gitlab.freedesktop.org/libinput/libinput/-/issues/286hysteresis enabled by wobble detection unnecessarily2024-01-29T14:26:17ZTomáš Janoušekhysteresis enabled by wobble detection unnecessarily## Summary
During normal laptop use, hysteresis is always sooner or later (minutes rather than days) turned on by wobble detection and since then, the touchpad is imprecise (as described in <https://bugs.freedesktop.org/show_bug.cgi?i...## Summary
During normal laptop use, hysteresis is always sooner or later (minutes rather than days) turned on by wobble detection and since then, the touchpad is imprecise (as described in <https://bugs.freedesktop.org/show_bug.cgi?id=98839>).
## Steps to reproduce
1. `$ sudo ./libinput-debug-events --verbose /dev/input/event1`
2. move finger vertically
3. sooner or later, `event1 - hysteresis enabled.` appears
The output around this happening looks like this:
```
event1 POINTER_MOTION +16.90s -0.23/ 0.92 ( -1.00/ +3.91)
event1 POINTER_MOTION +16.91s 0.00/ 1.22 ( +0.00/ +5.22)
event1 POINTER_MOTION +16.92s 0.23/ 1.53 ( +1.00/ +6.52)
event1 POINTER_MOTION +16.93s -0.23/ 1.53 ( -1.00/ +6.52)
event1 POINTER_MOTION +16.95s 0.23/ 1.53 ( +1.00/ +6.52)
event1 - hysteresis enabled. See https://wayland.freedesktop.org/libinput/doc/latest/touchpad-jitter.html for details
event1 POINTER_MOTION +16.97s -2.81/ 2.29 (-12.00/ +9.78)
event1 POINTER_MOTION +16.98s 0.70/ 0.76 ( +3.00/ +3.26)
event1 POINTER_MOTION +16.99s 0.70/ 1.53 ( +3.00/ +6.52)
event1 POINTER_MOTION +17.01s 0.47/ 1.37 ( +2.00/ +5.87)
```
Note that this touchpad has absolutely no jitter when holding a finger still even before hysteresis is turned on -- I can confirm this by running `libinput-debug-events`. There's not a single movement between two `button state:` events if I hold the finger still. There is also no fuzz in the kernel:
```
$ sudo ./libinput-measure-fuzz
Using SynPS/2 Synaptics TouchPad: /dev/input/event1
Checking udev property... not set
Checking axes... is zero
$ sudo udevadm info -e | grep -i -c fuzz
0
```
I'm convinced this means the hysteresis is done in touchpad firmware and I am very happy with it: I've been running for more than a year with wobble detection commented out and it just works: the touchpad reacts precisely to any little movement and there's no wobble ever.
I also tried playing a bit with the wobble detection, incresing the number of right-left-rights that need to happen for hysteresis to kick in.
```
static const char r_l_r = 0x15; /* {Right, Left, Right, Left, Right} */
t->hysteresis.x_motion_history |= (1 << 4);
```
^^ with this I could enable it by moving the finger vertically in a few seconds.
```
static const char r_l_r = 0x55; /* {Right, Left, Right, Left, Right, Left, Right} */
t->hysteresis.x_motion_history |= (1 << 6);
```
^^ this was harder, but I could still do it within a minute.
I'm sure I'd hit this sooner or later within my X uptime, and since there's no way to turn it off (sans attaching gdb to X), I'd be a very sad man afterwards. Therefore I think the wobble detection needs to be made somewhat smarter, perhaps taking both axes into account. As I don't happen to have any wobbling touchpad around, I'm not sure I can help much further. :-(
Alternatively, I'd be just as happy with adding a quirk or udev rule that tells libinput not to ever enable hysteresis. But I understand that you'd rather have me build my own libinput package than introduce a configuration parameter, and I can accept that — I don't really mind running a patched version of libinput on our laptops but I think this issue hits many other ThinkPads out there. It's probably less pronounced than it used to be in the days of the linked bugzilla thanks to 6936a15558f7baa047bdb7e31604ef29be1ae552 and ea7498ef971350454db9c78b9ba160e7d6bb455b, but I perceive the inability to precisely make one-pixel movements/scrolls a bug.
## libinput version you encountered the bug on
$ git describe --tags
1.13.0-57-gcac9d537
and all other versions of libinput since e8dffbd73a1b3c17716f972f210e420de94028c2 was merged.
## Hardware information:
ThinkPad T25
```
dmi:bvnLENOVO:bvrN1QET79W(1.54):bd11/16/2018:svnLENOVO:pn20K70000GE:pvrThinkPad25:rvnLENOVO:rn20K70000GE:rvrNotDefined:cvnLENOVO:ct10:cvrNone:
```
```
P: /devices/platform/i8042/serio1/input/input2/event1
N: input/event1
L: 0
S: input/by-path/platform-i8042-serio-1-event-mouse
E: DEVPATH=/devices/platform/i8042/serio1/input/input2/event1
E: SUBSYSTEM=input
E: DEVNAME=/dev/input/event1
E: MAJOR=13
E: MINOR=65
E: USEC_INITIALIZED=18924531
E: ID_INPUT=1
E: ID_INPUT_TOUCHPAD=1
E: ID_INPUT_WIDTH_MM=98
E: ID_INPUT_HEIGHT_MM=53
E: ID_BUS=i8042
E: ID_SERIAL=noserial
E: ID_PATH=platform-i8042-serio-1
E: ID_PATH_TAG=platform-i8042-serio-1
E: ID_INPUT_TOUCHPAD_INTEGRATION=internal
E: LIBINPUT_DEVICE_GROUP=11/2/7:isa0060/serio1
E: DEVLINKS=/dev/input/by-path/platform-i8042-serio-1-event-mouse
```
We have the exact same problem on my wife's ThinkPad T440p but as mentioned in https://bugs.freedesktop.org/show_bug.cgi?id=98839#c71, the touchpad firmware that came with the laptop did wobble for a second until its hysteresis kicked in and we had to update the firmware. Since then, she's running libinput with commented out wobble-detection and it works brilliantly.
## Other log output:
- `libinput record` output: [libinput-record.txt](/uploads/e5acd82bf78957b3e00072a0a6132c1f/libinput-record.txt)
- `libinput debug-events --verbose` output: [libinput-debug-events.txt](/uploads/8d1ee34e7f0c32299758880affb1cfa3/libinput-debug-events.txt)https://gitlab.freedesktop.org/libinput/libinput/-/issues/176Trackpoint jumpy and unsteady on Thinkpad2019-01-21T07:09:57ZdkkkkfulTrackpoint jumpy and unsteady on Thinkpad## Summary
Hello
If I use my trackpoint to steer the cursor it reacts jumpy and wobbly. Especially at short distances it jumps (occasionally) in all directions. It is nearly impossible to move the cursor at a steady pace or in a straight...## Summary
Hello
If I use my trackpoint to steer the cursor it reacts jumpy and wobbly. Especially at short distances it jumps (occasionally) in all directions. It is nearly impossible to move the cursor at a steady pace or in a straight direction. It seems to me that de acceleration of the cursor is uncotrollable and any attemps to regain controll makes the behavior worse.
I'm not sure whether I did everything correct please tell me if not or if something is missing.
## Steps to reproduce
Use libinput as input driver and a thinkpad trackpoint
## libinput version you encountered the bug on
libinput10 1.12.1-1, libinput-bin 1.12.1-1 and xserver-xorg-input-libinput 0.28.0-1
## Hardware information:
The bug/behavior appears on a T510i, T450s and T480s with Ubuntu 18.04
## Other log output:
- `libinput record` output: `Recording to 'stdout'.
```
version: 1
ndevices: 1
libinput:
version: "1.12.1"
git: "unknown"
system:
kernel: "4.15.0-38-generic"
dmi: "dmi:bvnLENOVO:bvrJBET41WW(1.06):bd12/23/2014:svnLENOVO:pn20BWS02D00:pvrThinkPadT450s:rvnLENOVO:rn20BWS02D00:rvrNotDefined:cvnLENOVO:ct10:cvrNone:"
devices:
- node: /dev/input/event6
evdev:
# Name: TPPS/2 IBM TrackPoint
# ID: bus 0x11 vendor 0x2 product 0xa version 00
# 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)
# Properties:
# Property 0 (INPUT_PROP_POINTER)
# Property 5 (INPUT_PROP_POINTING_STICK)
name: "TPPS/2 IBM TrackPoint"
id: [17, 2, 10, 0]
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] # EV_REL
properties: [0, 5]
udev:
properties:
- ID_INPUT=1
- ID_INPUT_MOUSE=1
- ID_INPUT_POINTINGSTICK=1
- LIBINPUT_DEVICE_GROUP=11/2/a:synaptics-pt/serio0
- POINTINGSTICK_CONST_ACCEL=1.0
- POINTINGSTICK_SENSITIVITY=200
quirks:
events:
- evdev:
- [ 0, 0, 2, 0, -1] # EV_REL / REL_X -1
- [ 0, 0, 2, 1, -1] # EV_REL / REL_Y -1
- [ 0, 0, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +0ms
- evdev:
- [ 1, 791613, 2, 0, 1] # EV_REL / REL_X 1
- [ 1, 791613, 2, 1, 1] # EV_REL / REL_Y 1
- [ 1, 791613, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +1791ms
- evdev:
- [ 1, 820125, 2, 0, 1] # EV_REL / REL_X 1
- [ 1, 820125, 2, 1, 2] # EV_REL / REL_Y 2
- [ 1, 820125, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +29ms
- evdev:
- [ 1, 845971, 2, 0, 3] # EV_REL / REL_X 3
- [ 1, 845971, 2, 1, 3] # EV_REL / REL_Y 3
- [ 1, 845971, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +25ms
- evdev:
- [ 1, 916796, 2, 1, 1] # EV_REL / REL_Y 1
- [ 1, 916796, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +71ms
- evdev:
- [ 1, 942810, 2, 0, 1] # EV_REL / REL_X 1
- [ 1, 942810, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +26ms
- evdev:
- [ 1, 962055, 2, 1, 1] # EV_REL / REL_Y 1
- [ 1, 962055, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +20ms
- evdev:
- [ 2, 57940, 2, 0, 1] # EV_REL / REL_X 1
- [ 2, 57940, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +95ms
- evdev:
- [ 2, 127416, 2, 0, -1] # EV_REL / REL_X -1
- [ 2, 127416, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +70ms
- evdev:
- [ 2, 308579, 2, 1, -1] # EV_REL / REL_Y -1
- [ 2, 308579, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +181ms
- evdev:
- [ 2, 628518, 2, 1, 1] # EV_REL / REL_Y 1
- [ 2, 628518, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +320ms
- evdev:
- [ 2, 656837, 2, 0, 1] # EV_REL / REL_X 1
- [ 2, 656837, 2, 1, 1] # EV_REL / REL_Y 1
- [ 2, 656837, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +28ms
- evdev:
- [ 2, 682714, 2, 0, 2] # EV_REL / REL_X 2
- [ 2, 682714, 2, 1, 6] # EV_REL / REL_Y 6
- [ 2, 682714, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +26ms
- evdev:
- [ 2, 712264, 2, 1, 1] # EV_REL / REL_Y 1
- [ 2, 712264, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +30ms
- evdev:
- [ 2, 829257, 2, 0, 1] # EV_REL / REL_X 1
- [ 2, 829257, 2, 1, 1] # EV_REL / REL_Y 1
- [ 2, 829257, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +117ms
- evdev:
- [ 3, 173422, 2, 1, 1] # EV_REL / REL_Y 1
- [ 3, 173422, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +344ms
- evdev:
- [ 3, 192959, 2, 0, 1] # EV_REL / REL_X 1
- [ 3, 192959, 2, 1, 1] # EV_REL / REL_Y 1
- [ 3, 192959, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +19ms
- evdev:
- [ 3, 212590, 2, 0, 1] # EV_REL / REL_X 1
- [ 3, 212590, 2, 1, 1] # EV_REL / REL_Y 1
- [ 3, 212590, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +20ms
- evdev:
- [ 3, 233960, 2, 0, 1] # EV_REL / REL_X 1
- [ 3, 233960, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +21ms
- evdev:
- [ 3, 262602, 2, 0, 1] # EV_REL / REL_X 1
- [ 3, 262602, 2, 1, 1] # EV_REL / REL_Y 1
- [ 3, 262602, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +29ms
- evdev:
- [ 3, 288524, 2, 0, 1] # EV_REL / REL_X 1
- [ 3, 288524, 2, 1, 2] # EV_REL / REL_Y 2
- [ 3, 288524, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +26ms
- evdev:
- [ 3, 327721, 2, 0, 1] # EV_REL / REL_X 1
- [ 3, 327721, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +39ms
- evdev:
- [ 3, 356793, 2, 1, 1] # EV_REL / REL_Y 1
- [ 3, 356793, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +29ms
- evdev:
- [ 3, 925847, 2, 1, -1] # EV_REL / REL_Y -1
- [ 3, 925847, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +569ms
- evdev:
- [ 3, 942649, 2, 0, -1] # EV_REL / REL_X -1
- [ 3, 942649, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +17ms
- evdev:
- [ 3, 982318, 2, 1, 1] # EV_REL / REL_Y 1
- [ 3, 982318, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +40ms
- evdev:
- [ 4, 39689, 2, 0, -1] # EV_REL / REL_X -1
- [ 4, 39689, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +57ms
- evdev:
- [ 4, 311519, 2, 0, -1] # EV_REL / REL_X -1
- [ 4, 311519, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +272ms
- evdev:
- [ 4, 340398, 2, 0, -4] # EV_REL / REL_X -4
- [ 4, 340398, 2, 1, -2] # EV_REL / REL_Y -2
- [ 4, 340398, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +29ms
- evdev:
- [ 4, 368692, 2, 0, -6] # EV_REL / REL_X -6
- [ 4, 368692, 2, 1, -3] # EV_REL / REL_Y -3
- [ 4, 368692, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +28ms
- evdev:
- [ 4, 395054, 2, 0, -3] # EV_REL / REL_X -3
- [ 4, 395054, 2, 1, -1] # EV_REL / REL_Y -1
- [ 4, 395054, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +27ms
- evdev:
- [ 4, 724513, 2, 1, 1] # EV_REL / REL_Y 1
- [ 4, 724513, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +329ms
- evdev:
- [ 4, 750465, 2, 0, -1] # EV_REL / REL_X -1
- [ 4, 750465, 2, 1, 1] # EV_REL / REL_Y 1
- [ 4, 750465, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +26ms
- evdev:
- [ 4, 857084, 2, 1, 1] # EV_REL / REL_Y 1
- [ 4, 857084, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +107ms
- evdev:
- [ 5, 126068, 2, 0, -1] # EV_REL / REL_X -1
- [ 5, 126068, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +269ms
- evdev:
- [ 5, 166256, 2, 0, -1] # EV_REL / REL_X -1
- [ 5, 166256, 2, 1, 1] # EV_REL / REL_Y 1
- [ 5, 166256, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +40ms
- evdev:
- [ 5, 186224, 2, 0, -2] # EV_REL / REL_X -2
- [ 5, 186224, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +20ms
- evdev:
- [ 5, 214582, 2, 0, -1] # EV_REL / REL_X -1
- [ 5, 214582, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +28ms
- evdev:
- [ 5, 233922, 2, 0, -2] # EV_REL / REL_X -2
- [ 5, 233922, 2, 1, 1] # EV_REL / REL_Y 1
- [ 5, 233922, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +19ms
- evdev:
- [ 5, 250731, 2, 0, -2] # EV_REL / REL_X -2
- [ 5, 250731, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +17ms
- evdev:
- [ 5, 270157, 2, 0, -1] # EV_REL / REL_X -1
- [ 5, 270157, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +20ms
- evdev:
- [ 5, 301027, 2, 0, -1] # EV_REL / REL_X -1
- [ 5, 301027, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +31ms
- evdev:
- [ 5, 337823, 2, 0, -2] # EV_REL / REL_X -2
- [ 5, 337823, 2, 1, 1] # EV_REL / REL_Y 1
- [ 5, 337823, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +36ms
- evdev:
- [ 5, 356232, 2, 0, -2] # EV_REL / REL_X -2
- [ 5, 356232, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +19ms
- evdev:
- [ 5, 397238, 2, 0, -1] # EV_REL / REL_X -1
- [ 5, 397238, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +41ms
- evdev:
- [ 5, 414061, 2, 1, 1] # EV_REL / REL_Y 1
- [ 5, 414061, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +17ms
- evdev:
- [ 5, 454986, 2, 0, -1] # EV_REL / REL_X -1
- [ 5, 454986, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +40ms
- evdev:
- [ 5, 474329, 2, 0, -1] # EV_REL / REL_X -1
- [ 5, 474329, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +20ms
- evdev:
- [ 5, 491214, 2, 0, -2] # EV_REL / REL_X -2
- [ 5, 491214, 2, 1, 1] # EV_REL / REL_Y 1
- [ 5, 491214, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +17ms
- evdev:
- [ 5, 510549, 2, 0, -2] # EV_REL / REL_X -2
- [ 5, 510549, 2, 1, 1] # EV_REL / REL_Y 1
- [ 5, 510549, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +19ms
- evdev:
- [ 5, 529953, 2, 0, -1] # EV_REL / REL_X -1
- [ 5, 529953, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +19ms
- evdev:
- [ 5, 549676, 2, 0, -3] # EV_REL / REL_X -3
- [ 5, 549676, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +20ms
- evdev:
- [ 5, 571189, 2, 0, -3] # EV_REL / REL_X -3
- [ 5, 571189, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +22ms
- evdev:
- [ 5, 599662, 2, 0, -5] # EV_REL / REL_X -5
- [ 5, 599662, 2, 1, -1] # EV_REL / REL_Y -1
- [ 5, 599662, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +28ms
- evdev:
- [ 5, 625570, 2, 0, -14] # EV_REL / REL_X -14
- [ 5, 625570, 2, 1, -3] # EV_REL / REL_Y -3
- [ 5, 625570, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +26ms
- evdev:
- [ 5, 663667, 2, 0, 1] # EV_REL / REL_X 1
- [ 5, 663667, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +38ms
- evdev:
- [ 5, 933584, 2, 1, 2] # EV_REL / REL_Y 2
- [ 5, 933584, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +270ms
- evdev:
- [ 5, 962889, 2, 0, 1] # EV_REL / REL_X 1
- [ 5, 962889, 2, 1, 2] # EV_REL / REL_Y 2
- [ 5, 962889, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +29ms
- evdev:
- [ 5, 981913, 2, 1, 3] # EV_REL / REL_Y 3
- [ 5, 981913, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +19ms
- evdev:
- [ 6, 619, 2, 0, 1] # EV_REL / REL_X 1
- [ 6, 619, 2, 1, 2] # EV_REL / REL_Y 2
- [ 6, 619, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +19ms
- evdev:
- [ 6, 289753, 2, 1, 1] # EV_REL / REL_Y 1
- [ 6, 289753, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +289ms
- evdev:
- [ 6, 308041, 2, 0, 1] # EV_REL / REL_X 1
- [ 6, 308041, 2, 1, 1] # EV_REL / REL_Y 1
- [ 6, 308041, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +19ms
- evdev:
- [ 6, 327264, 2, 1, 2] # EV_REL / REL_Y 2
- [ 6, 327264, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +19ms
- evdev:
- [ 6, 349350, 2, 0, 1] # EV_REL / REL_X 1
- [ 6, 349350, 2, 1, 4] # EV_REL / REL_Y 4
- [ 6, 349350, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +22ms
- evdev:
- [ 6, 368562, 2, 1, 1] # EV_REL / REL_Y 1
- [ 6, 368562, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +19ms
- evdev:
- [ 6, 387966, 2, 0, 2] # EV_REL / REL_X 2
- [ 6, 387966, 2, 1, 4] # EV_REL / REL_Y 4
- [ 6, 387966, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +19ms
- evdev:
- [ 6, 416271, 2, 0, 1] # EV_REL / REL_X 1
- [ 6, 416271, 2, 1, 4] # EV_REL / REL_Y 4
- [ 6, 416271, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +29ms
- evdev:
- [ 6, 433368, 2, 0, 1] # EV_REL / REL_X 1
- [ 6, 433368, 2, 1, 2] # EV_REL / REL_Y 2
- [ 6, 433368, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +17ms
- evdev:
- [ 6, 779143, 2, 1, 1] # EV_REL / REL_Y 1
- [ 6, 779143, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +346ms
- evdev:
- [ 6, 846856, 2, 0, 2] # EV_REL / REL_X 2
- [ 6, 846856, 2, 1, 1] # EV_REL / REL_Y 1
- [ 6, 846856, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +67ms
- evdev:
- [ 6, 878618, 2, 0, 2] # EV_REL / REL_X 2
- [ 6, 878618, 2, 1, 1] # EV_REL / REL_Y 1
- [ 6, 878618, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +32ms
- evdev:
- [ 6, 907033, 2, 0, 5] # EV_REL / REL_X 5
- [ 6, 907033, 2, 1, 2] # EV_REL / REL_Y 2
- [ 6, 907033, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +29ms
- evdev:
- [ 6, 926254, 2, 0, 5] # EV_REL / REL_X 5
- [ 6, 926254, 2, 1, 2] # EV_REL / REL_Y 2
- [ 6, 926254, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +19ms
- evdev:
- [ 6, 945461, 2, 0, 3] # EV_REL / REL_X 3
- [ 6, 945461, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +19ms
- evdev:
- [ 6, 964974, 2, 0, 5] # EV_REL / REL_X 5
- [ 6, 964974, 2, 1, 2] # EV_REL / REL_Y 2
- [ 6, 964974, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +19ms
- evdev:
- [ 6, 993389, 2, 0, 2] # EV_REL / REL_X 2
- [ 6, 993389, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +29ms
- evdev:
- [ 7, 10354, 2, 0, 1] # EV_REL / REL_X 1
- [ 7, 10354, 2, 1, 1] # EV_REL / REL_Y 1
- [ 7, 10354, 0, 0, 0] # ------------ SYN_REPORT (0) ---------- +17ms
```
- `libinput debug-events --verbose` output:
```
event2 - Power Button: is tagged by udev as: Keyboard
event2 - Power Button: device is a keyboard
event4 - Video Bus: is tagged by udev as: Keyboard
event4 - Video Bus: device is a keyboard
event0 - Lid Switch: is tagged by udev as: Switch
event0 - Lid Switch: device is a switch device
event1 - Sleep Button: is tagged by udev as: Keyboard
event1 - Sleep Button: device is a keyboard
event13 - HDA Intel HDMI HDMI/DP,pcm=3: is tagged by udev as: Switch
event14 - HDA Intel HDMI HDMI/DP,pcm=7: is tagged by udev as: Switch
event15 - HDA Intel HDMI HDMI/DP,pcm=8: is tagged by udev as: Switch
event16 - HDA Intel HDMI HDMI/DP,pcm=9: is tagged by udev as: Switch
event17 - HDA Intel HDMI HDMI/DP,pcm=10: is tagged by udev as: Switch
event7 - Integrated Camera: Integrated C: is tagged by udev as: Keyboard
event7 - Integrated Camera: Integrated C: device is a keyboard
event9 - HDA Intel PCH Dock Mic: is tagged by udev as: Switch
event10 - HDA Intel PCH Mic: is tagged by udev as: Switch
event11 - HDA Intel PCH Dock Headphone: is tagged by udev as: Switch
event12 - HDA Intel PCH Headphone: is tagged by udev as: Switch
event3 - AT Translated Set 2 keyboard: is tagged by udev as: Keyboard
event3 - AT Translated Set 2 keyboard: device is a keyboard
event0 - lid: keyboard paired with Lid Switch<->AT Translated Set 2 keyboard
event5 - tagged as ModelSynapticsSerialTouchpad
event5 - tagged as ModelLenovoT450Touchpad
event5 - SynPS/2 Synaptics TouchPad: is tagged by udev as: Touchpad
event5 - using pressure-based touch detection (25:30)
event5 - palm: pressure threshold is 150
event5 - thumb: enabled thumb detection (+pressure)
event5 - SynPS/2 Synaptics TouchPad: device is a touchpad
event5 - lid_switch: activated for SynPS/2 Synaptics TouchPad<->Lid Switch
event5 - palm: dwt activated with SynPS/2 Synaptics TouchPad<->AT Translated Set 2 keyboard
event6 - TPPS/2 IBM TrackPoint: is tagged by udev as: Mouse Pointingstick
event6 - TPPS/2 IBM TrackPoint: device is a pointer
event8 - ThinkPad Extra Buttons: is tagged by udev as: Keyboard Switch
event8 - ThinkPad Extra Buttons: device is a keyboard
-event2 DEVICE_ADDED Power Button seat0 default group1 cap:k
-event4 DEVICE_ADDED Video Bus seat0 default group2 cap:k
-event0 DEVICE_ADDED Lid Switch seat0 default group3 cap:S
-event1 DEVICE_ADDED Sleep Button seat0 default group4 cap:k
-event13 DEVICE_ADDED HDA Intel HDMI HDMI/DP,pcm=3 seat0 default group5 cap:
-event14 DEVICE_ADDED HDA Intel HDMI HDMI/DP,pcm=7 seat0 default group5 cap:
-event15 DEVICE_ADDED HDA Intel HDMI HDMI/DP,pcm=8 seat0 default group5 cap:
-event16 DEVICE_ADDED HDA Intel HDMI HDMI/DP,pcm=9 seat0 default group5 cap:
-event17 DEVICE_ADDED HDA Intel HDMI HDMI/DP,pcm=10 seat0 default group5 cap:
-event7 DEVICE_ADDED Integrated Camera: Integrated C seat0 default group6 cap:k
-event9 DEVICE_ADDED HDA Intel PCH Dock Mic seat0 default group5 cap:
-event10 DEVICE_ADDED HDA Intel PCH Mic seat0 default group5 cap:
-event11 DEVICE_ADDED HDA Intel PCH Dock Headphone seat0 default group5 cap:
-event12 DEVICE_ADDED HDA Intel PCH Headphone seat0 default group5 cap:
-event3 DEVICE_ADDED AT Translated Set 2 keyboard seat0 default group7 cap:k
-event5 DEVICE_ADDED SynPS/2 Synaptics TouchPad seat0 default group8 cap:pg size 98x54mm tap(dl off) left scroll-nat scroll-2fg-edge click-buttonareas-clickfinger dwt-on
-event6 DEVICE_ADDED TPPS/2 IBM TrackPoint seat0 default group9 cap:p left scroll-nat scroll-button
-event8 DEVICE_ADDED ThinkPad Extra Buttons seat0 default group10 cap:k
-event6 POINTER_MOTION +1.77s 0.30/ 0.00 ( +1.00/ +0.00)
event6 POINTER_MOTION +1.80s 0.54/ 0.00 ( +1.00/ +0.00)
event6 POINTER_MOTION +1.82s 0.83/ 0.83 ( +1.00/ +1.00)
event6 POINTER_MOTION +1.84s 0.79/ 0.79 ( +1.00/ +1.00)
event6 POINTER_MOTION +1.89s 0.00/ 0.42 ( +0.00/ +1.00)
event6 POINTER_MOTION +2.07s -0.34/ -0.34 ( -1.00/ -1.00)
event5 - pressure: begin touch 0
event5 - palm: touch 0, palm detected (trackpoint)
event5 - button state: touch 0 from BUTTON_STATE_NONE, event BUTTON_EVENT_IN_BOTTOM_R to BUTTON_STATE_BOTTOM
event6 POINTER_MOTION +2.10s -0.52/ 0.00 ( -1.00/ +0.00)
event6 POINTER_MOTION +2.12s -5.59/ -5.59 ( -3.00/ -3.00)
event6 POINTER_MOTION +2.14s -17.04/-14.20 ( -6.00/ -5.00)
event6 POINTER_MOTION +2.15s -1.23/ -2.47 ( -1.00/ -2.00)
event6 POINTER_MOTION +2.17s -0.64/ 0.00 ( -1.00/ +0.00)
event6 POINTER_MOTION +2.20s 0.62/ 0.62 ( +1.00/ +1.00)
event5 - button state: touch 0 from BUTTON_STATE_BOTTOM, event BUTTON_EVENT_UP to BUTTON_STATE_NONE
event6 POINTER_MOTION +3.76s 0.00/ 0.62 ( +0.00/ +2.00)
event6 POINTER_MOTION +3.78s 0.63/ 0.00 ( +1.00/ +0.00)
event6 POINTER_MOTION +3.80s 0.00/ 2.01 ( +0.00/ +2.00)
event6 POINTER_MOTION +3.82s 0.00/ 4.64 ( +0.00/ +3.00)
event6 POINTER_MOTION +3.84s 1.02/ 2.04 ( +1.00/ +2.00)
event6 POINTER_MOTION +3.86s 0.00/ 2.05 ( +0.00/ +2.00)
event6 POINTER_MOTION +3.88s 1.12/ 2.24 ( +1.00/ +2.00)
event6 POINTER_MOTION +3.90s 0.00/ 0.64 ( +0.00/ +1.00)
event6 POINTER_MOTION +3.92s 0.00/ 0.54 ( +0.00/ +1.00)
event6 POINTER_MOTION +3.96s 0.46/ 0.00 ( +1.00/ +0.00)
event6 POINTER_MOTION +4.05s 0.36/ 0.00 ( +1.00/ +0.00)
event6 POINTER_MOTION +4.07s 0.82/ -0.82 ( +1.00/ -1.00)
event6 POINTER_MOTION +4.09s 2.02/ 0.00 ( +2.00/ +0.00)
event6 POINTER_MOTION +4.11s 0.75/ -0.75 ( +1.00/ -1.00)
event6 POINTER_MOTION +4.14s 1.67/ -0.84 ( +2.00/ -1.00)
event6 POINTER_MOTION +4.15s 0.69/ 0.00 ( +1.00/ +0.00)
event6 POINTER_MOTION +4.85s 0.00/ 0.31 ( +0.00/ +1.00)
event6 POINTER_MOTION +4.88s 0.63/ 0.63 ( +1.00/ +1.00)
event6 POINTER_MOTION +4.91s 1.58/ 7.88 ( +1.00/ +5.00)
event6 POINTER_MOTION +4.93s 2.47/ 14.80 ( +1.00/ +6.00)
event6 POINTER_MOTION +4.95s 1.45/ 5.79 ( +1.00/ +4.00)
event6 POINTER_MOTION +4.97s 0.00/ 10.59 ( +0.00/ +5.00)
event6 POINTER_MOTION +4.99s 1.31/ 3.93 ( +1.00/ +3.00)
event6 POINTER_MOTION +5.02s 0.00/ 1.56 ( +0.00/ +2.00)
event6 POINTER_MOTION +5.05s 4.45/ 15.58 ( +2.00/ +7.00)
event6 POINTER_MOTION +5.08s -0.50/ 0.00 ( -1.00/ +0.00)
event6 POINTER_MOTION +5.16s 0.00/ -0.37 ( +0.00/ -1.00)
event6 POINTER_MOTION +5.18s 0.00/ -4.22 ( +0.00/ -3.00)
event6 POINTER_MOTION +5.20s 1.08/ -3.25 ( +1.00/ -3.00)
event6 POINTER_MOTION +5.22s 2.17/-10.85 ( +1.00/ -5.00)
event6 POINTER_MOTION +5.24s 1.25/ -2.50 ( +1.00/ -2.00)
event6 POINTER_MOTION +5.27s 0.61/ -0.61 ( +1.00/ -1.00)
event6 POINTER_MOTION +5.32s 1.38/ -1.38 ( +2.00/ -2.00)
event6 POINTER_MOTION +5.34s 2.06/ -1.03 ( +2.00/ -1.00)
event6 POINTER_MOTION +5.37s 1.56/ 0.00 ( +2.00/ +0.00)
event6 POINTER_MOTION +5.39s 0.65/ -0.65 ( +1.00/ -1.00)
event6 POINTER_MOTION +6.60s -0.31/ -0.31 ( -1.00/ -1.00)
event6 POINTER_MOTION +6.62s -4.41/-11.03 ( -2.00/ -5.00)
event6 POINTER_MOTION +6.64s -4.17/-10.42 ( -2.00/ -5.00)
event6 POINTER_MOTION +6.67s -2.37/ -3.56 ( -2.00/ -3.00)
event6 POINTER_MOTION +6.70s -9.56/-38.25 ( -3.00/-12.00)
event6 POINTER_MOTION +6.72s -2.05/-14.38 ( -1.00/ -7.00)
event6 POINTER_MOTION +6.74s 0.00/-19.34 ( +0.00/ -7.00)
event6 POINTER_MOTION +6.77s 0.00/ -5.08 ( +0.00/ -4.00)
event6 POINTER_MOTION +6.80s 3.78/-11.34 ( +2.00/ -6.00)
event6 POINTER_MOTION +6.83s 0.63/ -0.63 ( +1.00/ -1.00)
event6 POINTER_MOTION +6.85s 20.01/ -5.72 ( +7.00/ -2.00)
event6 POINTER_MOTION +6.87s 4.42/ -1.47 ( +3.00/ -1.00)
event6 POINTER_MOTION +6.89s 10.68/ 0.00 ( +5.00/ +0.00)
event6 POINTER_MOTION +6.90s 16.40/ 0.00 ( +6.00/ +0.00)
event6 POINTER_MOTION +6.92s 19.41/ 0.00 ( +7.00/ +0.00)
event6 POINTER_MOTION +6.95s 3.85/ 0.00 ( +3.00/ +0.00)
event6 POINTER_MOTION +6.97s 1.55/ 0.00 ( +2.00/ +0.00)
event6 POINTER_MOTION +7.00s 0.55/ 0.00 ( +1.00/ +0.00)
event6 POINTER_MOTION +7.53s 0.00/ -0.31 ( +0.00/ -1.00)
event6 POINTER_MOTION +7.55s 0.00/ -0.64 ( +0.00/ -1.00)
event6 POINTER_MOTION +7.57s 0.00/ -2.05 ( +0.00/ -2.00)
event6 POINTER_MOTION +7.59s -2.17/-10.85 ( -1.00/ -5.00)
event6 POINTER_MOTION +7.61s -2.14/-10.70 ( -1.00/ -5.00)
event6 POINTER_MOTION +7.64s -1.83/-10.98 ( -1.00/ -6.00)
event6 POINTER_MOTION +7.66s 2.46/-14.74 ( +1.00/ -6.00)
event6 POINTER_MOTION +7.69s 1.58/ -7.91 ( +1.00/ -5.00)
event6 POINTER_MOTION +7.71s 3.25/ -8.12 ( +2.00/ -5.00)
event6 POINTER_MOTION +7.74s 2.58/ -3.86 ( +2.00/ -3.00)
event6 POINTER_MOTION +7.76s 7.74/ -3.87 ( +4.00/ -2.00)
event6 POINTER_MOTION +7.78s 13.57/ -2.26 ( +6.00/ -1.00)
event6 POINTER_MOTION +7.81s 3.14/ 0.00 ( +3.00/ +0.00)
event6 POINTER_MOTION +7.84s 31.67/ 5.76 (+11.00/ +2.00)
event6 POINTER_MOTION +7.87s 14.65/ 4.18 ( +7.00/ +2.00)
event6 POINTER_MOTION +7.89s 0.55/ 0.00 ( +1.00/ +0.00)
event6 POINTER_MOTION +7.94s -0.42/ 0.00 ( -1.00/ +0.00)
event6 POINTER_MOTION +10.09s 0.00/ 0.30 ( +0.00/ +1.00)
event6 POINTER_MOTION +10.13s -0.45/ 0.00 ( -1.00/ +0.00)
event6 POINTER_MOTION +10.15s -0.77/ 0.77 ( -1.00/ +1.00)
event6 POINTER_MOTION +10.17s -2.03/ 0.00 ( -2.00/ +0.00)
event6 POINTER_MOTION +10.20s -5.19/ 0.00 ( -4.00/ +0.00)
event6 POINTER_MOTION +10.22s -26.54/ 2.65 (-10.00/ +1.00)
event6 POINTER_MOTION +10.25s -55.06/ 3.67 (-15.00/ +1.00)
event6 POINTER_MOTION +10.28s -81.37/ -4.28 (-19.00/ -1.00)
event6 POINTER_MOTION +10.30s -70.07/ 0.00 (-15.00/ +0.00)
event6 POINTER_MOTION +10.33s -10.80/ 0.00 ( -6.00/ +0.00)
event6 POINTER_MOTION +10.36s -19.68/ 0.00 ( -8.00/ +0.00)
event6 POINTER_MOTION +10.38s -2.24/ 1.12 ( -2.00/ +1.00)
event6 POINTER_MOTION +10.39s -4.20/ 0.00 ( -3.00/ +0.00)
event6 POINTER_MOTION +10.51s -0.34/ 0.00 ( -1.00/ +0.00)
event6 POINTER_MOTION +10.57s -0.39/ 0.00 ( -1.00/ +0.00)
event6 POINTER_MOTION +10.60s 0.00/ 0.52 ( +0.00/ +1.00)
event6 POINTER_MOTION +10.63s -4.22/ 14.77 ( -2.00/ +7.00)
event6 POINTER_MOTION +10.66s 0.00/110.33 ( +0.00/+23.00)
event6 POINTER_MOTION +10.68s 0.00/143.96 ( +0.00/+24.00)
event6 POINTER_MOTION +10.71s 0.00/ 48.93 ( +0.00/+14.00)
event6 POINTER_MOTION +10.72s 0.00/118.84 ( +0.00/+21.00)
event6 POINTER_MOTION +10.74s 0.00/ 42.34 ( +0.00/+11.00)
event6 POINTER_MOTION +10.77s 0.00/ 37.07 ( +0.00/+12.00)
event6 POINTER_MOTION +10.80s 0.00/ 43.02 ( +0.00/+13.00)
event6 POINTER_MOTION +10.82s 0.00/ 55.87 ( +0.00/+13.00)
event6 POINTER_MOTION +10.84s 0.00/ 35.79 ( +0.00/+10.00)
event6 POINTER_MOTION +10.87s 2.29/ 18.30 ( +1.00/ +8.00)
event6 POINTER_MOTION +10.90s 0.00/ 42.76 ( +0.00/+13.00)
event6 POINTER_MOTION +10.92s 8.17/ 49.03 ( +2.00/+12.00)
event6 POINTER_MOTION +10.94s 0.00/ 11.63 ( +0.00/ +6.00)
event6 POINTER_MOTION +11.00s 0.44/ 0.44 ( +1.00/ +1.00)
event6 POINTER_MOTION +11.03s 8.86/ 5.32 ( +5.00/ +3.00)
event6 POINTER_MOTION +11.05s 79.51/ 31.80 (+15.00/ +6.00)
event6 POINTER_MOTION +11.07s 37.14/ 11.14 (+10.00/ +3.00)
event6 POINTER_MOTION +11.09s 62.89/ 26.95 (+14.00/ +6.00)
event6 POINTER_MOTION +11.11s 4.90/ 3.27 ( +3.00/ +2.00)
event6 POINTER_MOTION +11.13s 27.59/ 17.25 ( +8.00/ +5.00)
event6 POINTER_MOTION +11.16s 0.63/ 0.63 ( +1.00/ +1.00)
event6 POINTER_MOTION +11.18s 24.43/ 24.43 ( +7.00/ +7.00)
event6 POINTER_MOTION +11.21s 11.99/ 16.79 ( +5.00/ +7.00)
event6 POINTER_MOTION +11.23s 17.36/ 26.03 ( +6.00/ +9.00)
event6 POINTER_MOTION +11.26s 0.63/ 0.63 ( +1.00/ +1.00)
event6 POINTER_MOTION +11.28s 0.00/ 0.64 ( +0.00/ +1.00)
event6 POINTER_MOTION +11.33s 0.00/ -0.43 ( +0.00/ -1.00)
event6 POINTER_MOTION +11.43s -0.38/ -0.38 ( -1.00/ -1.00)
event6 POINTER_MOTION +11.44s -0.69/ 0.00 ( -1.00/ +0.00)
event6 POINTER_MOTION +11.46s -2.68/ -2.68 ( -2.00/ -2.00)
event6 POINTER_MOTION +11.48s -5.06/ -5.06 ( -3.00/ -3.00)
event6 POINTER_MOTION +11.51s -3.23/ -1.08 ( -3.00/ -1.00)
event6 POINTER_MOTION +11.54s -18.88/-18.88 ( -7.00/ -7.00)
event6 POINTER_MOTION +11.57s -10.22/ -8.18 ( -5.00/ -4.00)
-event3 KEYBOARD_KEY +12.78s *** (-1) pressed
event3 KEYBOARD_KEY +12.93s *** (-1) pressed
event2 - Power Button: device removed
event4 - Video Bus: device removed
event0 - Lid Switch: device removed
event1 - Sleep Button: device removed
event13 - HDA Intel HDMI HDMI/DP,pcm=3: device removed
event14 - HDA Intel HDMI HDMI/DP,pcm=7: device removed
event15 - HDA Intel HDMI HDMI/DP,pcm=8: device removed
event16 - HDA Intel HDMI HDMI/DP,pcm=9: device removed
event17 - HDA Intel HDMI HDMI/DP,pcm=10: device removed
event7 - Integrated Camera: Integrated C: device removed
event9 - HDA Intel PCH Dock Mic: device removed
event10 - HDA Intel PCH Mic: device removed
event11 - HDA Intel PCH Dock Headphone: device removed
event12 - HDA Intel PCH Headphone: device removed
event3 - AT Translated Set 2 keyboard: device removed
event5 - SynPS/2 Synaptics TouchPad: device removed
event6 - TPPS/2 IBM TrackPoint: device removed
event8 - ThinkPad Extra Buttons: device removed`
```https://gitlab.freedesktop.org/libinput/libinput/-/issues/32too fast two-finger scrolling on Xiaomi mi notebook pro2022-09-28T14:19:33ZNikita Gordeevtoo fast two-finger scrolling on Xiaomi mi notebook proI did not find ways to adjust the speed of scrolling. e.g., in google chrome, one full page is scrolled by moving fingers only ~ 2 centimeters. 3-4 times slower speed would be more comfortable.
```
$ libinput --version
1.10.7
```
[touc...I did not find ways to adjust the speed of scrolling. e.g., in google chrome, one full page is scrolled by moving fingers only ~ 2 centimeters. 3-4 times slower speed would be more comfortable.
```
$ libinput --version
1.10.7
```
[touchpad settings.png](/uploads/85d2ff65c3b9f66119d25958a0c19c3c/touchpad.png)
[scroll.evemu](/uploads/5366b8f4bd3f8fdb3b1a611c76a8f90b/scroll.evemu)
```
$libinput list-devices
.....
Device: ETD2303:00 04F3:3083 Touchpad
Kernel: /dev/input/event6
Group: 7
Seat: seat0, default
Size: 129x81mm
Capabilities: pointer gesture
Tap-to-click: disabled
Tap-and-drag: enabled
Tap drag lock: disabled
Left-handed: disabled
Nat.scrolling: disabled
Middle emulation: disabled
Calibration: n/a
Scroll methods: *two-finger edge
Click methods: *button-areas clickfinger
Disable-w-typing: enabled
Accel profiles: none
Rotation: n/a
.....
```
```
$ cat /etc/udev/hwdb.d/99-touchpad.hwdb:
evdev:name:ETD2303:00 04F3:3083 Touchpad:dmi:bvnINSYDECorp.:bvrXMAKB5R0P0502:bd10/13/2017:svnTimi:pnTM1701:pvr:rvnTimi:rnTM1701:rvrMP:cvnTimi:ct10:cvrChassisVersion:*
EVDEV_ABS_00=0:3864:30
EVDEV_ABS_01=0:2499:31
EVDEV_ABS_35=0:3864:30
EVDEV_ABS_36=0:2499:31
ID_INPUT_HEIGHT_MM=80
ID_INPUT_WIDTH_MM=128
```
```
$ touchpad-edge-detector 128x80 /dev/input/event6
Touchpad ETD2303:00 04F3:3083 Touchpad on /dev/input/event6
Move one finger around the touchpad to detect the actual edges
Kernel says: x [0..3864], y [0..2499]
Touchpad sends: x [0..3864], y [0..2499] -^C\/
Touchpad size as listed by the kernel: 128x80mm
User-specified touchpad size: 128x80mm
Calculated ranges: 3864/2499
Suggested udev rule:
# <Laptop model description goes here>
evdev:name:ETD2303:00 04F3:3083 Touchpad:dmi:bvnINSYDECorp.:bvrXMAKB5R0P0502:bd10/13/2017:svnTimi:pnTM1701:pvr:rvnTimi:rnTM1701:rvrMP:cvnTimi:ct10:cvrChassisVersion:*
EVDEV_ABS_00=0:3864:30
EVDEV_ABS_01=0:2499:31
EVDEV_ABS_35=0:3864:30
EVDEV_ABS_36=0:2499:31
```
```
$cat /sys/class/dmi/id/modalias
dmi:bvnINSYDECorp.:bvrXMAKB5R0P0502:bd10/13/2017:svnTimi:pnTM1701:pvr:rvnTimi:rnTM1701:rvrMP:cvnTimi:ct10:cvrChassisVersion:
```
```
$ udevadm info /dev/input/event6
P: /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0/i2c-ETD2303:00/0018:04F3:3083.0001/input/input11/event6
N: input/event6
S: input/by-path/pci-0000:00:15.0-platform-i2c_designware.0-event-mouse
E: DEVLINKS=/dev/input/by-path/pci-0000:00:15.0-platform-i2c_designware.0-event-mouse
E: DEVNAME=/dev/input/event6
E: DEVPATH=/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0/i2c-ETD2303:00/0018:04F3:3083.0001/input/input11/event6
E: EVDEV_ABS_00=0:3864:30
E: EVDEV_ABS_01=0:2499:31
E: EVDEV_ABS_35=0:3864:30
E: EVDEV_ABS_36=0:2499:31
E: ID_INPUT=1
E: ID_INPUT_HEIGHT_MM=80
E: ID_INPUT_TOUCHPAD=1
E: ID_INPUT_WIDTH_MM=128
E: ID_PATH=pci-0000:00:15.0-platform-i2c_designware.0
E: ID_PATH_TAG=pci-0000_00_15_0-platform-i2c_designware_0
E: ID_SERIAL=noserial
E: LIBINPUT_DEVICE_GROUP=18/4f3/3083:i2c-ETD2303:00
E: MAJOR=13
E: MINOR=70
E: SUBSYSTEM=input
E: USEC_INITIALIZED=1990141
```