Age | Commit message (Collapse) | Author |
|
The Xen Virtual Pointer device has ABS_X, ABS_Y and REL_WHEEL. If smooth
scrolling is detected, the current code would first initialize relative axes
for scrolling and immediately overwrite those axes when the abs valuators are
written out.
This patch fixes the default case only, in the case of a device setting the
two Ignore*Axis options both to "off", the axes are still overwritten. The
wheels will work, other axes only if the same number of abs axes exists. And
it keeps the current memory leak too, but it's marked with a FIXME now.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
The previous approach only had the slot state for the current slot. If we
changed slots, that means we lost the information if the slot was ever
initialized. If the ABS_MT_TRACKING_ID was never received, the slot would
still update and try to send events (which the server refused with a warning).
Avoid this by having a per-slot state and a dirty bit that tells us if the
current slot updated at all. If we don't get the tracking ID, leave the slot
empty and refuse any further events from that touch.
This quashes the various "unable to find touch point 0" warnings caused if a
touchpoint starts before the device is enabled.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Walter Harms <wharms@bfs.de>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
EvdevAddDevice/EvdevRemoveDevice keep a reference to the device to detect
duplicate devices based on the dev_t.
EvdevAddDevices was called during PreInit, EvdevRemoveDevice was called during
DEVICE_CLOSE. That makes it imbalanced if the device succeeds PreInit but the
server skips everything else because MAX_DEVICES is exceeded. So for all
devices after MAX_DEVICES, we'd add a reference but never remove it,
eventually reading/writing past evdev_devices.
The server keeps the list of devices for us anyway, so remove the copy of all
the pointers and instead run through the device list the server gives us.
X.Org Bug 78309 <http://bugs.freedesktop.org/show_bug.cgi?id=78309>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
This was the original behavior introduced in
f77410e1f97d394e98c854fd174f712666b0544c and stayed that way until smooth
scrolling erroneously added it as vertical axis in
b450efdf95999cad08de23ce069f04a66bdae24b. Revert to horizontal scrolling to
restore the previous behaviour - which unbreaks scrolling on Microsoft mice.
This effectively reverts 54a3120e339e55fc4721543abb15692c3e9ede09 too.
X.Org Bug 73105 <http://bugs.freedesktop.org/show_bug.cgi?id=73105>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Whoops, the vertical axis is swapped, so when changing the axis we also need
to change the direction.
This reverts commit 16c85cbeacb721ed365c6240aabaad921b811fe0.
|
|
This was the original behavior introduced in
f77410e1f97d394e98c854fd174f712666b0544c and stayed that way until smooth
scrolling erroneously added it as vertical axis in
b450efdf95999cad08de23ce069f04a66bdae24b. Revert to horizontal scrolling to
restore the previous behaviour - which unbreaks scrolling on Microsoft mice.
This effectively reverts 54a3120e339e55fc4721543abb15692c3e9ede09 too.
X.Org Bug 73105 <http://bugs.freedesktop.org/show_bug.cgi?id=73105>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
|
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
wheel emulation, for some reasons beyond time, got the value from
pEvdev->vals, then set the value back into pEvdev->vals. Alas, that value is
always 0, hence oldValue is zero and the delta is nil.
If we're not in relative (touchpad) mode, store the current value in
old_vals, so they're retrievable for the next event.
X.Org Bug 68415 <http://bugs.freedesktop.org/show_bug.cgi?id=68415>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
A new property "Evdev Scrolling Distance" is created that holds three values
(vertical, horizontal and dial).
Signed-off-by: Peter De Wachter <pdewacht@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
This patch creates three new xorg.conf options, VertScrollDelta,
HorizScrollDelta and DialDelta, which adjust the sensitivity of
smooth scrolling. These options take a positive integer, default
value is 1.
Signed-off-by: Peter De Wachter <pdewacht@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
This was supposed to be added in 43e270fb7a10da20ab89dd699839c1cb6df119b4, but
got lost somehow.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
This makes the absolute axis codepath behave the same as the relative axis
path.
Signed-off-by: Peter De Wachter <pdewacht@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Removes the need to ioctl manually and check bits, with all the dangers that
come with that. libevdev is much better prepared for invalid values, OOB
checks, etc.
Plus, we get almost free SYN_DROPPED handling as well which we didn't have
before.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Adam Jackson <ajax@redhat.com>
|
|
This comment is now in the wrong place. It was moved when abs support for
wheel emulation was added but is now only confusing. Remove it altogether,
the code is quite obvious what it does.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
If a device has ABS_MT_SLOT, mtdev merely reads the events and returns them
to the caller as-is. For this we don't need mtdev, we can just handle those
events ourselves.
This patch switches to the mtdev plumbing layer that takes events and
converts them instead of reading them off the fd.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
When writing LED values to the device, append a SYN_REPORT to the list to
ensure other clients are updated immediately. Otherwise, the LED events
will be queued and not sent to other clients until the next input event
arrives.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Daniel Stone <daniel@fooishbar.org>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Inertia of 0 results in an infinite loop of events being sent to the server.
X.Org Bug 66125 <http://bugs.freedesktop.org/show_bug.cgi?id=66125>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Both fields are write-only as of xf86-input-evdev-2.5.99.902-1-g1ced7ec
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
As of xkeyboard-config 1.9, the evdev model is hidden (c887d2876)
The server switched to pc105 with version 1.8 (1df4bd601).
The evdev model resolves to pc104 anyway, so this commit has no real effect
other than to switch from a catch-all rule to explicit.
Use pc104 so this is easy to find for those investigating the code and
wondering why. pc104 is the 'correct' geometry for the us layout, which is
the default after all. Switching to pc105 would show keys missing if no
model is set (e.g. on uk/de layouts) but it would be the wrong layout for
the default.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Acked-by: Daniel Stone <daniel@fooishbar.org>
|
|
equivalents (#64029)
The kernel should give us ABS_X/Y for backwards compat but some devices
don't. For now, ignore these devices as evdev is not suited to handle this
yet and will crash if a device is set up without axes (i.e.
pEvdev->vals == NULL) and later receives an event from an MT axis.
X.Org Bug 64029 <http://bugs.freedesktop.org/show_bug.cgi?id=64029>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
|
|
evdev tries to assign the right XI 1.x type-name based on various device
capabilities. In some cases, that fails. e.g. the Mionix Naos 5000 mouse
looks like a keyboard. And we assign a keyboard type in that case since
there are plenty of keyboards that also advertise some axes or others.
Add a new option TypeName to allow for system-wide configuration of such
devices in a quirks file.
This can also be used to address #55867
X.Org Bug 62831 <http://bugs.freedesktop.org/show_bug.cgi?id=62831>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
FALSE == Success, so if we fail during EvdevOpenMTDev, the caller thinks
that everything worked fine, proceeds to set up the fd, etc.
This may later cause a crash, when a device comes back later as different
device and posts axis events where we didn't configure axes in the first
place.
Note: Unclear why there was no udev event received for the device being
removed and coming back as different device though.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Fixes regression introduced in 2f67509b53b27dd7f51ca2aadd19605aee613a61.
If evdev is used for touchpads, the abs axis movement is converted to a rel
movement. Without the two relative axes initialized, the events are
discarded.
Axes 0 and 1 are always x/y anyway unless specifically configured otherwise.
X.Org Bug 59784 <http://bugs.freedesktop.org/show_bug.cgi?id=59784>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
|
|
Special-case RHEL_WHEEL, RHEL_HWHEEL and REL_DIAL to add scroll valuators
for those axes in addition to the absolute axes.
X.Org Bug 54387 <http://bugs.freedesktop.org/show_bug.cgi?id=54387>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
This will enable a device to have relative scrolling axes in addition to
absolute axes (required by the QEMU tablet).
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Makes it easier to initialise everything to the right values.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
http://people.gnome.org/~walters/docs/build-api.txt
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
|
Signed-off-by: Adam Jackson <ajax@redhat.com>
|
|
X.Org Bug 59340 <http://bugs.freedesktop.org/show_bug.cgi?id=59340>
Reported-by: Bastien Nocera <hadess@hadess.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
No functional changes.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
No functional changes.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
We expect at least BTN_TOUCH for anything with MT axes, but devices that
don't have that need a button class regardless. Some gamepads define
MT axes but no buttons, causing a bug in the server when they post a
TouchBegin.
[ 97436.293] (EE) BUG: triggered 'if (!b || !v)'
[ 97436.293] (EE) BUG: exevents.c:929 in UpdateDeviceState()
So, ignore it, if it is a joystick (e. g. if it have BTN_JOYSTICK defined).
Otherwise, fake a button.
This patch basically merges two patches written by Peter Hutterer
<peter.hutterer@who-t.net>.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
This isn't actually needed at all.
xf86nameCompare() will skip over underscores and is case-independent. So
xf86SetStrOption("foo_bar") will return an Option "FooBar" and vice versa.
The server won't return a zero-length string either, it'll return
NULL and spit a warning to the log.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
No need to store this in the evdev struct.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
If stat fails while checking if the device is virtual, just say "no, it's
not virtual" and continue. If the device really went away, it'll be removed
through other means.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
update evdev according to latest changes in input.h
Signed-off-by: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
|
Messages logged during the signal handler should use LogMessageVerbSigSafe
as of ABI 18.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
|