summaryrefslogtreecommitdiff
path: root/src/emuWheel.c
AgeCommit message (Collapse)Author
2016-01-20Don't reset the other axis on wheel emulation scroll buildupPeter Hutterer
The idea was that of a direction lock: as we move vertically we should not build up any horizontal scroll motion even if we move slightly diagonally. The effect was though that the axis would be reset completely as soon as an event from the other axis occured. With the default threshold of 10, if one in ten events was a REL_X, we'd never get a wheel event. Drop this code, it's not needed. By default wheel emulation doesn't do horizontal scrolling, if a config snippet sets XAxisMapping the user wants horizontal scrolling. And since we just add the value anyway, as long as the user does a roughly vertical motion we won't get over the threshold anyway. https://bugs.freedesktop.org/show_bug.cgi?id=93617 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2014-12-17Split pEvdev->vals into pEvdev->abs_vals and pEvdev->rel_valsÉric Brunet
This should hopefully fix bug 84445. Signed-off-by: Éric Brunet <Eric.Brunet@lps.ens.fr> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-10-22Fix wheel emulation for absolute device (#68415)Peter Hutterer
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>
2013-08-28Remove a commentPeter Hutterer
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>
2013-06-27Don't allow a wheel emulation inertia of 0 (#66125)Peter Hutterer
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>
2013-01-23Split rel and abs axis mapping into two separate arraysPeter Hutterer
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>
2012-05-21Fix some obvious constness-related compile warnings.Marcin Slusarz
Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2011-06-15Remove unused misc_label and valPeter Hutterer
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>
2011-01-31Replace xf86Msg() with xf86IDrvMsg().Peter Hutterer
The latter provides a standardised message format in the form of driver name: device name: message making it easier to grep for driver messages in the log. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2011-01-25Add support for masked valuatorsChase Douglas
With the X server now supporting masked valuators for XI2, enable support in X evdev. Signed-off-by: Chase Douglas <chase.douglas@canonical.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2011-01-24Remove support for X input ABI < 12.2Chase Douglas
Signed-off-by: Chase Douglas <chase.douglas@canonical.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2010-05-28Remove libc wrappers for malloc, calloc and free.Peter Hutterer
Evdev is Linux-only, and we've had the above calls for quite a while now. Plus, now that the server has removed them they generate _a lot_ of warnings otherwise. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Jamey Sharp <jamey@minilop.net>
2010-04-29config: remove AH_TOP autoheader statement.Peter Hutterer
Include it in evdev.h instead. xorg-server.h is required to define the right datatype sizes on 64 bit, hence ensure that evdev.h is the first included in each file. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Gaetan Nadon <memsize@videotron.ca>
2010-04-20evdev: leaked_storage: free memory allocated from the xf86Option code.Oliver McFadden
Signed-off-by: Oliver McFadden <oliver.mcfadden@nokia.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-12-08allow wheel emulation to work with absolute-position devicesDima Kogan
Signed-off-by: Dima Kogan <dkogan@cds.caltech.edu> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-09-23emuWheel: fix signed/unsigned screwupPeter Hutterer
This patch fixes wheel emulation on buttons other than 0. Reported-by: Andy Neitzke Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-08-18Allow 0 as wheel emulation button for unconditional scrolling (#20529)Dima Kogan
If wheel emulation is on and the emulation button is 0, then any x/y motion of the device is converted into wheel events. The devices becomes a scrolling-only device. Signed-off-by: Dima Kogan <dkogan@cds.caltech.edu> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-08-18Restrict wheel emulation to a single axis at a time.Peter Hutterer
Wheel emulation works for both horizontal and vertical axes. Thus, if a device doesn't move in perfect straight line, scroll events build up on the respective other axis. In some clients, scroll wheel events have specific meanings other than scrolling (e.g. mplayer). In these clients, erroneous scrolling events come at a high cost. Thus, if a scroll wheel event is generated for one axis, reset the inertia of the other axis to 0, avoiding the buildup of these erroneous scrolling events. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-08-13Rename parts of the Post API to a Queue API.Peter Hutterer
Button and key events aren't posted from EvdevPost*Event, they are simply enqueued onto the evdev-internal event queue until the next EV_SYN arrives. Rename those interfaces from EvdevPost* to EvdevQueue* and leave only those that actually post to the server with a matching "*Post*" name. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Acked-by: Oliver McFadden <oliver.mcfadden@nokia.com>
2009-08-04evdev: Use the EvdevPost...Event() functions in the emulation code.Oliver McFadden
This is similar to commit 1f641d75edba7394201c1c53938215bae696791b. It provides the same functionality of queuing the (in this case emulated) events and waiting until an EV_SYN synchronization event is received before posting them to the server. This preserves the order of events (both real and emulated) and ensures that MotionNotify events will always be posted first. It also unifies the event posting into a few small functions which improves maintainability. From this point on, you should never use the xf86Post...Event() functions in new code, but rather the EvdevPost...Event() versions. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-07-17Coverity Prevent: NO_EFFECT in EvdevWheelEmuSetProperty:Oliver McFadden
Event unsigned_compare: Comparing unsigned less than zero is never true. "pEvdev->emulateWheel.timeout < 0UL" 342 if (pEvdev->emulateWheel.timeout < 0) Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-05-21Rename pEvdev->buttons to pEvdev->num_buttons for clarity.Peter Hutterer
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2009-02-02Janitor: make distcheck, .gitignore.Paulo Cesar Pereira de Andrade
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-02Protect against zero-sized property values. #19882Peter Hutterer
X.Org Bug 19882 <http://bugs.freedesktop.org/show_bug.cgi?id=19882> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2008-10-148-bit properties should use 8-bit storage types...Peter Hutterer
2008-10-14Tidy up evdev.hPeter Hutterer
This includes shuffling some functions around so we don't need the prototypes in evdev.h.
2008-10-14Register property handler from within the modules, not the main evdev file.Peter Hutterer
2008-10-14Clean up program flow - don't call PreInit for "modules" on DEVICE_INIT.Peter Hutterer
Call the PreInit functions for MB Emulation, wheel emu, and draglock during PreInit, not on DEVICE_INIT. This way, we only parse the options once and don't overwrite with defaults when coming back from a VT switch.
2008-10-11Add checkonly handling to property handlers.Peter Hutterer
If checkonly is TRUE, we can only check if applying the value would succeed. The value is actually applied if checkonly is FALSE.
2008-10-11Stricter value checking for property changes.Peter Hutterer
2008-09-30Cleanup: "valid_vals" should be "vals" now.Peter Hutterer
2008-09-30Add evdev-properties.h file with #defines for all property names.Peter Hutterer
2008-09-26Use new property API (no ConfigureDP, less args to ChangeDP)Peter Hutterer
Return appropriate status codes from property handlers. Make properties non-deletable.
2008-09-04Use HAVE_PROPERTIES define instead of GET_ABI_MAJOR for property compilation.Peter Hutterer
2008-09-04Shut up "unused variable" compiler warnings.Peter Hutterer
Hide properties behind ifdefs, fake use of "val".
2008-08-25Wheel emulation: initial values must be char.Peter Hutterer
parsing int* to char* in XIChangeDeviceProperty means we lose values.
2008-08-22Init all emulateWheel values, even if EmulateWheel is disabled.Peter Hutterer
Even if we don't want EmulateWheel, we can at least init everything to usable values. This way we only need to toggle "enabled", rather than initialising the whole lot before usage.
2008-08-22Add wheel timeout property supportDan Nicholson
Copied from the wheel inertia property support. Signed-off-by: Dan Nicholson <dbn.lists@gmail.com> Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
2008-08-22Add timeout support for mouse wheel emulationDan Nicholson
Support the EmulateWheelTimeout option as the mouse driver does. Signed-off-by: Dan Nicholson <dbn.lists@gmail.com> Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
2008-08-08Simplify the property handler registration.Peter Hutterer
Instead of having separate handlers for each property, just handle all of them in one handler for emuMB, and one handler for emuWheel.
2008-08-08Add EVDEV_MAXBUTTONS instead of checking against 32.Peter Hutterer
Numbers are so lame, defines are all the rage now I've heard.
2008-08-08Expose wheel emulation through device properties.Peter Hutterer
Don't enable wheel emulation with 0 inertia - bad things happen.
2008-08-07Adding mouse wheel emulation code.Chris Salch
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>