Both of these are normalized so let's draw a bar that shows the values
accordingly. This makes it a lot easier to check whether pressure values go to
the maximum, etc.
A little extra square is shown whenever the tip is logically down.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
The tests are split by topic but have varying runtime. Specifically, the
longest test (touchpad) takes ~170s whereas many of the others can take less
than a second. Splitting them all up into separate VMs costs too much in
startup time so here's the middle ground of some custom grouping to make the
tests roughly run the same time.
This list will need to be manually maintained but given that groups are rarely
added anyway this shouldn't be too much of a maintenance burden. And bonus:
since the kvm tests often fail due to timing issues, re-running one is
significantly faster now.
This shaves about 8min of the CI run
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
copy/paste error that makes coverity unhappy. This is the code to correctly
release all touches and the buttons have already been processed above - no
need to reassign here.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Coverity complains that we call libinput_event_destroy() twice on the variable
(once in and once just outside the condition). This is technically correct but
never true because we always break the loop early for the touch up/frame events.
Let's just reset the pointers so coverity is happy.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
x/y assigned but never used. Dropping those few lines gets rid of the warning
and checks the coordinates correctly now too.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Changes are:
1. "configuration options" is same as "options"
2. The clarification "e.g. scrolling" doesn't clarify anything because a
user don't necessarily knows there're "2-finger scroll" and
"edge-scroll"; and even if they do, they can imagine the settings to be
represented by "0" and "1" values, which then begs a question: why
aren't all "Enabled/Disabled" settings are prefixed with "*" too.
Instead, replace the vague `multiple different settings` with more
specific `more settings than "enabled/disabled"`.
3. "ones" is shorter than "settings" and makes sure a user haven't lost
context.
Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
Despite many bits wasted on reddit, phoronix, lwn etc. no-one seems interested
in actually fixing this for their device, so let's at least add a FAQ entry.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Alpine uses musl, eudev and elogind, so it's useful to build on that to get
those covered.
Notably, ninja test is not run because the litest-selftest will fail for
tcase_add_exit_test() and tcase_add_test_raise_signal(). This may be due to
some missing bits in musl or check not using the feature test macros, etc.
Someone with time and motivation to have this actually work on musl can figure
that out.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Scroll button locking is an accessibility feature. When enabled, the scroll
button does not need to be held down, the first click holds it logically down,
to be released on the second click of that same button.
This is implemented as simple event filter, so we still get the same behavior
from the emulated logical button, i.e. a physical double click results in a
single logical click of that button provided no scrolling was triggered.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Any touch down event will also provide motion data, but we must not send a
motion event for those in the same frame as the down event.
Fixes#375
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This should not change the overall time, but allows for a nicer
UI when looking at the pipelines:
* first "check" icon is the container_prep stage
* second icon is all of the variations of builds
* third is the full test suite in the VM
* forth is the distribution specifics
* last one is the deploy
This allows to see which step fails from the UI instead of having
a lengthy list of jobs all in the same column.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Scrolling and gestures use unaccelerated motion. The idea behind it was that
at least for the default speed setting of 0, the accelerated speed and
unaccelerated speed are identical where meaningful.
The touchpad speed curve has a plateau for 'normal' speeds (i.e. not very slow
and not very fast) where the acceleration factor is constant. This is the
reference factor that the unaccelerated motion should use as well.
Since the touchpad acceleration rework in d6e5313497 the reference factor is
0.9 * TP_MAGIC_SLOWDOWN (previously the factor was 1.0 * TP_MAGIC_SLOWDOWN)
and scroll motion is thus 10% faster than the pointer movement at the default
speeds. Let's fix this and let the two match up.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
struct timeval isn't defined in time.h, at least not on musl. And since we
need that value for struct input_events, let's include the header for that
struct. That'll sort out the includes for free.
Fixes#371
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Logitech MX Master 2S and 3 by default use natural scrolling
for the horizontal scroll wheel, while the main wheel
uses traditional mode. This change inverts the default
direction of horizontal scrolling.
Some graphics tablets (most or all Wacom, for example) do not emit
proximity out events when the tablet pen goes out of range. To
compensate for this, libinput synthesizes proximity out events when no
events are received for a certain period of time. Unfortunately, on some
tablets, this is fairly failure prone when moving the pen slowly. As a
workaround, this patch causes libinput to avoid synthesizing proximity
out events when the pen is still in contact with the tablet pad, as
defined by the TABLET_TOOL_IN_CONTACT status.
The udev_properties array is currently variable length, which causes the
tests to invoke undefined behavior on empty lists, as it attempts to
access the first array item to check if the key is NULL, which is an out
of bounds read and will fail when the struct alignment happens to line
up such that there is no padding after the list in the empty list case.
By making the udev_properties array 32 items long, it can encapsulate
every existing case, with only a fairly small amount of memory overhead,
and without requiring every single `TEST_DEVICE` call to initialize
`udev_properties`.
This used to work under valgrind up to F30 but with the F31 beta something is
now a tad slower so it triggers the timeouts before the middle emulation kicks
in.
The middlebutton timeout is 50ms and the first debounce timeout is 30ms, so if
we're late by 20ms, well, there goes the timeout.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This is deprecated in sphinx 1.8 but we don't include any markdown sources
anyway, so let's just drop it.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
inner/outer refer more to static thresholds when really what we have here is a
minimum movement before we look at the touch, and a maximum one after which
it's largely ignored.
Straight-up rename, no functional changes.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Previously, any lower finger spaced more than the vertical threshold apart
would be labelled as thumb. This causes some taps to be detected as
single-taps, particularly where the user's hand is at an angle that causes the
touches to be effectively vertical.
Restructure that condition so that we only go for a thumb if we're
distinctively apart, and we only *not* go for thumb if we're distinctively
close together.
Fixes#359
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>