Commit Graph

155 Commits

Author SHA1 Message Date
Peter Hutterer
c695234c5c Fix jumpy touchpads by updating old_vals only when reported by the device.
Remember whether ABS_X or ABS_Y were reported before the SYN event and only
update the old_vals[0, 1] if we got data for them.
Touchpads that reported pressure data before x/y would otherwise update
old_x/y with bogus values, leading to jumps when the first x/y coordinates
were actually reported.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit d9809d7edd)
2009-03-23 16:36:15 +10:00
Peter Hutterer
79d4956add If we have a touchpad, print so, don't claim we're configuring a tablet.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit b11439a176)
2009-03-23 16:36:13 +10:00
Jeremy Jay
7e9809837c make sure to clear all axis_map entries
don't use uninitialized axis_map entries, ie axis_map[ABS_PRESSURE]

Signed-off-by: Jeremy Jay <dinkumator@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 740dc202f7)
2009-03-23 16:36:06 +10:00
Peter Hutterer
d07692a4af Assume touchscreen/touchpad if we have _either_ ABS_PRESSURE or BTN_TOUCH
Touchpads have pressure or touch and also BTN_TOOL_FINGER.
Touchscreens have either pressure or touch, but no finger.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 7ac0c4456d)
2009-03-23 16:36:03 +10:00
Jeremy Jay
1073cd4fdc Set "rel" when converting absolute touchpad coordinates to relative (#20661)
We unset "abs" and convert to relative, but never set "rel" so the events
don't get posted. This bit got broken in 43dd2a9592.

X.Org Bug 20661 <http://bugs.freedesktop.org/show_bug.cgi?id=20661>

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit a3ea979c2b)
2009-03-23 16:35:50 +10:00
Peter Hutterer
486bbdc481 Restore repeat-filtering for server 1.5 and earlier.
Letting the server deal with key repeats is fine if we have server 1.6. For
earlier servers, we need to pass on the repeat events (except for modifier
keys).

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Tested-by: Marty Jack <martyj19@comcast.net>
(cherry picked from commit a7fb654a68)
2009-03-23 16:35:46 +10:00
Peter Hutterer
2c49e21a81 Check button label before fetching the Atom from the server. (#20524)
The server doesn't like NULL names, so don't call XIGetKnownProperty for
labels that don't exist.

X.Org Bug 20524 <http://bugs.freedesktop.org/show_bug.cgi?id=20524>

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Tested-by: Peter Henriksson
2009-03-09 09:23:57 +10:00
Peter Hutterer
4361b3efa0 Fix duplicate wheel button up mapping.
Reported by Simon Thum.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Simon Thum <simon.thum@gmx.de>
2009-03-06 19:45:28 +10:00
Peter Hutterer
051cb8b528 Add support for button labelling.
Buttons 4/5 and 6/7 are hardcoded for wheel buttons.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-03-02 16:16:59 +10:00
Peter Hutterer
1abcc88171 Rename prop_label to prop_axis_label. 2009-03-02 16:16:58 +10:00
Peter Hutterer
c89bbf80be Don't double-assign the UKNOWN axis label.
All labels default to unknown anyway.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-26 14:36:07 +10:00
Peter Hutterer
178435832f If scrollwheels are found, bump the button number by 4 (or up to 7).
Scrollwheel data is always posted as buttons, so we need to advertise at least
enough buttons to accommodate for 6/7 (horizontal wheel).

Note that this may mean that if you have a device that has scroll wheels and
axes, but no buttons, it may be interpreted as a mouse.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-26 14:35:46 +10:00
Peter Hutterer
c9cab83bac Ignore REL_WHEEL, REL_HWHEEL and REL_DIAL during axis initialisation.
We don't post the events for them anyway, so lets ignore them completely.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-26 09:11:14 +10:00
Peter Hutterer
43dd2a9592 Pass on all relative events, not just x/y.
9620fe776 added generic axes support for relativ values, but values from such
axes didn't get passed on to the server. Fix this.

Note that wheel events are not posted as motion events.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-26 09:11:14 +10:00
Adam Jackson
7977947e0d Reduce the number of read calls in ReadInput.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Adam Jackson <ajax@redhat.com>
2009-02-26 09:11:02 +10:00
Peter Hutterer
11a56d4a17 Split ReadInput into ReadInput and ProcessEvent.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-26 09:11:01 +10:00
Adam Jackson
7b0f613c7f Move relative motion and other magic up to EV_SYN processing.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Adam Jackson <ajax@redhat.com>
2009-02-26 09:10:47 +10:00
Adam Jackson
75af278861 Open with O_NONBLOCK, and simplify EvdevReadInput to match.
xf86WaitForInput() would call select() with zero timeout to discover if
more input was ready.  But we know that's always true at least once,
since we're only ever called from the sigio handler (if silken is
active) or from the main loop (if it's not and we selected readable).
With nonblocking IO we can just spin around until we hit EAGAIN, which
gets us down to n+1 syscalls per event instead of 2n.
2009-02-23 16:01:14 -05:00
Peter Hutterer
12c287df89 Label axes conditional on actual support.
Server 1.6 has device properties, but not axis labels.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-18 09:38:13 +10:00
Peter Hutterer
9f1b9aa6eb Accommodate for holes in the ABS label defines.
abs_labels[] has to be aligned with the defines in linux/input.h, but the
latter does not have continuous range. Pad the holes with
AXIS_LABEL_PROP_ABS_MISC.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-18 09:20:18 +10:00
Peter Hutterer
acb1d557e2 Add support for arbitrary relative axis labels.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-17 15:24:57 +10:00
Peter Hutterer
6a1f8f463d Remove superfluous (and duplicate) call to xf86MotionHistoryAllocate.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-17 14:55:11 +10:00
Peter Hutterer
9620fe7765 Add generic axis support for relative axes.
Just query the kernel what axes we actually have, rather than hard-coding x/y.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-17 14:54:17 +10:00
Peter Hutterer
a1714cac52 Add dynamic axis labelling for absolute devices.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-17 14:42:56 +10:00
Peter Hutterer
5a99ef7ed2 remove duplicate (code > 255) check. 2009-02-16 15:11:20 +10:00
Peter Hutterer
978384ede7 Swap axes after scaling, not before.
If we swap before scaling, we scale with the wrong coordinate range.

Reported by Matt Helsley.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-16 14:08:12 +10:00
Peter Hutterer
df7ff12ed2 CacheCompare before probing the device.
Saves a few duplicate ioctls.

Suggested by Matt Helsley.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-16 13:19:55 +10:00
Matt Helsley
dd2c89ac93 General axis valuator support.
Instead of x/y and pressure, support any absolute axis that is reported on the
device. Note that there are still locations that special-case X and Y.

Minor modifications by Peter Hutterer.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-16 13:19:53 +10:00
Peter Hutterer
4616c79f6c Change cached bitmasks from long to unsigned long.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-16 13:19:52 +10:00
Peter Hutterer
95099cb036 Log which EVIOCGABS ioctl failed.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-16 13:19:49 +10:00
Peter Hutterer
c58bae0b77 Remove superfluous motion history allocation.
The motion history buffer is allocated during InitValuatorClassDeviceStruct
anyway.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-16 13:19:48 +10:00
Peter Hutterer
32242871f7 Remove duplicate MB emu finalization.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-16 13:19:47 +10:00
Bryce Harrington
2a6c1d7a60 Add descriptive messages for device-has-changed errs
As can be seen in e.g. bugs 19819 & 20025, it can be unclear what
exactly caused a given "Device has changed - disabled" error.  This
patch adds some more specific messages to give a better clue on what
exactly was seen to have changed.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-13 13:16:55 +10:00
Paulo Cesar Pereira de Andrade
095766ebb3 Janitor: make distcheck, .gitignore.
Remove non toplevel .gitignore and .cvsignore files.
  The "make distcheck correction" for $(sdkdir) probably has a better
approach using a "*-hook:" target, or possibly making $sdkdir a
configure time option that could be set with DISTCHECK_CONFIGURE_FLAGS.
2009-02-02 19:52:32 -02:00
Julien Plissonneau Duquene
0dbb88c52b EvdevCacheCompare: ignore changes in current device position
Input devices (especially touchscreens) were disabled when switching
virtual console back to X because EvdevCacheCompare() thought the device
was substituted by another while away from X. Actually only the current
position reported by the device changed from what was in the cache. Fixed
by ignoring the current position in the comparison.

Fixes bug #19819.

Signed-off-by: Julien Cristau <jcristau@debian.org>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-03 07:21:27 +10:00
Dan Nicholson
dc72e6d8ae Stop hammering XKB defaults
With the new InitKeyboardDeviceStruct, we can just pass the RMLVO we
want without setting the defaults first.

Signed-off-by: Dan Nicholson <dbn.lists@gmail.com>
Signed-off-by: Daniel Stone <daniel@fooishbar.org>
2009-01-29 11:52:46 -08:00
Peter Hutterer
1906e4d5c1 Reshuffle property initialization.
We don't need axis calibration, etc. on keyboards, so let's do it
conditionally on actually having axes.

Reported by Simon Thum.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-01-22 14:06:38 +11:00
Peter Hutterer
3047c25db2 Deal with XINPUT ABI 5.
Some XKB stuff has been removed, so let's deal with it.
2009-01-22 14:06:38 +11:00
Peter Hutterer
c158cf2b64 Require XKB.
Welcome to the future.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-01-22 14:06:38 +11:00
Peter Hutterer
dae1a78a52 Add automatic axis labeling.
Since we don't support anything but REL/ABS x/y and sometimes pressure this is
bordering on pointlessness, but once the year of the Linux desktop comes
around this will be really handy. Or so.

Also, we don't allow changing axis labels, but should eventually rearrange
them if swapaxis is on.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-01-22 14:06:38 +11:00
Peter Hutterer
263bf04a9d Don't print xkb options twice to the log file.
xf86SetStrOption already prints with X_CONFIG anyway, no need to do it again.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-01-22 14:05:30 +11:00
Peter Hutterer
c035f3d0f5 Register the property handler AFTER setting all the properties.
Otherwise, we add a new property based on a setting in pEvdev, which triggers
the update handler to change the setting in pEvdev based on the property.
Truly pointless.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-01-20 09:45:40 +11:00
Peter Hutterer
a7e8af65fc Test for pressure BEFORE using has_pressure. 2009-01-19 21:23:34 +11:00
Matt Helsley
4dfd86b220 Fix FOO_MAX off-by-one
In linux/input.h each section's (e.g. ABS) FOO_MAX is the maximum FOO
value. Recent kernels define FOO_CNT as the maximum number of FOO there
will ever be. Hence using FOO_MAX to size the bit vectors representing
the capabilities of an evdev device is off by one.

Define FOO_CNT values for use with Linux kernels which lack them. Use
FOO_CNT whenever we need to know the number of bits needed -- usually to
calculate the number of longs needed.

When iterating over the values FOO_MAX still seems appropriate however
the loop test should include FOO_MAX rather than skip it.

Signed-off-by: Matt Helsley <matt.helsley@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-01-12 13:17:40 +10:00
Matt Helsley
d3fd42d864 rename NBITS to NLONGS to reflect its actual meaning
NBITS really convers the number of bits passed as its argument
into a number of longs. This is somewhat atypical of many
function-like-macro names. Rename it to NLONGS.

Signed-off-by: Matt Helsley <matt.helsley@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-01-12 13:14:42 +10:00
Matt Helsley
dd1752ce3f Add pressure valuator
If it's available report pressure as third valuator.
(Use xf86PostMotionEventP instead of the varargs wrapper.)

Signed-off-by: Matt Helsley <matt.helsley@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-01-12 11:22:46 +10:00
Yan Li
d170cba0cd Fix XkbModel parsing error
Signed-off-by: Yan Li <yan.i.li@intel.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-01-06 08:41:24 +10:00
Sascha Hlusiak
0f36384d06 Revert "Keyboard: Disable kernel autorepeat"
This reverts commit 6867652c2c.
Functionally replaced by commit ece72ce9e9

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
2008-12-08 12:32:31 +01:00
Sascha Hlusiak
ece72ce9e9 Filter all repeated keys from kernel, because we do softrepeat in server
Discard all repeated events that come from the device. The server will handle
per-key autorepeat in software.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
2008-12-08 12:27:34 +01:00
Peter Hutterer
2bf6e29b40 Finalize MB emu (and wakeup handlers) before closing the fd.
Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
2008-12-03 16:36:59 +10:00