summaryrefslogtreecommitdiff
path: root/doc
Commit message (Collapse)AuthorAgeFilesLines
* touchpad: Add edge-scrolling supportHans de Goede2014-11-251-0/+262
| | | | | | | | | | | | | | Add edge-scrolling support for non multi-touch touchpads as well as for users who prefer edge-scrolling (as long as they don't have a clickpad). Note the percentage to use of the width / height as scroll-edge differs from one manufacturer to the next, the various per model percentages were taken from xf86-input-synaptics. BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=85635 Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* doc: update for latest doxygenPeter Hutterer2014-10-301-939/+1418
| | | | | | doxygen -u, no manual interference. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* touchpad: Route top softbuttons through the trackstick if we've oneHans de Goede2014-09-191-87/+113
| | | | | | | | | | | | | | | | The touchpad top softbuttons such as found on the Lenove T440 are intended for use with the trackstick. Route their events through the trackstick, so that they can be used for e.g. middle button scrolling with the trackstick. Note that sending top button events to a disabled trackpoint makes no sense (and will mess up internal state). Likely a user with a disabled trackpoint will still expect the top buttons to work, so rather than not sending events in that case, simply treat a suspendeded trackpoint as not being there, and send the events directly from the touchpad device. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* touchpad: Only break out of tap FSM for clickpad button pressesJonas Ådahl2014-09-021-567/+567
| | | | | | | | | | | | | | | | | | | | | | It should be possible to initiate a drag by tapping-drag, but continue it by pressing a physical button continuing to drag by subsequent finger motions. As the generic evdev layer helps us ignore multiple button presses we can have the tap machine run completely separate from and uneffected by regular physical button presses, making the tap FSM much simpler than adding new states for handling button presse life times from outside of the tap state machine. A touchpad test is updated to test click while tapping instead of tap FSM break out. The updated test is re-added but only for clickpads only. The tap FSM svg is updated to say "clickpad button press" instead of "phys button press". Signed-off-by: Jonas Ådahl <jadahl@gmail.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
* touchpad: drop the BOTTOM_TO_AREA/BOTTOM_NEW statesPeter Hutterer2014-07-041-530/+358
| | | | | | | | | | The original intention of this state was to prevent an accidental move out of the bottom software button to start moving the cursor. That ends up actually preventing a number of normal moves that start low enough. Simply drop the state. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
* touchpad: disable tapping for fingers exceeding the timeout/motion thresholdPeter Hutterer2014-07-021-771/+756
| | | | | | | | | | | | | | | | | | | | | | The current code triggers multi-finger tapping even if the finger released was previously held on the touchpad for a while. For an event sequence of: 1. first finger down 2. first finger move past threshold/wait past timeout 3. second finger down 4. first finger up The second finger initiates the two-finger tap state, but the button event is sent when the first finger releases - despite that finger not meeting the usual tap constraints. This sequence can happen whenever a user swaps fingers. Add the finger state to the actual touchpoints and update them whenever the constrains are broken. Then, discard button events if the respective touch did not meet the conditions. http://bugs.freedesktop.org/76760 Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
* udev: split libinput_udev context init into two functionsPeter Hutterer2014-06-231-1/+2
| | | | | | | | | | | | | | | | This is preparation work for context-specific log handlers. Callers are now encouraged to first initialize the context with libinput_udev_create_context() and then set the seat for this context with libinput_udev_assign_seat(). In the upcoming patch to support context-specific log handlers this enables a caller to set the log handler for a context before any devices are initialized. Otherwise, a log message generated by a new device may pass a libinput context that the caller is not yet aware of. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
* doc: ignore LIBINPUT_ATTRIBUTE_PRINTF in doxygenPeter Hutterer2014-06-131-3/+3
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* touchpad: Add support for top softbutton areaHans de Goede2014-06-021-234/+376
| | | | | | | | | | | | | | | | | | | | | Add support for the top softbutton area found on some laptops. For details of how this works, see the updated doc/touchpad-softbutton-state-machine.svg diagram. Basically this mirrors the state-machine for the bottom softbutton area, with one exception, if a finger stays at least inner timeout milliseconds in the top button area and then moves out of it, it will be ignored rather then become the pointer. This is done so that people using the top buttons together with a trackstick and accidentally move their finger out of the upper area don't get spurious pointer movements from the finger on the trackpad. This behavior is indentical to xf86-input-synaptics, which also ignores movements from touches which start in the top button area. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* touchpad: softbuttons: Deal with a click arriving before any touchesHans de Goede2014-05-221-103/+320
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is possible for a click to get reported before any related touch events get reported, here is the relevant part of an evemu-record session on a T440s: E: 3.985585 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- E: 3.997419 0003 0039 -001 # EV_ABS / ABS_MT_TRACKING_ID -1 E: 3.997419 0001 014a 0000 # EV_KEY / BTN_TOUCH 0 E: 3.997419 0003 0018 0000 # EV_ABS / ABS_PRESSURE 0 E: 3.997419 0001 0145 0000 # EV_KEY / BTN_TOOL_FINGER 0 E: 3.997419 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- E: 5.117881 0001 0110 0001 # EV_KEY / BTN_LEFT 1 E: 5.117881 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- E: 5.133422 0003 0039 0187 # EV_ABS / ABS_MT_TRACKING_ID 187 E: 5.133422 0003 0035 3098 # EV_ABS / ABS_MT_POSITION_X 3098 E: 5.133422 0003 0036 3282 # EV_ABS / ABS_MT_POSITION_Y 3282 E: 5.133422 0003 003a 0046 # EV_ABS / ABS_MT_PRESSURE 46 E: 5.133422 0001 014a 0001 # EV_KEY / BTN_TOUCH 1 E: 5.133422 0003 0000 3102 # EV_ABS / ABS_X 3102 E: 5.133422 0003 0001 3282 # EV_ABS / ABS_Y 3282 E: 5.133422 0003 0018 0046 # EV_ABS / ABS_PRESSURE 46 E: 5.133422 0001 0145 0001 # EV_KEY / BTN_TOOL_FINGER 1 E: 5.133422 0000 0000 0000 # ------------ SYN_REPORT (0) ---------- Notice the BTN_LEFT event all by itself! To deal with this if a physical click registers before we get any touches, wait for the first touch to resolve the click. Also see the new activity diagram for the tp_post_softbutton_buttons method which has been added to doc/touchpad-softbutton-state-machine.svg Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
* touchpad: Add clickpad-style software buttonsPeter Hutterer2014-05-222-1/+174
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Almost all non Apple touchpads have visible markings for software button areas, so limit clickfinger behavior to Apple clickpads, and implement software button areas for others. This is a slightly fancier implementation than the simplest model and ported over from libtouchpad. It implements a state machine for the software buttons with left and right buttons currently implemented. Buttons are oriented left-to-right, in a horizontal bar. No random button placement allowed. In general, the procedure is: - if a finger sets down in the left button area, a click is a left click - if a finger sets down in the right button area, a click is a right click - if a finger leaves the button area, a click is a left click - if a finger starts outside the button area, a click is a left click Two timeouts are used to handle buttons more smoothly: - if a finger sets down in a button area but "immediately" moves over to a different area, that area takes effect on a click. - if a finger leaves a button area and "immediately" clicks or moves back into the area, the button still takes effect on a click. - if a finger changes between areas and stays there for a timeout, that area takes effect on a click. Note the button area states are named BOTTOM_foo to make it easier to later add support for a top button area such as can be found on the Thinkpad [2-5]40 series. Co-authored-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Jonas Ådahl <jadahl@gmail.com> Reviewed-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
* doc: add state machine SVG to EXTRA_DISTPeter Hutterer2014-05-221-1/+3
| | | | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Hans de Goede <hdegoede@redhat.com>
* touchpad: add support for multi-finger tappingPeter Hutterer2014-03-241-0/+771
| | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* doc: extract static members as wellPeter Hutterer2013-12-211-1/+1
| | | | | | | We only run doxygen over the public headers, so if we have a static function in those make sure they show up. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* doc: hook up doxygen to generate the public API documentationPeter Hutterer2013-12-072-0/+1879
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>