aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* evdev 2.2.99.1xf86-input-evdev-2.2.99.1Peter Hutterer2009-08-14
|
* Treat tablets (BTN_TOOL_PEN devices) differently from touchpads.Peter Hutterer2009-08-14
| | | | | | | | | | | The previous checks for BTN_TOOL_FINGER and BTN_TOUCH reported false positives for touchpads for most popular tablets. As a result, their events were converted to relative events. Add a new flag EVDEV_TABLET pending presence of BTN_TOOL_PEN and ignore the touchpad special casing to report the events as-is. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Add EvdevPostButtonEvent API to immediately post a button event (#23269)Peter Hutterer2009-08-14
| | | | | | | | | | | | | | | | The wheel emulation code needs this API. When the timer expires, the event must be posted immediately, not enqueued onto the internal event queue. Otherwise, the emulated middle button press is enqueued only and no event is sent until the next physical event (and its EV_SYN) arrives. Since the timer is triggered outside of the SIGIO and SIGIO is blocked during this period anyway, we could also just enqueue the event and flush by simulating an EV_SYN. It's easier this way though. X.Org Bug 23269 <http://bugs.freedesktop.org/show_bug.cgi?id=23269> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Acked-by: Oliver McFadden <oliver.mcfadden@nokia.com>
* Rename parts of the Post API to a Queue API.Peter Hutterer2009-08-13
| | | | | | | | | | 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>
* comment typo fixPeter Hutterer2009-08-13
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Skip check for EVDEV_RELATIVE_EVENTS for wheel events.Peter Hutterer2009-08-11
| | | | | | | | This patch fixes a regression introduced with 1f641d75e. Wheel axis events are posted as button clicks, a device may have no relative axes but it does need to post these button clicks. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* evdev.c: Fix/improve discrimination of rel/abs axesMichael Witten2009-08-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The relevant comment from evdev.c: We don't allow relative and absolute axes on the same device. The reason is that some devices (MS Optical Desktop 2000) register both rel and abs axes for x/y. The abs axes register min/max; this min/max then also applies to the relative device (the mouse) and caps it at 0..255 for both axes. So, unless you have a small screen, you won't be enjoying it much; consequently, absolute axes are generally ignored. However, currenly only a device with absolute axes can be registered as a touch{pad,screen}. Thus, given such a device, absolute axes are used and relative axes are ignored. The code for initializing abs/rel axes has been abstracted out into 3 functions, so that initialization in EvdevInit(device) is as easy as: if (pEvdev->flags & (EVDEV_TOUCHPAD | EVDEV_TOUCHSCREEN)) EvdevInitTouchDevice(device, pEvdev); else if (pEvdev->flags & EVDEV_RELATIVE_EVENTS) EvdevInitRelClass(device, pEvdev); else if (pEvdev->flags & EVDEV_ABSOLUTE_EVENTS) EvdevInitAbsClass(device, pEvdev); Signed-off-by: Michael Witten <mfwitten@gmail.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* evdev: Use the EvdevPost...Event() functions in the emulation code.Oliver McFadden2009-08-04
| | | | | | | | | | | | | | | | | | 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>
* Evdev doesn't require inputproto.Peter Hutterer2009-07-30
| | | | | | None of the inputproto headers seem to be included anywhere. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* evdev: Only send the events at synchronization time.Oliver McFadden2009-07-29
| | | | | | | | | | | | | | | | | | | Instead of just posting the button/key press/release events to the server as soon as they arrive, add them to an internal queue and post them once we receive an EV_SYN synchronization event. The motion events are always sent first, followed by the queued events. There will be one motion event and possibly many queued button/key events posted every EV_SYN event. Note that the size of the event queue (EVDEV_MAXQUEUE) is arbitrary and you may change it. If we receive more events than the queue can handle, those events are dropped and a warning message printed. Tested on my Lenovo T400 using evdev for all input devices; keyboard, touchpad, and trackpoint. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Don't register middle mouse button emulation handlers for keyboards.Peter Hutterer2009-07-20
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Coverity Prevent: NO_EFFECT in EvdevWheelEmuSetProperty:Oliver McFadden2009-07-17
| | | | | | | 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>
* Count REL_DIAL as a scrollwheel during EvdevProbe (#21457)Peter Hutterer2009-07-03
| | | | | | | | | | | The Griffin Powermate only has a single axis (REL_DIAL). This axis is posted as horizontal scroll wheel, so we need to ensure the scroll wheel setup (including ensuring that enough buttons are available) is triggered accordingly. X.Org Bug 21457 <http://bugs.freedesktop.org/show_bug.cgi?id=21457> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* evdev: Fix spelling of property in man page to match source code. #22571Asbjørn Sannes2009-07-02
| | | | | Signed-off-by: Asbj�rn Sannes <ace@sannes.org> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Fix absolute axis labelling - mapping must be initialized before the labels.Peter Hutterer2009-06-29
| | | | | | | | | | | 88eedea281a710008a82f1e6af4bdffd19477f46 added axis labelling to the valuator initialization. This requires the axis mapping to be established before the absolute axis labels are initialized. 88eedea did this for relative axes, but missed out on the absolute ones. As a result, all abs. labels were initialized to "None". Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Message "found absolute touchpad" also applies to tablets - fix.Peter Hutterer2009-06-29
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* If a device fails to initialize relative axes, init the abs. axes instead.Peter Hutterer2009-06-29
| | | | | | | | Some devices have relative axes that don't count (scroll wheels). In this case, don't claim we've initialized relative axes, continue with the absolute axes instead. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Fix wrong axis label index causing OOB reads/writes.Peter Hutterer2009-06-23
| | | | | | | The atoms array is filled with each axis atom in mapping order (i.e. after the driver mapping has been applied). 'axis' OTOH is from 0 to ABS_MAX. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Initialize the axis labels to 0, not "misc".Peter Hutterer2009-06-23
| | | | | | | If we don't know what an axis label is, then don't initialize it. None is a valid label. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Add missing checks for ABI_XINPUT_VERSION 7.Peter Hutterer2009-06-18
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Cope with ABI_XINPUT_VERSION 7 - requires button + axes labels.Peter Hutterer2009-06-18
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Split axes and button labels into separate function.Peter Hutterer2009-06-18
| | | | | | We'll re-use this bit very soon. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* evdev: Prevent driver from processing motion events that it has not ↵Derek Upham2009-05-28
| | | | | | | | | | | | | | configured. #21832 The current implementation initializes itself to support relative motion events, or absolute motion events, or neither. But the event-handling code attempts to process all events, no matter what the initialization was. This patch reproduces the flag tests found during init, to skip events that the driver doesn't support. Signed-off-by: Derek Upham <sand@blarg.net> Signed-off-by: Julien Cristau <jcristau@debian.org> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Deal with BTN_3 to BTN_9 buttons.Peter Hutterer2009-05-21
| | | | | | | | | | | | | These buttons were previously mapped to 0, i.e. inactive. This patch slightly improves things in that the buttons are now mapped to 8+. Devices that have both BTN_3 and BTN_SIDE (or a similar pair in that sequence) have both mapped to the same button number though. Devices that have BTN_LEFT, BTN_0, BTN_3 and BTN_SIDE have the last three mapped to 8 (and their followers have double-mappings too). We'll fix that once we actually see devices affected by this. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Only initialize the number of buttons we actually have.Peter Hutterer2009-05-21
| | | | | | | | This takes into account driver-configured button mappings, i.e. if device with one button has this button mapped to 25 through the ButtonMapping option, the X server will think the device has result 25 buttons. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Rename pEvdev->buttons to pEvdev->num_buttons for clarity.Peter Hutterer2009-05-21
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Ensure enough buttons are advertised to pass the button mapping.Peter Hutterer2009-05-21
| | | | | | | | | | | | | | | | Some buttons are mapped to higher button numbers. For example, BTN_0 is posted as button 8 if BTN_LEFT is present. On top of that, the driver-specific button mapping may map the button to something else again. We need to take these mappings into account when counting the number of buttons on the device. Example: A device with BTN_LEFT and BTN_0 and a mapping from 1 -> 7 and 8 -> 2. BTN_LEFT is mapped to 1. 1 is mapped to 7. num_buttons is 7. BTN_0 is mapped to 8. 8 is mapped to 2. num_buttons remains 7. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Up the number of button labels atoms to EVDEV_MAXBUTTONS.Peter Hutterer2009-05-21
| | | | | | | | | | | | Button labels would smash memory if the device had less than 4 buttons and did not advertise a wheel event. In this case the hard-coded wheel button labels would write past the atoms[] boundary. Potential memory smash if a device had a BTN_LEFT and BTN_0, since the latter would map to 8, regardless of the the number of actual buttons (same with BTN_MIDDLE and BTN_1 or BTN_RIGHT and BTN_2). Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Only label axes and buttons if the device has axes or buttons.Peter Hutterer2009-05-21
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Use xf86DisableDevice instead of the DIX' DisableDevice.Peter Hutterer2009-05-16
| | | | | | | DisableDevice has changed API in xi2, xf86DisableDevice hasn't. So let's use this one so we can have one version for master and xi2. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Fix copy-paste error when probing type nameDan Nicholson2009-05-11
| | | | | | | | | | A minor copy and paste error was introduced in 71e9a69e leaving an "if" where an "else if" should be. Without this, any device configured as XI_TOUCHPAD or XI_TABLET will end up having the type_name reset to either XI_TOUCHSCREEN or XI_MOUSE. Signed-off-by: Dan Nicholson <dbn.lists@gmail.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Revamp the whole "has_axes" definition.Peter Hutterer2009-04-29
| | | | | | | Since we can now deal with multiple axes, etc. we might as well print it properly. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Print read errors as X_NONE to avoid mallocs in the server.Peter Hutterer2009-04-16
| | | | | | | | Messages of type X_NONE are just passed down to the log files, everything else gets the (EE) or (II) prefixed. Since this mallocs, we can't use it in the signal handler. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Pre-allocate the reopen timer so we don't allocate during sigio handling.Peter Hutterer2009-04-16
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Trigger read error handling if len is <= 0.Peter Hutterer2009-04-06
| | | | | | | Red Hat Bug 494245 <https://bugzilla.redhat.com/show_bug.cgi?id=494245> Reported-by: David Woodhouse <dwmw2@infradead.org> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Fix wrong reference to axis and button label atom list.Peter Hutterer2009-03-26
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Remove test/ directory.Peter Hutterer2009-03-26
| | | | | | | | This shouldn't really be part of the driver source, it's better to just have it as a separate repository. Code has moved to git://people.freedesktop.org/~whot/testdevices.git Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Fix jumpy touchpads by updating old_vals only when reported by the device.Peter Hutterer2009-03-17
| | | | | | | | | | 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>
* If we have a touchpad, print so, don't claim we're configuring a tablet.Peter Hutterer2009-03-17
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* make sure to clear all axis_map entriesJeremy Jay2009-03-17
| | | | | | | 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>
* Assume touchscreen/touchpad if we have _either_ ABS_PRESSURE or BTN_TOUCHPeter Hutterer2009-03-17
| | | | | | | 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>
* Move keymap/modifier initialization behind the ABI < 5 ifdefs.Peter Hutterer2009-03-16
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Set "rel" when converting absolute touchpad coordinates to relative (#20661)Jeremy Jay2009-03-16
| | | | | | | | | We unset "abs" and convert to relative, but never set "rel" so the events don't get posted. This bit got broken in 43dd2a959243877. X.Org Bug 20661 <http://bugs.freedesktop.org/show_bug.cgi?id=20661> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Restore repeat-filtering for server 1.5 and earlier.Peter Hutterer2009-03-10
| | | | | | | | | 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>
* Bump to 2.2.99.Peter Hutterer2009-03-09
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Define MAX_VALUATORS if it's missing to allow for builds against 1.5.Peter Hutterer2009-03-09
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Check button label before fetching the Atom from the server. (#20524)Peter Hutterer2009-03-09
| | | | | | | | | | 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
* Fix duplicate wheel button up mapping.Peter Hutterer2009-03-06
| | | | | | | Reported by Simon Thum. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Simon Thum <simon.thum@gmx.de>
* evdev 2.1.99.1xf86-input-evdev-2.1.99.1Peter Hutterer2009-03-02
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Add support for button labelling.Peter Hutterer2009-03-02
| | | | | | Buttons 4/5 and 6/7 are hardcoded for wheel buttons. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>