summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Default branch is now mainmasterPeter Hutterer2021-04-291-0/+4
| | | | | | | | | | | To update your local repository, use these commands $ git fetch origin $ git checkout master $ git branch -m main $ git branch --set-upstream-to=origin/main Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* gitlab CI: switch to Ubuntu 21.04Peter Hutterer2021-04-232-15/+15
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* touchpad: if we have a right button, let's assume it's not a clickpadPeter Hutterer2021-04-212-14/+32
| | | | | | | | | | | | | | | | | | This assumption dates back roughly a decade when INPUT_PROP_BUTTONPAD was introduced into the kernel. To my knowledge, devices right now erroneously advertise INPUT_PROP_BUTTONPAD when they are not a clickpad (but then they have BTN_RIGHT) or they lack INPUT_PROP_BUTTONPAD (and only have BTN_LEFT). So let's change our assumption here - if a clickpad has a right button log the kernel bug and continue with the assumption the device is a touchpad with physical buttons. To disable that warning, fix the kernel or add an AttrInputPropDisable quirk for the device. Fixes #595 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* touchpad: a touchpad with only one button is a clickpadPeter Hutterer2021-04-212-1/+61
| | | | | | | | | | | | | | | | There is only one touchpad with a physical left button but no right button and that is the old Apple touchpad, discontinued in 2008. Not a huge number of those left, I assume. So let's change our assumptions because these days the vast majority of touchpads are clickpads - any touchpad that only has a left button is treated as clickpad, even where the kernel doesn't set the INPUT_PROP_BUTTONPAD. We do need to check for BTN_LEFT as well though, because Wacom touchpads (i.e. the touch part of non-integrated Wacom tablets) don't have a left button either. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* touchpad: use some helper variables to make the code easier to readPeter Hutterer2021-04-211-3/+6
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* touchpad: factor out clickpad assignment to a helperPeter Hutterer2021-04-211-12/+22
| | | | | | No functional changes Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* quirks: add quirk for Lenovo Yoga Slim 9 TouchpadUdo Rader2021-04-201-0/+9
| | | | | | | | | This touchpad is a pressure pad and needs the pressure handling disabled. Fixes #604 Signed-off-by: Udo Rader <udo.rader@bestsolution.at>
* quirks: add palm size quirk for the Gigabyte Aero 15Peter Hutterer2021-04-141-0/+5
| | | | | | Fixes #599 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* gestures: move the logic to detect gestures to its own functionJoseExposito2021-04-131-64/+70
| | | | | | | Move the code in used to detect motion based gestures (scroll, swipe and pinch) to tp_gesture_detect_motion_gestures. Signed-off-by: José Expósito <jose.exposito89@gmail.com>
* gestures: move up some functions to use them laterJoseExposito2021-04-131-36/+37
| | | | | | | Move tp_gesture_same_directions, tp_gesture_mm_moved and tp_gesture_init_pinch to be able to use them in future commits. Signed-off-by: José Expósito <jose.exposito89@gmail.com>
* gestures: move the code to get raw pointer motion to its own functionJoseExposito2021-04-131-3/+12
| | | | Signed-off-by: José Expósito <jose.exposito89@gmail.com>
* gestures: rename int filter_motion to bool ignore_motionJoseExposito2021-04-131-4/+4
| | | | | | | Use a bool instead of an int and also rename the variable to avoid ambiguity with tp_filter_motion(). Signed-off-by: José Expósito <jose.exposito89@gmail.com>
* libinput: change gesture notify cancel parameter from int to boolJoseExposito2021-04-132-5/+5
| | | | | | | | Change the "cancel" parameter in the existing notify methods (swipe, pinch and gesture_notify) from int to bool. It is used as boolean, the fact that it's an int is just a historical quirkyness. Signed-off-by: José Expósito <jose.exposito89@gmail.com>
* quirks: mark the 0x252 razer keyboard as internalChris Dickson2021-04-091-0/+7
| | | | Signed-off-by: Chris Dickson <hobochili@pm.me>
* evdev: don't truncate event time to 32 bitsPeter Hutterer2021-04-091-1/+1
| | | | | | | | | | This causes a bunch of "your system is too slow" messages in e.g. the various gesture tests. Fixes 95a72990 Fixes #601 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* evdev: don't check the event time if it's higher than the dispatch timePeter Hutterer2021-04-071-2/+4
| | | | | | | | | | The dispatch time is taken during libinput_dispatch(), i.e. at the beginning of an event sequence. We always read all events off the device, so where events come in while we're inside the main dispatch loop, our event time may be later than the saved dispatch_time. This causes an uint underflow and our tdelta > 10 will be true for that case. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* tablet-pad-leds: Open led file with O_NONBLOCK | O_CLOEXECJonas Ådahl2021-04-061-1/+1
| | | | | | | We don't want the file to be left open after any fork/exec, and we don't want the read to be blocking; so open it as such. Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
* touchpad/clickfinger: limit middle click to 3 fingersJoseExposito2021-04-062-40/+2
| | | | | | | Don't middle click on clickpads with click method clickfinger when more than 3 fingers are used. Signed-off-by: José Expósito <jose.exposito89@gmail.com>
* quirk: fix sensitivity for Dell Latitude 7490 pointing-stickBen Weston2021-04-031-0/+6
| | | | Signed-off-by: Ben Weston <b.weston60@gmail.com>
* tools/record: line up the "neutral state" messagePeter Hutterer2021-03-301-1/+1
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* tools/record: rework the event printingPeter Hutterer2021-03-301-559/+407
| | | | | | | | | | | | | | For historical (but not very good) reasons, libinput record printed events from the first device to the output file (or stdout) and buffered everything else. On ctrl+c, the other devices' descriptions and the buffered events were appended to the output file. This makes the printing code rather complex. Simplify it by giving each device a separate FILE* - the first device points to the real output file, the others to a tempfile. On Ctrl+C we just append those tempfiles to the real output file one-by-one and done. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* tools/record: rename the output file handlingPeter Hutterer2021-03-301-21/+25
| | | | | | Less confusing than having output_file, out_file, and outfile. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* tools/record: remember the first device in the contextPeter Hutterer2021-03-301-16/+12
| | | | | | | No functional changes since we can get this easily from the list itself, but in the future the first device will be used more extensively. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* tools/record: append the devices in-orderPeter Hutterer2021-03-301-1/+1
| | | | | | | Using list_insert() here means the last device specified on the commandline is the one that ends up in the file first - not very obvious... Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* tools/record: get rid of indent push/pop, replace with fixed indentsPeter Hutterer2021-03-301-128/+101
| | | | | | | | Our file format is static enough that we don't need to use push/pop, we know exactly which line is going where. So let's replace it with a static indent instead. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* tools/record: mark the iprintf function as printfPeter Hutterer2021-03-301-0/+1
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* tools/record: switch the output file from an fd to a FILE*Peter Hutterer2021-03-301-14/+12
| | | | | | | This is prep work to be more consistent with the use of tempfile later for individual devices. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* tools/record: deduplicate the device opening logicPeter Hutterer2021-03-304-28/+86
| | | | | | | With a new helper function strv_from_argv we can re-use the device opening loop for all the use-cases we have. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* tools/record: free the namelist when we're donePeter Hutterer2021-03-261-0/+3
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* tools/record: localize a variablePeter Hutterer2021-03-261-4/+3
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* tools/record: de-duplicate an error messagePeter Hutterer2021-03-261-14/+7
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* tools/record: factor out the output file collectionPeter Hutterer2021-03-261-54/+74
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* tools/code-formatting: Add EditorConfig fileJoseExposito2021-03-191-0/+11
| | | | | | | | EditorConfig helps maintain consistent coding styles for multiple developers working on the same project across various editors and IDEs: https://editorconfig.org/ Signed-off-by: José Expósito <jose.exposito89@gmail.com>
* fallback: disable mouse scroll wheel while middle button is pressedJoseExposito2021-03-174-1/+52
| | | | Signed-off-by: José Expósito <jose.exposito89@gmail.com>
* fallback: replace fallback_dispatch->wheel with an anonymous structJoseExposito2021-03-172-15/+18
| | | | | | | | | | The current fallback_dispatch wheel struct, a device_coords, doesn't allow to save extra information. The new anonymous struct will allow to add a is_inhibited field to disable mouse scroll while the middle button is pressed and, potentially, any required extra state in the future. Signed-off-by: José Expósito <jose.exposito89@gmail.com>
* quirks: add wildcard to HID-over-I2C names (for FreeBSD)Greg V2021-03-172-2/+2
| | | | | | | | | The FreeBSD HID stack adds the device type to the evdev name, so we get e.g. "ACPI0C50:00 18D1:5028 TouchPad". (Maybe this shouldn't be matched by name at all though...) Signed-off-by: Greg V <greg@unrelenting.technology>
* quirks: implement DMI support on FreeBSDGreg V2021-03-171-5/+73
| | | | | | | | | FreeBSD does not use Linux modaliases, so we have to generate these strings. Unfortunately for us, the data in kenv has the chassis type pre-parsed into a nice string, so we have to match these strings back into numbers. Only relevant types are included to avoid bloating the code. Signed-off-by: Greg V <greg@unrelenting.technology>
* quirks: add quirks for Apple SPI input devicesGreg V2021-03-171-0/+25
| | | | | | | | | The Linux applespi driver currently uses the Synaptics vendor ID on the trackpad for some reason (even though, at least from bcm5974 we only know that Broadcom is involved..) but my upcoming FreeBSD driver uses the Apple vendor ID everywhere, so add two quirks. Signed-off-by: Greg V <greg@unrelenting.technology>
* quirks: recognize SPI busGreg V2021-03-171-0/+7
| | | | | | | Apple MacBooks (Broadwell/Skylake/Kaby Lake and Apple Silicon) use SPI to communicate with the keyboard and trackpad. Signed-off-by: Greg V <greg@unrelenting.technology>
* tests: add a gesture test to ensure our unaccel deltas are in a sane rangePeter Hutterer2021-03-161-0/+102
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* gestures: Filter unaccelerated deltas for gesturesAlexander Mikhaylenko2021-03-161-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make sure the unaccelerated deltas are comparable to scroll deltas. edit by whot: The original intention of the unaccelerated motion data here was to provide both accelerated and unaccelerated motion for gestures so it was possible to have 1:1 mapping from gesture motion to screen activity. Normalizing to 1000dpi this way would've worked for mice but touchpad acceleration also includes the TP_MAGIC_SLOWDOWN (amongst other tricks) which slows down motion to around 27% *before* applying the acceleration function. On a 1000dpi touchpad (~40 units/mm) simply normalizing touchpad motion to 1000dpi results in pointer motion that is way too fast, it's lacking that slowdown to 27% of original speed. This results in the accelerated and unaccelerated gesture data being in effectively two different coordinate systems with the caller having no ability to relate the two. Switching to the special constant acceleration applies that slowdown and matches the data to the part of the acceleration curve where no (additional) acceleration is applied. It makes the gesture unaccelerated data comparable to the accelerated data and to scroll data which uses the same process. Fixes #582 Signed-off-by: Alexander Mikhaylenko <alexm@gnome.org> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* test: push/pop event frames around three-touch movementsPeter Hutterer2021-03-161-0/+2
| | | | | | | Without this, each finger movement happens in a different evdev event frame. Since we average deltas for gestures, this messes with the expected data. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* test: simplify the helper for moving three touches at the same timePeter Hutterer2021-03-161-11/+8
| | | | | | | | | | | | There's no test case where we need to do something immediately after the last event so we might as well do everything in the same loop. This also fixes a bug where the first movement would usually get swallowed. Test cases in general put the finger down at x/y, then move them to some other position. We'd expect the first event in a loop to happen at x+n/y+n, not at x/y again. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* test: fix debugging messages for gesture begin eventPeter Hutterer2021-03-161-2/+2
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* doc/user: explain why we are doing motion normalizationPeter Hutterer2021-03-161-0/+5
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* filter: correct comments about the threshold's unitPeter Hutterer2021-03-162-6/+6
| | | | | | | | | | See d6e531349745ff38ae457169d5089ea61297accf for confirmation that the threshold is intended to be in mm/s, the comment here is simply a leftover from earlier times when the acceleration method was using device-units only. Fixes #585 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* test: update a few tests for more modern helpersPeter Hutterer2021-03-151-21/+19
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* test: localize a few variablesPeter Hutterer2021-03-151-10/+13
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* touchpad: always push a touch's current point to the motion historyPeter Hutterer2021-03-114-91/+141
| | | | | | | | | | | | | | | | | | | | | | | | | | | The way touchpads (generally) work is that they get the position of each finger on each scanout. The kernel filters touches that haven't moved to reduce bandwidth so any touch that is logically down that we don't see an update for is in the same position as during the last scanout. Previously, touches that didn't sent events were effectively ignored, causing our jump detection to fail: - time t0: touch moves to position x/y, motion history time is set to t0 - time t1..t5: touch remains at position for several frames, no updates to the motion history - time t6: touch jumps to position x+a/y+b - tp_detect_jumps() sees the last update time is t0 which is too long ago and exits without detecting a jump This is fixed by pushing to the motion history any time we have *any* update - if the touchpad notices a state change on any touch update all touches with their current position, whether it changed or not. This obsoletes the `time` field in the tp_touch struct, most of this patch is passing down the current time to the few users of t->time. Fixes #578 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* test: add a comment to the thumb speed testPeter Hutterer2021-03-111-3/+4
| | | | | | | Incorrect comment, the purpose of this test was to ensure that an unused slot doesn't affect how other touches are treated, see commit 928bad9. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>