summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* evdev 2.8.4xf86-input-evdev-2.8.4evdev-2.8-branchPeter Hutterer2014-05-081-1/+1
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Use the server's device list for duplicate detection (#78309)Peter Hutterer2014-05-071-60/+12
| | | | | | | | | | | | | | | | | | | | 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> (cherry picked from commit 13dea90bc8ef2a2e6f55fb5ff5f54afe41d22f95)
* evdev 2.8.3xf86-input-evdev-2.8.3Peter Hutterer2014-04-291-1/+1
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Map REL_DIAL to horizontal scrolling (#73105)Peter Hutterer2014-04-291-2/+2
| | | | | | | | | | | | | | | | | | | 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> (cherry picked from commit 16c85cbeacb721ed365c6240aabaad921b811fe0) Conflicts: src/evdev.c
* Fix wheel emulation for absolute device (#68415)Peter Hutterer2014-04-292-26/+37
| | | | | | | | | | | | | | 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> (cherry picked from commit f6fcad8b107e834e26fb3da2c89e05294ff0a74c)
* evdev 2.8.2xf86-input-evdev-2.8.2Peter Hutterer2013-10-071-1/+1
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Write a SYN_REPORT after the last LEDPeter Hutterer2013-10-071-1/+5
| | | | | | | | | | | 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> (cherry picked from commit 27926b3763e525470ec8e4ac9a97aa0e02f1dd95)
* Map REL_DIAL to vertical scrollingPeter De Wachter2013-10-071-1/+1
| | | | | | | | | | 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> (cherry picked from commit 54a3120e339e55fc4721543abb15692c3e9ede09)
* evdev 2.8.1xf86-input-evdev-2.8.1Peter Hutterer2013-07-111-1/+1
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Don't allow a wheel emulation inertia of 0 (#66125)Peter Hutterer2013-06-271-1/+1
| | | | | | | | 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>
* Use EvdevBitIsSet, not the server's BitIsOnPeter Hutterer2013-05-311-1/+1
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Drop cached name and led_bitmask - nothing reads thisPeter Hutterer2013-05-312-20/+0
| | | | | | 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>
* Switch default model to pc104.Peter Hutterer2013-05-311-1/+1
| | | | | | | | | | | | | | | | 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>
* Fail to set up axes for devices that only have MT axes but no ABS_X/Y ↵Peter Hutterer2013-05-011-0/+9
| | | | | | | | | | | | | | 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>
* Add option TypeName (#62831)Peter Hutterer2013-04-163-0/+21
| | | | | | | | | | | | | | | | 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>
* evdev 2.8.0xf86-input-evdev-2.8.0Peter Hutterer2013-03-261-1/+1
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Return BadValue if EvdevOpenMTDev failsPeter Hutterer2013-02-121-1/+1
| | | | | | | | | | | | | | 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>
* Make errors on EVIOCGBIT more obviousPeter Hutterer2013-02-121-9/+9
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Always init axis mapping for the first two rel axes (#59784)baserock/morphPeter Hutterer2013-01-251-0/+5
| | | | | | | | | | | | | | 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>
* Merge branch 'touch-axis-swap'Peter Hutterer2013-01-251-54/+72
|\
| * Handle axis swap, calibration, and inversion for touch events (#59340)Peter Hutterer2013-01-141-0/+3
| | | | | | | | | | | | | | 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>
| * Move calibration adjustments to helper functionPeter Hutterer2013-01-141-32/+37
| | | | | | | | | | | | No functional changes. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * Move valuator swapping into a helper functionPeter Hutterer2013-01-141-21/+31
| | | | | | | | | | | | No functional changes. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
| * Localise tmp variablePeter Hutterer2013-01-141-1/+1
| | | | | | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* | Allow relative scroll valuators on absolute devices (#54387)Peter Hutterer2013-01-231-5/+83
| | | | | | | | | | | | | | | | | | 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>
* | Split rel and abs axis mapping into two separate arraysPeter Hutterer2013-01-233-42/+29
| | | | | | | | | | | | | | 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>
* | Move some stuff into the new alloc functionPeter Hutterer2013-01-231-11/+18
| | | | | | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* | Move allocation of EvdevRec into a helper functionPeter Hutterer2013-01-231-1/+8
| | | | | | | | | | | | Makes it easier to initialise everything to the right values. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* | autogen.sh: Implement GNOME Build APIColin Walters2013-01-161-1/+3
| | | | | | | | | | | | http://people.gnome.org/~walters/docs/build-api.txt Signed-off-by: Adam Jackson <ajax@redhat.com>
* | configure: Drop AM_MAINTAINER_MODEAdam Jackson2013-01-161-1/+0
|/ | | | Signed-off-by: Adam Jackson <ajax@redhat.com>
* Force a button if MT axes are present and it is not a gamepadMauro Carvalho Chehab2013-01-081-1/+14
| | | | | | | | | | | | | | | | | | | 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>
* Drop special XKB option handlingPeter Hutterer2013-01-081-29/+5
| | | | | | | | | | | | 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>
* Localise XKB initializationPeter Hutterer2013-01-082-24/+21
| | | | | | No need to store this in the evdev struct. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* If stat fails, pretend it's not a virtual devicePeter Hutterer2012-12-051-1/+3
| | | | | | | | 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>
* Add missing mt axis labelsBenjamin Tissoires2012-11-301-0/+5
| | | | | | | 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>
* Use LogMessageVerbSigSafe if availablePeter Hutterer2012-08-102-11/+12
| | | | | | | | 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>
* Fix broken ButtonMapping option (#53168)Peter Hutterer2012-08-081-2/+2
| | | | | | | | | Regression introduced in 8af0e6f1ebaf327f735bca507134b34bb24b26c6. s is now initialized to NULL, so we never entered the loop. X.Org Bug 53168 <http://bugs.freedesktop.org/show_bug.cgi?id=53168> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Link against libudevPeter Hutterer2012-08-071-1/+1
| | | | | | | | | | | | Fixes /usr/bin/Xorg: symbol lookup error: /usr/lib64/xorg/modules/input/evdev_drv.so: undefined symbol: udev_new This doesn't appear in the default configuration as Xorg links against libudev and the symbol is defined when evdev is loaded. It can be reproduced with a HAL-enabled server. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
* Don't delete the device on ENODEVPeter Hutterer2012-08-071-5/+1
| | | | | | | | | | | | This is signal handler code and we cannot clean up properly while in the signal handler. So reduce the code to removing the signal handler and let the device be cleaned up later. If hotplugging is on, the server will remove it when the config backend says so and if it is off, the server will remove it on shutdown. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
* Only use mtdev for multitouch devicesPeter Hutterer2012-07-271-10/+70
| | | | | | | | | | | | | mtdev uses a chunk of memory per device (~41kB), mainly for for its internal event buffers. The average box these days can easily have 10 devices, but only few of those are multitouch. So check if we have ABS_MT_POSITION axes and only create an mtdev instance if we do. If a device has multitouch axes but not x/y, we will ignore events from this device now. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
* Don't re-open mtdev after PreInitPeter Hutterer2012-07-251-6/+8
| | | | | | | | | | | | | | | | | | | | | | ==16557== 388,240 (3,520 direct, 384,720 indirect) bytes in 10 blocks are definitely lost in loss record 1,669 of 1,671 ==16557== at 0x4A06F18: calloc (vg_replace_malloc.c:566) ==16557== by 0xC3EAD4D: mtdev_new (core.c:345) ==16557== by 0xC3EAE6B: mtdev_new_open (core.c:383) ==16557== by 0xC1E0452: EvdevOpenDevice (evdev.c:2365) ==16557== by 0xC1E068C: EvdevPreInit (evdev.c:2431) ==16557== by 0x4B8304: xf86NewInputDevice (xf86Xinput.c:846) ==16557== by 0x4B8857: NewInputDeviceRequest (xf86Xinput.c:989) ==16557== by 0x4CCB4C: device_added (udev.c:211) ==16557== by 0x4CCFA6: config_udev_init (udev.c:342) ==16557== by 0x4CBE81: config_init (config.c:48) ==16557== by 0x4A8A9A: InitInput (xf86Init.c:918) ==16557== by 0x4921EE: main (main.c:258) After PreInit, the fd and mtdev pointer are still valid. We check for the fd, but unconditionally allocated another mtdev struct for each device. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
* Fix compilation warnings for non-multitouch buildsDaniel Stone2012-07-131-0/+4
| | | | | | Signed-off-by: Daniel Stone <daniel@fooishbar.org> Reviewed-by: Chase Douglas <chase.douglas@canonical.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Move axis labels into a separate header filePeter Hutterer2012-06-153-161/+196
| | | | | | Just to unclutter the code Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Split initializing one axis label out into a helper functionPeter Hutterer2012-06-151-11/+18
| | | | | | | We need this for mixed axis devices. No functional changes. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
* Constify InputDriverRec->default_optionsPeter Hutterer2012-06-081-1/+1
| | | | | | | | Removes a warning, and with the input ABI 18 this is forced to const in the server. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
* Move duplicate check up before mtdev allocationPeter Hutterer2012-06-081-9/+9
| | | | | | | No need to alloc mtdev if we then find out the fd is a duplicate one anyway. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
* Close the fd when mtdev open failsPeter Hutterer2012-06-081-0/+1
| | | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
* Release mtdev data whenever we close the fdPeter Hutterer2012-06-081-13/+25
| | | | | | | | | | | Add a new EvdevCloseDevice() function to unify this. We used to leak data - PreInit allocates mtdev, but nothing except one error path released it. - each DEVICE_ON re-allocates mtdev but it is never released Reported-by: Zdenek Kabelac <zdenek.kabelac@gmail.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
* strtol doesn't need a empty string, NULL is good enough.Peter Hutterer2012-06-081-1/+1
| | | | | | | | | | Fixes: evdev.c: In function 'EvdevInitButtonMapping': evdev.c:1659:25: warning: initialization discards 'const' qualifier from pointer target type [enabled by default] Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
* Use xf86IDrvMsg in emuMB.c instead of ErrorFPeter Hutterer2012-06-081-2/+2
| | | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Chase Douglas <chase.douglas@canonical.com>