aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAge
* evdev: Initialize valuators array. (#24737)Bartosz Brachaczek2010-08-16
| | | | | | | | | | | | | The array needs to be filled with zeros, otherwise we may end up sending it with random values if non-zero values aren't in one row (which is the case for A4Tech X-750F which sends REL_MISC events without a reason). X.Org Bug 24737 <http://bugs.freedesktop.org/show_bug.cgi?id=24737> Signed-off-by: Bartosz Brachaczek <b.brachaczek@gmail.com> Tested-by: Bartek Iwaniec <hash87@gmail.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* evdev: Revert "Set all valuators for relative motion events (#24737)"Bartosz Brachaczek2010-08-16
| | | | | | | | | | | | It isn't necessary to post zero-deltas to X Server. In order not to post uninitialized "v" array we should rather simply initialize it. This reverts commit c1f16a4f59a584ab4546c2f16e20b06703042057. Signed-off-by: Bartosz Brachaczek <b.brachaczek@gmail.com> Tested-by: Bartek Iwaniec <hash87@gmail.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Don't count BTN_TOUCH as tool. (#29428)Peter Hutterer2010-08-16
| | | | | | | | | | Devices that don't have a tool but BTN_TOUCH simply have the tool always on. Devices that have a tool other than BTN_TOUCH set this tool before BTN_TOUCH is emitted anyway. X.Org Bug 29428 <http://bugs.freedesktop.org/show_bug.cgi?id=29428> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Fix out-of-bounds access if more than MAX_VALUATORS are present. (#28809)Alex Warg2010-07-01
| | | | | | | | | | | The functions EvdevAddRelClass and EvdevAddAbsClass do out of bounds accesses to vals and old_vals arrays in the EvdevRec structure if there are more than MAX_VALUATORS axes reported by the kernel. X.Org Bug 28809 <http://bugs.freedesktop.org/show_bug.cgi?id=28809> Signed-off-by: Alex Warg <alexander.warg@os.inf.tu-dresden.de> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Disable middle mouse button emulation by default.Peter Hutterer2010-05-31
| | | | | | | | | | | | | | | | | | | | | | | The AUTO feature was the default, MB emulation was on until a middle mouse button was pressed. MB emulation however results in a delay of the first press, causing minor annoyances to the users and being generally confusing when the behaviour before a button press is different to after a button pres. Disable the feature by default instead. There's not a lot of two-button mice around anymore though and the inability to detect two-button mice makes for non-deterministic detection of when the emulation should be on. Middle button emulation can be enabled with a configuration snippet: Section "InputClass" Identifier "middle button emulation" MatchIsPointer "on" Option "Emulate3Buttons" "on" EndSection Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Acked-by: Daniel Stone <daniel@fooishbar.org>
* Remove libc wrappers for malloc, calloc and free.Peter Hutterer2010-05-28
| | | | | | | | | 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>
* Move mode declaration, it's not const either.Peter Hutterer2010-05-28
| | | | | | | What we're getting back from xf86SetStrOption is a strdup'd string, not const, especially given that we free it a few lines down. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Move opening the device into a separate function.Peter Hutterer2010-05-28
| | | | | | Re-use from EvdevOn and PreInit. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Move checks for calibration, inversion and axis swap to EvdevProbe.Peter Hutterer2010-05-28
| | | | | | Keyboard devices don't need these checks. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Move EVIOCGRAB into a static func.Peter Hutterer2010-05-28
| | | | | | | This is in preparation of some major rework, there are no functional changes. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Move error handling in PreInit down to the end.Peter Hutterer2010-05-28
| | | | | | | | Just have one exit path instead of different ones. Guards are in place to avoid freeing/deleting something that shouldn't be. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Jamey Sharp <jamey@minilop.net>
* Comment odd EVIOCGRAB behaviour and reshuffle conditions a bit.Peter Hutterer2010-05-28
| | | | | | | | | The reason for this rather weird approach is to ungrab immediately after getting a successful grab. Evdev shouldn't be hogging the device if nothing is done with it. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Jamey Sharp <jamey@minilop.net>
* Remove support for kernel 2.4.Peter Hutterer2010-05-28
| | | | | | | | It's been 6 years since 2.6, I doubt evdev would even work on 2.4 right now. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Jamey Sharp <jamey@minilop.net> Reviewed-by: Dan Nicholson <dbn.lists@gmail.com>
* Update a stale comment about the use of pEvdev->tool.Peter Hutterer2010-05-06
| | | | | | Including some typo fixes in the same comment. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Read the device resolution from the kernel.Peter Hutterer2010-04-29
| | | | | | | For earlier kernels, use the previous hardcoded resolution in place. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Julien Cristau <jcristau@debian.org>
* config: remove AH_TOP autoheader statement.Peter Hutterer2010-04-29
| | | | | | | | | 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>
* Revert "config: remove AH_TOP autoheader statement"Gaetan Nadon2010-04-22
| | | | | | | | | | The changed location of xorg-server.h had some side-effects. See Bug 27768 <https://bugs.freedesktop.org/show_bug.cgi?id=27768> This reverts commit 9dbace89bee55a001e794ccf3ff36e3afeda4715. Signed-off-by: Gaetan Nadon <memsize@videotron.ca> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Merge branch 'master' of git://gitorious.org/omcfadde/xf86-input-evdevPeter Hutterer2010-04-20
|\
| * evdev: EvdevProbe: check ioctl() return value and warn on failure.Oliver McFadden2010-04-20
| | | | | | | | | | | | | | | | Called function "ioctl" whose return value should be checked (checked 10 out of 11 times) Signed-off-by: Oliver McFadden <oliver.mcfadden@nokia.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
| * evdev: ioctl() may return a negative value therefor use a signed integer.Oliver McFadden2010-04-20
| | | | | | | | | | Signed-off-by: Oliver McFadden <oliver.mcfadden@nokia.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
| * evdev: leaked_storage: free memory allocated from the xf86Option code.Oliver McFadden2010-04-20
| | | | | | | | | | Signed-off-by: Oliver McFadden <oliver.mcfadden@nokia.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
* | config: replace deprecated INCLUDES with AM_CPPFLAGSGaetan Nadon2010-04-19
| | | | | | | | Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
* | config: remove AH_TOP autoheader statementGaetan Nadon2010-04-19
|/ | | | | | | | The generated config.h does not need to include xorg-server.h for the content it provides. Add #include <xorg-server.h> in .[hc] files as needed. Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
* Don't set pEvdev->rel for mouse wheel eventsPaulo Ricardo Zanoni2010-04-17
| | | | | | | | | This way we won't get empty MotionNotify events when the mouse wheel is used. Signed-off-by: Paulo Ricardo Zanoni <pzanoni@mandriva.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Use X_PROBED instead of X_INFO for probed values.Peter Hutterer2010-04-09
| | | | | | | No functional changes, only the log output differs now. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Fernando Carrijo <fcarrijo@yahoo.com.br>
* move feedback initialization upSimon Thum2010-03-24
| | | | | | | | | | This allows the backend to propery initialize the feedback from options, as it works with most other drivers. This is the hacky equivalent of fixing the initialization of pointer acceleration, which would require changes to most drivers however. Signed-off-by: Simon Thum <simon.thum@gmx.de> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* When labeling a device as touchpad, only check for LMR buttons.Peter Hutterer2010-03-18
| | | | | | | | | | | Touchpads that have physical buttons have either LMR or BTN_TOOL_FINGER. Other buttons in the range evdev recognises shouldn't be taken into account here - they skew the detection towards touchpads and away from touchscreens. Fedora Bug 571639 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Simon Thum <simon.thum@gmx.de>
* emuMB: default to disabled mouse button emulation for touchscreens.Oliver McFadden2010-02-25
| | | | | | | | | | | | | | Because touchscreens only use one button (see EvdevProcessKeyEvent()) EvdevMBEmuFilterEvent() never calls EvdevMBEmuEnable(..., FALSE) to disable emulation. This results in touchscreen devices incurring a delay of Emulate3Timeout (typically 50 ms.) Default to MBEMU_DISABLED for touchscreen devices (unless overwritten by Xorg.conf.) Signed-off-by: Oliver McFadden <oliver.mcfadden@nokia.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* config: move CWARNFLAGS from configure.ac to Makefile.amGaetan Nadon2010-02-11
| | | | | | | Compiler warning flags should be explicitly set in the makefile rather than being merged with other packages compiler flags. Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
* Implement XSetDeviceMode request handlerAndrej Gelenberg2010-01-19
| | | | | | | | | | | | | | | | Implement XSetDeviceMode request handler for evdev. Devices with absolute axes can be switched in relative mode or absolute mode. Devices with relative axes can be switched only in relative mode. Other devices return BadMatch, cause they have no valuators and don't report motion events. New option "Mode" force devices with absolute axes to work in relative or absolute mode. Need xinputproto. Signed-off-by: Andrej Gelenberg <andrej.gelenberg@udo.edu>
* allow wheel emulation to work with absolute-position devicesDima Kogan2009-12-08
| | | | | Signed-off-by: Dima Kogan <dkogan@cds.caltech.edu> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* removed unnecessary static declarationsDima Kogan2009-12-07
| | | | | Signed-off-by: Dima Kogan <dkogan@cds.caltech.edu> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Fix up BTN_TOUCH handling for non-button tablets.Peter Hutterer2009-12-02
| | | | | | | | | | BTN_TOOL_* is treated as tool, just like before. BTN_TOUCH on the other hand may need to be treated as a button left press. This again requires a button class. Tested on an HP Touchsmart and a Wacom tablet. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Only init the calibration property for absolute devices.Peter Hutterer2009-12-01
| | | | | | Relative devices can't be calibrated anyway so why bother. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Report initial calibration parameters.David Woodhouse2009-12-01
| | | | | | | | | | Where an initial calibration is provided through the Calibration option to the driver, it wasn't being exposed in the 'Evdev Axis Calibration' property. Remedy that... Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> Acked-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Swap axes before applying touch screen calibration.David Woodhouse2009-12-01
| | | | | | | | | | | | | | | | When the SwapAxes option is set, the X and Y axes in calibration should be labelled as the user perceives them -- not as the kernel sends them. Currently, we apply the X-axis calibration to the X-axis of the input, and then do the axis swapping so we've actually applied the X-axis calibration to what the user sees as the Y-axis. This patch changes the order of the operations, so that the axes are swapped before the calibration is applied. Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> Acked-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Fix a comment, EV_CNT is available since 2.6.24Peter Hutterer2009-12-01
| | | | | | Introduced in the kernel as 2.6.23-6147-g7b19ada. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Set all valuators for relative motion events (#24737)Bartosz Brachaczek2009-11-19
| | | | | | | | | | | | | | | | | | We should process all the deltas reported by a relative motion device, otherwise some devices such as A4Tech X-750F or similar may trigger a situation when the `v` array contains random values (it isn't initialized anywhere) and later we process them and in effect the mouse cursor "jumps" on the screen. I'm not sure why, but we also must be sure that the `first` and `last` variables reflect the axis map, otherwise the mouse cursor "jumps" on the screen when clicking mouse buttons in some rare cases reported by Bartek Iwaniec on Bugzilla. That's why a simple initialization of the `v` array with zeros isn't sufficient. X.Org Bug 24737 <http://bugs.freedesktop.org/show_bug.cgi?id=24737> Signed-off-by: Bartosz Brachaczek <b.brachaczek@gmail.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Relax checks when reopening devicesDmitry Torokhov2009-11-05
| | | | | | | | | | | | | | | | | | | | | When checking whether we are dealing with the same device as before when we try to reopen it evdev should not require exact match of entire keymap. Users should be allowed to adjust keymaps to better match their hardware even after X starts. However we don't expect changes in [BTN_MISC, KEY_OK) range since these codes are reserved for mice, joysticks, tablets and so forth, so we will limit the check to this range. The same goes for absinfo - limits can change and it should not result in device being disabled. Also check the length of the data returned by ioctl and don't try to compare more than we were given. [peter: moved the key comparison below the led+abs comparison] Signed-off-by: Dmitry Torokhov <dtor@mail.ru> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Fix drag-lock property handler for multiple draglock buttons.Peter Hutterer2009-11-02
| | | | | | | | | | | | Parsing of the values was wrong. Given an input of 1 2 3 4, button 1 sets the lock for button 2 and button 3 sets the lock for button 4. This also means we need to return BadMatch if the property isn't a multiple of 2. Red Hat Bug 524428 <https://bugzilla.redhat.com/show_bug.cgi?id=524428> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Forward keycodes > 255Peter Hutterer2009-10-26
| | | | | | The server doesn't handle them yet but eventually it should learn. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Remove the reopen timer logic.Peter Hutterer2009-10-20
| | | | | | | | | This logic was needed in older kernels that sometimes gave error messages after coming back from resume (2.6.27 release kernels). I haven't seen any log files that needed this reopen timer in a long time, suggesting that need for it is gone. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Convert IgnoreAbsolute/RelativeAxes options into trinary state.Peter Hutterer2009-10-15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Xen Virtual Pointer device exports both absolute and relative axes from the kernel device. Which coordinates are used is a run-time decision and depends on the host-specific configuration. 0a3657d2ee62f4086e9687218cb33835ba61a0b3 broke these devices, and they are now unusable out-of-the-box as there is no configuration to cover them. This patch converts the IgnoreAbsoluteAxes and the IgnoreRelativeAxes configuration options into a trinary state. 1. If unset, configure the device as normal by trying to guess the right axis setup. 2. If set to true, ignore the specific axis type completely (except for wheel events). 3. If set to false, explicitly 'unignore' the axis type, alwas configuring it if it is present on the device. This setting introduces seemingly buggy behaviour (see Bug 21832) 1. and 2. replicate the current driver behaviour. The result of 3. is that is that if a device has absolute axes and the options set to false, both axes will be initialized (absolute last to get clipping right). This requires axis labelling priorty to switch from relative first to absolute first. Relative events are forwarded into the server through the absolute axes, the server scales this into the device absolute range and everyone is happy. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Fix copy/paste typo in comment.Peter Hutterer2009-10-15
|
* Fix typo, use uppercase like the other messagesPeter Hutterer2009-10-13
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* evdev: Support the "Calibration" string option.Oliver McFadden2009-10-13
| | | | | | | | | Originally based on a patch from Daniel Stone, this commit allows for the calibration factors to be set either from Xorg.conf or via HAL. Previously the only way was via the properties interface. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Finalize the middle button emulation when a read error occurs (#23048)Peter Hutterer2009-10-10
| | | | | | | | | | | If a read error occurs, remove the block and wakeup handlers for middle mouse button emulation. Otherwise, they'll still be around after the device has been reopened and overwritten with the new ones created by EvdevOn. Once this happened, future removal of the device can lead to a server crash. X.Org Bug 23048 <http://bugs.freedesktop.org/show_bug.cgi?id=23048> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Add explicit options to ignore relative or absolute axes.Peter Hutterer2009-10-07
| | | | | | | | | | | | | | | The X server cannot deal with devices that have both relative and absolute axes. Evdev tries to guess wich axes to ignore given the device type and disables absolute axes for mice and relative axes for tablets, touchscreens and touchpad. This guess is sometimes wrong and causes exitus felis domesticae parvulae. Two new configuration options are provided to explicitly allow ignoring an axis. Mouse wheel axes are exempt and will work even if relative axes are ignored. No property, this option must be set in the configuration. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Acked-by: Daniel Stone <daniel@fooishbar.org>
* Remove unused has_xy.Peter Hutterer2009-09-30
| | | | | | has_xy is only ever set, but not used for anything else. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* emuWheel: fix signed/unsigned screwupPeter Hutterer2009-09-23
| | | | | | | This patch fixes wheel emulation on buttons other than 0. Reported-by: Andy Neitzke Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>