path: root/doc
AgeCommit message (Collapse)AuthorFilesLines
2016-01-11tablet: a tip event can replace an axis eventPeter Hutterer1-1/+2
When we're only dealing with BTN_TOUCH we can make the tip event independent of the axis event. Now that we handle pressure thresholds to trigger tip state this does not work, we'd have to send an axis event with the new pressure and then a tip event. Since the pressure triggers the tip event this seems disconnected. Make the tip event officially capable of carrying axes. A caller can then decide how to forward this to the next layer. Signed-off-by: Peter Hutterer <> Acked-by: Jason Gerecke <>
2016-01-11tablet: add pressure threshold handlingPeter Hutterer1-0/+16
On tablets with ABS_PRESSURE use a pressure value to determine tip state, not BTN_TOUCH. This enables us (down the road) to have device-specific pressure thresholds. For now we use a 5% default for all devices. The threshold is a range, if we go past the upper range we initiate the tip down, if we go below the lower range we release the tip again. This affects two current tests: * Once we have pressure offsets and pressure thresholds, we're biased towards pressure. So we can only check that distance is zero when there is a pressure value, not the other way round. * When the pressure threshold is exceeded on proximity in with a nonzero distance, we can only warn and handle the pressure as normal. Since this is a niche case anyway anything fancier is likely unnecessary. Signed-off-by: Peter Hutterer <> Acked-by: Jason Gerecke <>
2016-01-05doc: add missing tip event to the allowed set of eventsPeter Hutterer1-2/+2
We can call the various has_changed() functions on a tip event. Signed-off-by: Peter Hutterer <>
2016-01-05doc: fix and improve the tablet documentationPeter Hutterer1-49/+47
Signed-off-by: Peter Hutterer <>
2016-01-05doc: improve absolute axis documentation a bitPeter Hutterer1-6/+12
Signed-off-by: Peter Hutterer <>
2015-12-23tablet: add libinput_tablet_tool_is_unique()Peter Hutterer1-1/+3
For checking if a tablet tool can be uniquely identified by libinput. In practice this means checking for a nonzero serial number, but let's not restrict ourselves to allowing just that. Signed-off-by: Peter Hutterer <> Reviewed-by: Hans de Goede <>
2015-12-15doc: a couple of tablet documentation fixesPeter Hutterer1-0/+22
Signed-off-by: Peter Hutterer <>
2015-12-15tablet: support tool-specific pressure offsetsPeter Hutterer1-0/+29
If a tool wears out, it may have a pre-loaded pressure offset. In that case, even when the tool is not physically in contact with the tablet surface it will send pressure events. Use automatic pressure offset detection, similar to what the X.Org wacom driver does. On proximity-in, check the pressure and if the distance is above 50% of the range and the pressure is nonzero but below 20% of the range, use that value as pressure offset. Signed-off-by: Peter Hutterer <> Reviewed-by: Ping Cheng <>
2015-12-14doc: add missing tablet-axes.svgPeter Hutterer1-0/+563
Missing from 4677c48ab66c90cda2b66f57061401482f6d9f09 Signed-off-by: Peter Hutterer <>
2015-12-14Merge branch 'master' into tablet-supportPeter Hutterer1-0/+18
2015-12-14touchpad: add a special quirk for the Lenovo x220 with updated firmwarePeter Hutterer1-0/+18
If an x220 is updated to the touchpad firmware version 8.1, the touchpad suffers from the same issues as the x230 and needs custom acceleration code. Unfortunately we cannot detect this otherwise, so it is left to the user as a custom hwdb setting. Signed-off-by: Peter Hutterer <> Reviewed-by: Hans de Goede <>
2015-12-02doc: fix double full stopPeter Hutterer1-2/+2
Signed-off-by: Peter Hutterer <>
2015-11-24Merge branch 'master' into tablet-supportPeter Hutterer3-3/+6
2015-11-18doc: tablet documentation updatesPeter Hutterer2-3/+248
Signed-off-by: Peter Hutterer <> Reviewed-by: Hans de Goede <>
2015-11-18tablet: rename LIBINPUT_EVENT_TABLET to LIBINPUT_EVENT_TABLET_TOOLPeter Hutterer1-1/+1
Signed-off-by: Peter Hutterer <> Reviewed-by: Hans de Goede <>
2015-11-16doc: add a link to the dwt config call to the docPeter Hutterer1-1/+4
And link the software buttons sentence to the t440 page. Signed-off-by: Peter Hutterer <>
2015-11-09Documentation fixes to arrows in svg filesTomi Leppänen2-2/+2
There were two files (doc/svg/{edge,twofinger}-scrolling.svg) that had both arrow heads pointing to wrong direction. Those arrow heads used markers but their ids were defined wrong and therefore they displayed weirdly. On Firefox the arrow head that should have pointed to left pointed actually to right. This commit fixes that problem by defining the marker ids correctly. I tested on Firefox 40.0.3 that the arrow heads are now displayed correctly. Reviewed-by: Bryce Harrington <> Tested-by: Bryce Harrington <> Signed-off-by: Peter Hutterer <>
2015-10-21Merge branch 'master' into tablet-supportPeter Hutterer2-731/+757
2015-09-19touchpad: fix the number of button clicks in multitapPeter Hutterer1-759/+706
tap-tap-down-move should emit 1 click + press, not 2 clicks + press Signed-off-by: Peter Hutterer <> Reviewed-by: Hans de Goede <>
2015-09-11Add an API to change pointer acceleration profilesPeter Hutterer1-0/+17
The quartett of new config functions is: libinput_device_config_accel_get_profiles libinput_device_config_accel_get_profile libinput_device_config_accel_set_profile libinput_device_config_accel_get_default_profile The profile defines how the pointer acceleration works, from a very high-level perspective. Two profiles are on offer, "adaptive", the standard one we have used so far and "flat" which is a simple multiplier of input deltas and provides 1:1 mapping of device movement vs pointer movement. The speed setting is on top of the profile, a speed of 0 (default) is the equivalent to "no pointer acceleration". This is popular among gamers and users of switchable-dpi mice. The flat profile unnormalizes the deltas, i.e. you get what the device does and any device below 800dpi will feel excruciatingly slow. The speed range [-1, 1] maps into 0-200% of the speed. At 200%, a delta of 1 is translated into a 2 pixel movement, anything higher makes it rather pointless. The flat profile is currently available for all pointer devices but touchpads. Signed-off-by: Peter Hutterer <> Reviewed-by: Hans de Goede <>
2015-09-07touchpad: don't tap for 2fg down, followed by a single finger upPeter Hutterer1-96/+158
The following sequence currently generates a right-button event: finger 1 down finger 2 down finger 1 up finger 2 held down This is easily triggered with short scroll events. There are two issues here: first is that the tapping code elsewhere treats any tap with a second finger down as a left-button tap, not a right button one. So if anything, we should generate a left button click here, not a right button click. Arguably, generating a button click here is wrong though, it's not a very well defined sequence and relatively difficult to trigger intentionally. So the best solution here is to simply ignore the release event and move straight back to state HOLD - unless the second finger is released within the timeout. If the finger is set down again during the timeout, we move straight to TOUCH_2_HOLD - this could eventually be interpreted as a tap, but not for now. Signed-off-by: Peter Hutterer <> Reviewed-by: Hans de Goede <>
2015-08-26Merge branch 'master' into tablet-supportPeter Hutterer18-17/+14805
2015-08-24doc: add a diagram for evemu and note that libinput doesn't recordingsPeter Hutterer3-0/+26
Signed-off-by: Peter Hutterer <>
2015-08-22doc: fix more typosJason Gerecke9-12/+12
Signed-off-by: Jason Gerecke <> Signed-off-by: Peter Hutterer <>
2015-08-21doc: ellipse instead of ellipsisAndreas Pokorny1-2/+2
Signed-off-by: Andreas Pokorny <> Signed-off-by: Peter Hutterer <>
2015-08-17doc: fix typosPeter Hutterer1-3/+3
Signed-off-by: Peter Hutterer <>
2015-08-12doc: add pointer acceleration documentationPeter Hutterer7-0/+14762
Signed-off-by: Peter Hutterer <> Reviewed-by: Jonas Ådahl <>
2015-08-04Merge branch 'master' into tablet-supportPeter Hutterer5-1/+261
2015-08-03doc: add a page about touchpadsPeter Hutterer2-1/+164
Signed-off-by: Peter Hutterer <>
2015-07-30doc: add a page on how to report bugsPeter Hutterer3-0/+90
Signed-off-by: Peter Hutterer <>
2015-07-27touchpad: disable 2fg scrolling on Synaptics semi-mt touchpadsPeter Hutterer1-0/+7
These touchpads have a terrible resolution when two fingers are down, causing scrolling to jump around a lot. That then turns into bug reports that we can't do much about, the data is simply garbage. Signed-off-by: Peter Hutterer <> Reviewed-by: Hans de Goede <>
2015-07-24Merge branch 'master' into tablet-supportPeter Hutterer11-2314/+8352
2015-07-24touchpad: only try thumb detection in the lowest 15/8mmPeter Hutterer3-0/+145
That's the most likely area it will be resting in, if it's sitting anywhere above that it's likely part of an interaction. A thumb in the lowest 15mm needs to trigger the pressure threshold before it's labelled a thumb. A thumb in the lowest 8mm is considered a thumb if it remains there for 300ms. Regardless of the pressure, since we can't reliably get pressure here. If a thumb moves out of the area, or starts outside of that area it is never a thumb. If edge scrolling is enabled, the 8mm threshold is ineffective since we'll have normal interaction in that zone for horizontal scrolling. The thumb tests now require all touchpads to be switched to clickfinger, if we test for thumb detection on the bottom of the pad we won't get expected motion events due to the software button area. Signed-off-by: Peter Hutterer <> Reviewed-by: Hans de Goede <>
2015-07-16doc: use bootstrap for doxygen stylingPeter Hutterer7-3/+8069
Makes the documentation less of an eyesore. Header/footer from:, Apache-licensed Bootstrap style from:, MIT licensed Signed-off-by: Peter Hutterer <>
2015-07-16doc: strip doxygen file from all default valuesPeter Hutterer1-2311/+0
Only keep those that we changed locally, which makes it much easier to detect what we're actually changing. Signed-off-by: Peter Hutterer <>
2015-07-16doc: add a page about the available toolsPeter Hutterer2-0/+104
Signed-off-by: Peter Hutterer <>
2015-07-16doc: group the "related pages" by general topicPeter Hutterer2-1/+35
Signed-off-by: Peter Hutterer <>
2015-07-14Merge branch 'master' into tablet-supportPeter Hutterer3-9/+29
2015-07-14evdev: use LIBINPUT_ATTR_SIZE_HINT for resolutionsPeter Hutterer1-5/+9
Touchpads, notably Elantech, ALPS and bcm5974 don't provide x/y resolution until recent generations. Add a new property, LIBINPUT_ATTR_SIZE_HINT, that provides size information to libinput. Note that this property *does not* override true resolution values, it is only used when the resolution is missing. It is used merely as an approximate size hint. If the resolution for a specific device is known it should be added to the udev hwdb so it can be set globally. See the bcm5974 entries here: Signed-off-by: Peter Hutterer <> Reviewed-by: Hans de Goede <>
2015-07-09touchpad: work thumb detection into the tap state machinePeter Hutterer1-0/+18
Most thumbs are detected a few events into the sequence. Work this into parts of the tapping state machine. Only the most common use-case is handled here - if the first finger ends up being marked as a thumb, we return to the idle state and ignore that touch sequence. At any other state, we handle thumbs like any other finger. Signed-off-by: Peter Hutterer <> Reviewed-by: Hans de Goede <>
2015-07-09touchpad: allow edge scrolling on clickpadsPeter Hutterer1-4/+2
Signed-off-by: Peter Hutterer <> Reviewed-by: Hans de Goede <>
2015-07-08Merge branch 'master' into tablet-supportPeter Hutterer7-0/+1668
Signed-off-by: Peter Hutterer <>
2015-07-07doc: add "mouse is too fast" to the FAQPeter Hutterer2-0/+9
And reference libevdev's mouse-dpi-tool while we're at it. Signed-off-by: Peter Hutterer <>
2015-07-06doc: add documentation for touchpad gesturesPeter Hutterer5-0/+1659
Signed-off-by: Peter Hutterer <>
2015-07-06Merge branch 'master' into tablet-supportPeter Hutterer1-4/+27
2015-07-02Drop motion normalization of unaccelerated deltasPeter Hutterer1-4/+27
This simply doesn't work for low-dpi mice. Normalizing a 400dpi mouse to a 1000dpi mouse forces a minimum movement of 2.5 units and the resulting pixel jumps. It is impossible for the caller to detect whether the jump was caused by a single motion or multiple motion events. This is technically an API break, but not really. The accelerated data was already relatively meaningless, even if normalized as the data did not correspond predictably to any input motion (unless you know the implementation acceleration function in the caller). So we can drop the mention from there without expecting any ill effects in the caller. The unaccelerated data was useless for low-dpi mice and could only be used to measure the physical distance of the mouse movement - something not used in any caller we're aware of (if needed, we can add that functionality as a separate call). Dropping motion normalization for unaccelerated deltas also restores true dpi capabilities to users of that API, mostly games that want to make use of high-dpi mice. This is a simplified patch, the normalization is still in place for most of libinput, it merely carries the original coordinates in the event itself. In the case of touchpads, the coordinates are unnormalized into the x-axis coordinate space as per the documentation. Signed-off-by: Peter Hutterer <> Reviewed-by: Hans de Goede <>
2015-06-29Merge branch 'master' into tablet-supportPeter Hutterer2-349/+398
2015-06-23touchpad: hook up drag lock configurationPeter Hutterer1-343/+385
Signed-off-by: Peter Hutterer <> Reviewed-by: Hans de Goede <>
2015-06-23Add configuration interface for tap drag-lockPeter Hutterer1-6/+13
In some applications, notably Inkscape, where it is common to frequently drag objects a short distance the default to drag-lock always-on is frustrating for users. Make it configurable, with the current default to "on". New API: libinput_device_config_tap_set_drag_lock_enabled libinput_device_config_tap_get_drag_lock_enabled libinput_device_config_tap_get_default_drag_lock_enabled Any device capable of tapping is capable of drag lock, there is no explicit availability check for drag lock. Configuration is independent, drag lock may be enabled when tapping is disabled. In the tests, enable/disable drag-lock explicitly where the tests depend on it. Signed-off-by: Peter Hutterer <> Reviewed-by: Hans de Goede <>
2015-06-16Merge branch 'master' into tablet-supportPeter Hutterer1-2/+18