aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* evdev 2.7.0xf86-input-evdev-2.7.0Peter Hutterer2012-03-07
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Only force REL_X/Y if no ABS_X/Y existsPeter Hutterer2012-01-26
| | | | | | | | | | | | | | 5c5b2c8db851df7921cedd888222a6630a007fd8 added forced x/y axes if a device has any axes of the same mode. This was too broad a brush, some devices have a relative wheel but absolute x/y axes and would now get misdetected as purely relative device. Only force relative axes if a device no rel x/y _and_ no abs x/y. Reproducible: virtual machine with QEMU USB Tablet will stop working Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
* Copy last valuator values into new touch valuator masksChase Douglas2012-01-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Evdev is a 100% stateful protocol. The following represents three touches. Two touches begin and end at the same time at (500, 500) and (1000, 1000). The third touch begins after the first two end, and is at (500, 500). ABS_MT_SLOT 0 /* Set touch slot */ ABS_MT_TRACKING_ID 0 /* New touch with ID 0 in slot 0 */ ABS_MT_POSITION_X 500 /* Initial X position */ ABS_MT_POSITION_Y 500 /* Initial Y position */ ABS_MT_SLOT 1 /* Set touch slot */ ABS_MT_TRACKING_ID 1 /* New touch with ID 1 in slot 1 */ ABS_MT_POSITION_X 1000 /* Initial X position */ ABS_MT_POSITION_Y 1000 /* Initial Y position */ SYNC /* End of frame */ ABS_MT_SLOT 0 /* Go back to slot 0 */ ABS_MT_TRACKING_ID -1 /* Touch in slot 0 ended */ ABS_MT_SLOT 1 /* Go to slot 1 */ ABS_MT_TRACKING_ID -1 /* Touch in slot 1 ended */ SYNC /* End of frame */ ABS_MT_SLOT 0 /* Go back to slot 0 */ ABS_MT_TRACKING_ID 2 /* New touch in slot 0 with ID 2 */ SYNC /* End of frame */ ABS_MT_TRACKING_ID -1 /* Touch in last slot (0) ended */ SYNC /* End of frame */ Note that touch 2 has the same X and Y position as touch 0. This is implied because no new value was emitted for slot 0. In fact, Linux will not emit an event in the same slot with the same event type and code unless the value has changed. Thus, we can only assume that all the MT valuators have the same values as they were when they were last sent for the given slot. This change adds an array of valuator mask to hold all the last valuator values that came from evdev for each slot. When a new touch begins, all the last values are copied into it. This patch assumes initial axis values of 0 in each slot. Linux and mtdev do not provide a facility to query the current values of axes in each slot yet. This may cause spurious incorrect touch valuator values at the beginning of an X session, but there's nothing we can do about it right now. Signed-off-by: Chase Douglas <chase.douglas@canonical.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Prefere relative axis labelling over absolute axis labellingPeter Hutterer2012-01-18
| | | | | | | | | | | | | If a device has both relative and absolute axes, we'd initialise the relative axes but label them with the absolute labels. The current code is broken for mixed mode devices. Most of these devices operate primarily in relative mode, but have some absolute axes available for secondary functionality. For now, label the relative axes properly. We can fix the absolute axes later. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
* Force x/y axes to exist on devices with any other axes (#44655)Peter Hutterer2012-01-17
| | | | | | | | | | | | | | | | | Too much in the server relies on x/y to exist and to be axes 0 and 1. So if any relative axes exist, initialize REL_X/Y or ABS_X/Y as well. For servers up to 1.11: a scrollwheel-only device now has relative axes where it only had buttons before. For servers 1.12 or later: the device now has x/y in addition to the scroll axes. X.Org Bug 44655 <http://bugs.freedesktop.org/show_bug.cgi?id=44655> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com> Reviewed-by: Daniel Stone <daniel@fooishbar.org>
* missing multitouch related define testsPete Beardmore2012-01-10
| | | | | | | | | | addition of two missing define tests required when no multitouch related symbols are available in user-space Fixes X.Org Bug 44578 <https://bugs.freedesktop.org/show_bug.cgi?id=44578> Signed-off-by: Pete Beardmore <pete.beardmore@msn.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Set the default resolution to 0Chase Douglas2012-01-06
| | | | | | | | | | | | | If we don't know the resolution, set it to 0. This is invalid, and tells the X client that we don't know the resolution, rather than reporting an incorrect value. This value was originally from commit 6271494faa4c45f4fa10509f72e0515f2cef36c6, which is the initial commit from Adam Jackson adding absolute axis support. Signed-off-by: Chase Douglas <chase.douglas@canonical.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Remove unused udev.cPeter Hutterer2012-01-03
| | | | | | | | Added in 683a55e504f4fc2d1c847c54986439a0c61b2f20 due to a botched up rebase -i. The contents of udev.c and EvdevIsVirtual are identical, there is no need for an extra file for this one function. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* configure.ac: Fix udev/libudev dependency.Cyril Brulebois2012-01-03
| | | | | | | | | In 683a55e504f4fc2d1c847c54986439a0c61b2f20, a dependency on libudev was added, but documented in configure.ac as a dependency on udev (which also happens to ship a pkg-config file). Signed-off-by: Cyril Brulebois <kibi@debian.org> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Remove redundant redeclaration of Evdev3BEmuPreInitJeremy Huddleston2011-12-31
| | | | | Found-by: Tinderbox Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
* evdev 2.6.99.901xf86-input-evdev-2.6.99.901Cyril Brulebois2011-12-31
| | | | Signed-off-by: Cyril Brulebois <kibi@debian.org>
* Require xserver 1.12 RC1Peter Hutterer2011-12-29
| | | | | | | Remove the ABI check hack, just check for the server version directly now that we have one that definitely has the multitouch APIs. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Test for mtdev before assuming multitouchPeter Hutterer2011-12-29
| | | | | | | If the XI2.2 headers are present but mtdev isn't, build without MULTITOUCH defined. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Remove need for --enable-multitouchPeter Hutterer2011-12-24
| | | | | | | | If we spot inputproto 2.1.99.3, we assume we have a capable X server. This should really be a server version check, but the server version hasn't been bumped yet. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Include config.h from evdev.hPeter Hutterer2011-12-24
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Always include mt_mask in the evdev structPeter Hutterer2011-12-24
| | | | | | | | | | | Even if MT support isn't available, include it in the build. The checks in the code check whether mt_mask is non-NULL but they would all need ifdef escaping otherwise. Leave the mtdev part inside the ifdef however, so that we don't need the mtdev header if we don't build with multitouch. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Merge branch 'multitouch'Peter Hutterer2011-12-23
|\
| * Don't count legacy and MT axes twicePeter Hutterer2011-12-20
| | | | | | | | | | | | | | | | The kernel exports both ABS_X and ABS_MT_POSITION_X (and a couple others) for a multi-touch capable device. For such devices, only count the axis once since we submit ABS_MT_POSITION_X through ABS_X. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * Add is_blacklisted_axis() helperPeter Hutterer2011-12-20
| | | | | | | | | | | | | | | | | | | | The kernel exports a bunch of information as axis that shouldn't be an axis and we don't treat it as axis in the server. Add this helper instead of checking for the axis codes manually. No function change. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * Drop now-unnecessary XI 2.1 and XI 2.2 error suppression definesPeter Hutterer2011-12-20
| | | | | | | | | | | | Gone since inputproto 2.1.99.3 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * Map ABS_MT_POSITION_X/Y into ABS_X/YPeter Hutterer2011-12-20
| | | | | | | | | | | | | | MT axes are the same as traditional axes, so one into the other so we get x/y coordinates regardless wich axes it comes from. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * Use xf86InitValuatorAxisStruct, the touch-specific version was droppedPeter Hutterer2011-12-15
| | | | | | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * Don't send pointer events for multitouch touchscreen devicesChase Douglas2011-11-29
| | | | | | | | | | | | Pointer events will be emulated by the server. Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
| * Add the required defines to compile against the inputprotoPeter Hutterer2011-11-11
| | | | | | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * Print to the log if we find multitouch axes.Peter Hutterer2011-11-11
| | | | | | | | | | | | | | No real effect on the code, but it helps to have that line in the log when searching for driver issues. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * Replace 0/1 button values with enumsPeter Hutterer2011-11-11
| | | | | | | | | | | | BUTTON_PRESS is much harder to confuse with a button number than a simple 1. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * Skip event posting for empty slots.Peter Hutterer2011-11-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ABS_MT_SLOT comes before any other events. The following order of events is common for protocol B devices (and mtdev): ... EV_SYN ABS_MT_SLOT → posting here means we miss on the position information ABS_MT_POSITION_X ABS_MT_POSITION_Y ABS_MT_SLOT ABS_MT_POSITION_X ABS_MT_POSITION_Y EV_SYN Store the stot state as SLOT_EMPTY after posting an event (i.e. EV_SYN and ABS_MT_SLOT) and then don't post until the next slot/syn event. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * Replace open_slot/close_slot with a SlotState enumPeter Hutterer2011-11-11
| | | | | | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * Simplify a condition, only the event type differs herePeter Hutterer2011-11-11
| | | | | | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * When resetting the queue, don't reset the touchMaskPeter Hutterer2011-11-11
| | | | | | | | | | | | Otherwise we segfault after the first SYN event Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * MT axes are counted separately, make sure they're initialized too.Peter Hutterer2011-11-11
| | | | | | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * 0 is the value for "unknown/unlimited" number of touchesPeter Hutterer2011-11-11
| | | | | | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * Use mtdev API to allocate/free mtdev structsPeter Hutterer2011-11-11
| | | | | | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * Remove duplicate linePeter Hutterer2011-11-11
| | | | | | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * Ensure touchpad events are always processed with MTChase Douglas2011-11-11
| | | | | | | | | | | | | | | | Without this change, an MT touchpad in relative mode could end a touch while not resetting the oldMask used to calculate relative values. This fix allows a Magic Trackpad to behave as a relative mode device again. Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
| * Use MTDev for multitouch devicesChase Douglas2011-11-11
| | | | | | | | | | | | | | | | MTDev translates all multitouch devices to the slotted evdev protocol. This provides a clean and uniform interface and reduces message handling inside the input module and X. Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
| * Add experimental XI 2.1 multitouch supportChase Douglas2011-11-11
| | | | | | | | | | | | | | | | | | | | | | | | This multitouch addition only supports slotted MT evdev protocol devices. Support must be enabled at configure time using --enable-multitouch. Signed-off-by: Chase Douglas <chase.douglas@canonical.com> Amendments: XI_TouchMotion -> XI_TouchUpdate, rename mtMask to mt_mask Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * Use a new "Virtual Device" boolean property to mark virtual devicesPeter Hutterer2011-11-11
| | | | | | | | | | | | | | | | | | Use udev to check for the device's sysfs path, if it contains LNXSYSTM it's a kernel-emulated device. This property can then be used to determine if there are any real devices connected, allowing the desktop environment to e.g. turn off the touchpad whenever there's a mouse attached. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* | Fix relative events with swapped axesPaulo Zanoni2011-12-16
| | | | | | | | | | | | | | | | After we swap the axes, we only call valuator_mask_set for axes that are not zero, so we need to unset the axes that became zero when swapped. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* | Fix absolute events with swapped axesPaulo Zanoni2011-12-15
|/ | | | | | | | | | | | | We were correctly swapping the valuator values, but we were not calling valuator_mask_unset() when needed, so the cursor kept jumping to the edges. This patch does the swapping before the main "for", so we don't need to store unswapped_{x,y} and unswapped_isset_{x,y} even when we don't need to swap. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Move misplaced #endif caused by smooth-scrolling mergePeter Hutterer2011-11-11
| | | | | | | Bad conflict resolution in xf86-input-evdev-2.6.0-30-g745fca0 Reported-by: Sebastian Glita <glseba@yahoo.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Bump to 2.6.99Peter Hutterer2011-11-09
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Merge branch 'smooth-scrolling'Peter Hutterer2011-11-09
|\ | | | | | | | | | | | | Conflicts: src/evdev.c Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * Support smooth scrolling on REL_WHEEL, REL_HWHEEL and REL_DIALPeter Hutterer2011-11-09
| | | | | | | | | | | | | | | | | | | | Automatic smooth scrolling setup for these axes, with REL_WHEEL and REL_DIAL both mapping into vscrolling. REL_WHEEL is the preferred axis. Mouse wheel emulation is not yet updated for smooth scrolling. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Daniel Stone <daniel@fooishbar.org>
* | Don't crop long value from EvdevBitIsSet.Peter Hutterer2011-11-04
| | | | | | | | | | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com> Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
* | emuThird: Use xf86SetIntOption, not xf86SetBoolOption for integer valuesJools Wills2011-10-31
| | | | | | | | | | | | Signed-off-by: Jools Wills <jools@oxfordinspire.co.uk> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* | type-safe inline functions for bitmask manipulationMax Schwarz2011-10-24
|/ | | | | | | | | We can't use BitIsSet/SetBit from the server (inputstr.h) since they operate on byte arrays. EvdevSetBit is added in preparation for the "smooth-scrolling on wheel emulation" patch. Signed-off-by: Max Schwarz <Max@x-quadraht.de> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Exit axis labelling if axes are neither rel nor absPeter Hutterer2011-08-15
| | | | | | | No actual effect since labels_len is always 0 anyway but let's make the return more explicit. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* xf86-input-evdev: Return proper default for unknown values in ↵Terry Lambert2011-07-18
| | | | | | | | pInfo->device_control. Signed-off-by: Terry Lambert <tlambert@chromium.org> Reviewed-by: Stephane Marchesin <marcheu@chromium.org> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Remove unused misc_label and valPeter Hutterer2011-06-15
| | | | | | | | | | | | | | | evdev.c: In function 'EvdevInitAxesLabels': evdev.c:2192:11: warning: variable 'misc_label' set but not used [-Wunused-but-set-variable] obsolete with 880ad1e19afd83ac115948b67d4049e16cb12df0 emuWheel.c: In function 'EvdevWheelEmuPreInit': emuWheel.c:252:10: warning: variable 'val' set but not used [-Wunused-but-set-variable] obsolete with b0737bdbd1f6e601eb4984b6f4cb49279190984c Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Daniel Stone <daniel@fooishbar.org>