summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* wacom 0.40.0xf86-input-wacom-0.40.0Jason Gerecke2021-02-031-1/+1
| | | | Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
* Recognize pad devices which only have softkeys (e.g. Cintiq Pro 32)Jason Gerecke2021-02-031-2/+2
| | | | | | | | | | | | | | | | | | | | | Devices like the Cintiq Pro 32 have pad devices that have no ExpressKeys. This prevents them from being recognized as a pad by the driver. When the device is connected, an `Invalid type 'pad' for this device` message would be logged. This has not been an issue in the past since there is nothing for the device to do without any ExpressKeys. Now that the driver is capable of forwarding the various softkeys as fixed-function keyboard events, however, it would be good to ensure that these kinds of devices are detected properly. Recognizing the device as a pad only requires us to expand on the list of tools that are known identifiers. Since we want softkey-only pads to be recognized, the two softkeys to the list. One or both of the keys should be present on devices like the Cintiq Pro 32, allowing the pad to be recognized as such. Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
* Support the keycodes sent by the hardware buttonsPeter Hutterer2021-02-023-1/+67
| | | | | | | | | Forward the pad keys as keycodes KEY_PROG1-4. The evdev code has the right meaning, but we cannot route those keys (>255) so we just map them to KEY_PROG1-4 instead. This way we can in the future add a xkeyboard-config option to assign something to those keys. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Stop pointer movement when panscrolling in relative modeRussell Haley2021-02-011-1/+1
| | | | | | | | | | Always stop pointer movement when a panscroll button is pressed in relative mode, instead of only when the pen is down. This keeps the pointer from "walking" when the user lifts the pen and scrolls repeatedly. Fixes: https://github.com/linuxwacom/xf86-input-wacom/issues/139 Signed-off-by: Russell Haley <yumpusamongus@gmail.com>
* Better explanation of the "ToolSerials" optionvintagepc2021-02-011-3/+7
| | | | For https://github.com/linuxwacom/xf86-input-wacom/issues/128
* Remove Travis integrationJason Gerecke2021-02-011-64/+0
| | | | | | | | | Now that we've integrated with Github Actions, Travis is no longer necessary. Notably this does mean the loss of ppc64le testing, but it isn't a high priority target, and we will have lost that testing anyway once our free Travis credits run out... Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
* Add workflow for automated testing via Github ActionsJason Gerecke2021-02-012-0/+94
| | | | | | | | | | | | | | | We've been using Travis for our automated tests, but that service is becoming more difficult to use (open source projects have to periodically request free credits to keep running). Github itself can be used as a replacement by using its "Actions" infrastructure to execute various defined workflows. This commit ports the Travis script into Github syntax. Most everything was translated without issue, but support for the ppc64le architecture is notably missing. This is not a critical target for us, however, so we ignore it for the time being. Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
* gitignore: Add a few more entriesJason Gerecke2021-01-151-0/+5
| | | | | | | Ignore the announce and sig files generated as part of the release process. Also ignore the version info generated as part of the compile process. Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
* tools: update rules to handle bind/unbind eventsJason Gerecke2020-12-031-1/+1
| | | | | | | | | | | | Summary: we expect add, change or remove but kernel 4.12 added bind and unbind. These events were previously discarded by udevd. Our rules should handle any event *but* remove, so update as suggested in the announce email linked below. For a longer explanation, see the system 247rc2 announcement https://lists.freedesktop.org/archives/systemd-devel/2020-November/045570.html Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
* Increase size of event queue to 128Jason Gerecke2020-12-011-1/+1
| | | | | | | | | | | | | | | The size of the event queue defines how many kernel events we can keep track of before seeing a SYN_REPORT. If we are ever asked to handle more than this limit, data is dropped with unpredictable consequences. Our previous queue size of 32 was usually sufficient but could still be bumped into in edge-cases. Updating 8 or more touch contacts at the same time could sometimes cause the queue to run out of space, for example. This commit bumps the queue size up to 128. This should be more than enough for all current devices (some of which can track up to 16 contacts). Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
* Remove duplicate MAX_USB_EVENTS definitionJason Gerecke2020-12-011-1/+0
| | | | | | | A definition of this macro already exists in wcmUSB.c and is not used in any other file. There's no need for this duplicate to exist. Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
* travis CI: order ppc64le after amd64Peter Hutterer2020-10-271-1/+1
| | | | | | | | | | | | https://docs.travis-ci.com/user/multi-cpu-architectures/ says that "explicitly included builds inherit the first value in an array" and the example there matches our configuration. Moving ppc64le to after amd64 means the coverity job we have is now (again) run on amd64 only, fixing the current test case failures - Coverity doesn't support ppc64le. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Adding ppc64le architecture to support on travis-cikishorkunal-raj2020-09-291-0/+4
|
* Merge pull request #137 from Pinglinux/for-cintiq-16-2Jason Gerecke2020-08-031-0/+4
|\ | | | | | | | | Support new Cintiqs for older kernels Reviewed-by: Jason Gerecke <jason.gerecke@wacom.com>
| * Support new Cintiqs for older kernelsPing Cheng2020-07-291-0/+4
|/ | | | | | Kernels older than 2.6.38 do not report INPUT_PROP_DIRECT Signed-off-by: Ping Cheng <ping.cheng@wacom.com>
* Add new "Wacom One Pen Display 13" PIDAaron Armstrong Skomra2020-01-082-0/+4
| | | | Signed-off-by: Aaron Armstrong Skomra <aaron.skomra@wacom.com>
* wacom 0.39.0xf86-input-wacom-0.39.0Jason Gerecke2019-12-201-1/+1
| | | | Signed-off-by: Jason Gerecke <killertofu@gmail.com>
* Merge pull request #96 from jigpu/add-new-msp-pidJason Gerecke2019-12-162-0/+4
|\ | | | | | | | | Recognize new MobileStudio Pro PID Reviewed-by: Aaron Armstrong Skomra <aaron.skomra@wacom.com>
| * Recognize new MobileStudio Pro PIDJason Gerecke2019-12-162-0/+4
| | | | | | | | | | | | | | A new PID is in use for repaired MobileStudio Pro devices. Add it to the various device properties lists. Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
* | Merge pull request #92 from jigpu/fix-74Jason Gerecke2019-11-042-12/+53
|\ \ | |/ |/| Ignore ABS_MISC as a source of device type information for AES pens
| * Ignore ABS_MISC as a source of device type information for AES pensJason Gerecke2019-11-042-12/+53
|/ | | | | | | | | | | | | | | | | | | | | | | AES sensors use protocol 5 since they send ABS_MISC events which contain information about the tool type in use. The tool type information sent by AES sensors does not match that used by EMR sensors, however. In particular, it is not possible to extract stylus/eraser/puck information from the ID. The driver would normally never try to extract this information, but the problem was highlighed when a bug in the kernel would cause the device ID to be reported twice: once in a packet alongside a BTN_TOOL_* event (fine) and a second time in a packet without such an event (causing the driver to try to figure it out from the ID instead). This commit adds detection for AES pen IDs and does not try to extract such information if an AES pen is in use. We assume that any protocol 5 device which predates the use of Intuos5-era technology uses the legacy IDs. Ref: https://github.com/linuxwacom/input-wacom/issues/134 Fixes: https://github.com/linuxwacom/xf86-input-wacom/issues/74 Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
* Merge pull request #90 from jigpu/fix-86Jason Gerecke2019-10-231-1/+1
|\ | | | | | | | | tools: Fix potential buffer overflow when reading from serial tablet Reviewed-by: Aaron Armstrong Skomra <aaron.skomra@wacom.com>
| * tools: Fix potential buffer overflow when reading from serial tabletJason Gerecke2019-10-231-1/+1
|/ | | | | | | | | | | | | | | | | The read_data() function has a "min_len" number of bytes to read to ensure that a complete data structure is read, regardless of garbage that may be on the line. When garbage is present, however, it can potentially overflow the buffer. The function already has code to memmove the good data over garbage and perform re-reads until "min_len" bytes of good data are available. All we need to do to avoid the buffer overflow is ensure that the maximum number of bytes we read() in one call is no more than the number of bytes free at the end of the buffer. Ref: https://github.com/linuxwacom/xf86-input-wacom/issues/86 Fixes: 3546d8ab1b ("tools: add isdv4-serial-debugger test program") Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
* wacom 0.38.0xf86-input-wacom-0.38.0Jason Gerecke2019-10-141-1/+1
| | | | Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
* wacom 0.37.99.1xf86-input-wacom-0.37.99.1Jason Gerecke2019-10-091-1/+1
| | | | Signed-off-by: Jason Gerecke <killertofu@gmail.com>
* Merge pull request #84 from jigpu/gesture-modsJason Gerecke2019-10-093-44/+31
|\ | | | | | | | | Gesture mode default change Reviewed-by: Aaron Armstrong Skomra <aaron.skomra@wacom.com>
| * Handle multitouch mode up at the very start wcmGestureFilterJason Gerecke2019-09-191-18/+24
| | | | | | | | | | | | | | | | | | | | Moving the code which handles multitouch mode to the start of the function both makes the code more obvious and ensures that we don't accidentally recognize an unwanted gesture. Doing so much partial-processing before eventually hitting a "goto ret" and handling multitouch mode was tricky to understand and hard to verify. Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
| * Perform a few cleanups in wcmTouchFilter.cJason Gerecke2019-09-191-20/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Removes the #ifdef compile guards around the code that checks if gestures are disabled prior to doing multitouch processing. They aren't strictly necessary, and actually prevent "gesture off" from having an effect on older X servers. Also removes a vestigial check in wcmFingerMultitouch. The original version of the function would only be called once two or more fingers were down. This gave wcmSingleFingerPress a chance to send a left-click event when just a single finger came in contact with the touchscreen. Later it was realized that the MT protocol requires us to send even *single* touch events for touchscreens through its API, so the code was changed to *always* call wcmFingerMultitouch when a touchscreen was in use. This had the side-effect of never calling wcmSingleFingerPress, rendering this check useless. Also removes some unnecessary checks from the zoom/scroll processing that are either already handled by pre-conditions above or have no real effect. Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
| * Change default gesture mode: touchpad=on, touchscreen=offJason Gerecke2019-09-192-6/+2
|/ | | | | | | | | | | | | | | | A large number of users run the GNOME desktop which has its own gesture engine that performs actions on touchscreens. These gestures are much better than the ones we provide, so lets disable our engine by default for touchscreens. Note that GNOME doesn't do anything with touchpad gestures, so we leave them enabled by default. Note that this change will effectively cause a feature regression for users of other environments that do *not* have their own gesture engines (Cinnamon, KDE, MATE, XFCE, etc.). Users will want to add an xorg.conf.d snippet with `Option "Gesture" "on"` to bring back the functionality. Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
* Merge pull request #78 from Pinglinux/masterJason Gerecke2019-09-122-1/+9
|\ | | | | | | | | Support new MobileStudio Pro for older kernels Reviewed-by: Jason Gerecke <jason.gerecke@wacom.com>
| * Support new MobileStudio Pro for older kernelsPing Cheng2019-09-102-1/+9
|/ | | | | | Support new MobileStudio Pro 13 and 16 Signed-off-by: Ping Cheng <ping.cheng@wacom.com>
* Merge pull request #77 from jigpu/issue-43Jason Gerecke2019-09-093-67/+65
|\ | | | | | | | | Improve gesture recognition and usability Reviewed-by: Aaron Armstrong Skomra <aaron.skomra@wacom.com>
| * Trigger scroll and zoom gestures immediately after they are detectedJason Gerecke2019-09-043-14/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The amount you have to move your fingers to start a gesture is quite a larger than the amount you have to move them to continue to gesture. This makes the smooth use of gestures difficult since it can be a little unpredictable exactly when they finally kick in. By triggering the zoom and scroll gestures at the same distance as it takes to continue them, the gestures feel much more smooth to execute. This commit removes the various delays that prevent gestures from being executed the moment the configured scroll or zoom distance is achieved. Ref: https://github.com/linuxwacom/xf86-input-wacom/issues/43 Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
| * Revert "Reset wcmGestureState to current device state upon gesture start"Jason Gerecke2019-09-041-20/+3
| | | | | | | | | | | | | | | | | | | | This reverts commit 8f85692a19bd34dae77071a296a14c01a491cf4a. In the next commit we will be starting gestures immediately on detection, eliminating the need for this commit. (Indeed, its existance actually is an additional delay of 1 event distance to immediate execution) Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
| * Do not start scroll gesture if fingers are moving opposite directionsJason Gerecke2019-09-041-1/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The driver sometimes has difficulty distinguishing scroll and zoom gestures. This is caused by a combination of the zoom spread distance being larger than the scroll distance and the "pointsInLine" checks being blind to fingers moving in opposite directions. Zoom gestures that have fingers moving in opposite directions along the same axis are especially likely to be misinterpreted as a scroll. To improve recognition accuracy, this commit adds a function that verifies the two fingers are actually moving in the same direction. As long as the motion vectors for the two fingers are more than 90 degrees apart, scrolling will be inhibited. The allowed difference could be significantly reduced if necessary, but this seems to do the trick for me. Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
| * Minor cleanups for wcmFingerScroll and wcmFingerZoomJason Gerecke2019-09-041-9/+12
| | | | | | | | | | | | Make some especially-long lines a little easier to read. Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
| * Use wcmScrollDistance as scroll threshold; recognize scrolling more consistentlyJason Gerecke2019-09-041-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The wcmFingerScroll function runs a series of checks when trying to recognize a scroll gesture. The first check is that the fingers have not spread apart (or come closer together) by more than a specified distance (wcmMaxScrollFingerSpread). The next check is that both fingers are moving in the same direction. This second check is performed by 'pointsInLine', which returns 'TRUE' if the contact has moved in the expected direction by some minimum distance. This minimum distance was also set to wcmMaxScrollFingerSpread, despite it not really being a measure of finger spreading. This commit changes the minimum distance to be wcmScrollDistance: the distance at which a scroll event would normally be emitted. This will cause scrolling recognition to feel consisitent with the rest of the scrolling experience, eliminating the lag between starting a scroll gesture and the driver recognizing it. As long as you move your fingers one scroll distance, scrolling will begin. Users who have a very small scroll distance may find this change makes it harder to trigger a pinch zoom since the fingers must move apart or together by at least wcmMaxScrollFingerSpread before moving up/down/left/right by the scroll distance. Ref: https://github.com/linuxwacom/xf86-input-wacom/issues/43 Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
| * Overhaul calculation of default scroll, zoom, and spread distancesJason Gerecke2019-09-041-11/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The default values for zoom, scroll, and spread distances were originally fine-tuned for use with a 3rd-gen Bamboo small tablet (e.g. CTH-470). The code tries to scale these values to work with other sensors, but there are a couple of problems with the actual logic: 1. The scaling is done based on the logical size of the tablet. This is problematic for some generations of tablet (including the 3rd-gen Bamboos) which use sensors with an identical logical size despite different physical size. This means that larger tablets in these generations require larger gestures to accomplish the same task. 2. The scale factor for the scroll distance is calculated with respect to the X axis, even though it is far more common to scroll vertically than horizontally. For devices with a different resolution in the X and Y axes, this means that calculated default won't be consistent with devices that have the same resolution in both the X and Y axes. This patch makes several modifications to simultaneously address all three of the issues. We replace the logical Bamboo-referenced numbers with equivalent millimeters, calculate the logical distances based on the kernel-reported resolution (using the resolution of the Bamboo if not available), and specifically scale scroll distances with respect to the Y axis. Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
| * Prevent spurious right-clicks at the end of very short scroll and zoom gesturesJason Gerecke2019-09-041-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you perform a two-finger scroll/zoom gesture that takes less than wcmTapTime milliseconds to complete and has the second touch going up before the first, the wcmFingerTapToClick function may trigger a right- click event as you complete the scroll/zoom. The reason for this is that we call wcmFingerTapToClick for any non-scroll/zoom gesture state. This isn't technically correct: we should really only be calling the function when in the LAG state (i.e., while waiting for a two-finger gesture to occur). The logic which moves single-finger non-DRAG states into LAG or NONE modes can conflict with simply checking for the LAG state before calling wcmFingerTapToClick because very short drags can also be less than WACOM_GESTURE_LAG_TIME, which will move the ZOOM and SCROLL states to (single-finger) LAG mode and trigger the right-click gesture anyway. To ensure this doesn't happen, we add a check for single-finger SCROLL and ZOOM states just before this block and have it move the mode to CANCEL which will only be reset once both fingers have gone up. Fixes: 68daad26c11d ("improve initial 2 finger behavior") Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
| * Do not wait wcmTapTime to enter scroll or zoom modeJason Gerecke2019-09-041-8/+3
|/ | | | | | | | | | | | | | | | | Commit 3005fc0 reduced the amount of time that we wait before entering scroll and zoom mode, mentioning that the only reason we want to wait at all is to process time-based two-finger gestures. The commit hints at a "2 finger tap" being the only gesture which this would apply to, but there are no signs of that gesture in the driver anymore. There is the right-click gesture which requires that the second finger be tapped for less than wcmTapTime, but removing the wcmTapTime limit on entering scroll and zoom modes does not affect that gesture (unless your right- click gesture was so sloppy that your fingers moved enough to be considered a scroll or zoom gesture). Ref: https://github.com/linuxwacom/xf86-input-wacom/issues/43 Ref: 3005fc0 ("reduce 2-finger scroll holdoff time") Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
* Merge pull request #73 from jigpu/fix-54Jason Gerecke2019-09-037-43/+52
|\ | | | | | | | | | | Allow stylus devices to have "CursorProximity" effect in relative mode Reviewed-by: Aaron Armstrong Skomra <aaron.skomra@wacom.com> Reviewed-by: Ping Cheng <ping.cheng@wacom.com>
| * Use a proxout height of 30 for all stylus devicesJason Gerecke2019-08-123-5/+10
| | | | | | | | | | | | | | | | | | | | | | Styli and pucks likely have different proxout height requirements due to differences in how the tools are held/used. For now, lets try setting a height of 30. This should be close to the height previously present for consumer devices (before the kernel started honoring prox/range) and should hopefully be reasonable for professional devices too. Ref: https://github.com/linuxwacom/input-wacom/issues/54 Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
| * Allow CursorProximity to take effect even if distance == 0 on tablet surfaceJason Gerecke2019-08-122-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The CursorProximity feature allows the relative-mode puck to be lifted a smaller distance from the tablet surface than the full hardware prox distance. This makes using the puck in relative mode much easier. In order to simplify the code, 4893844f3f changed how the surface distance would be determined. Instead of tracking the minimum (or maximum) distance reported, the driver would use the value reported the moment a click occurred. This works relatively well, but does require the user to make at least one click before the CursorProximity feature takes effect. Because the "uninitialized" value of `common->wcmMaxCursorDist` is zero, this can prevent the CursorProsximity feature from taking effect if the tablet itself reports a distance of 0 at the tablet surface. To fix this we can just let the "uninitialized" value be -1 since such a distance is not valid. Ref: https://github.com/linuxwacom/xf86-input-wacom/issues/72 Fixes: 4893844f3f ("Modify wcmMaxCursorDist calculation to support non-inverted protocol 4") Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
| * Allow use of proxout feature for any relative tablet tool (stylus, eraser, ↵Jason Gerecke2019-08-125-15/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | cursor) The proxout feature makes it easier to use tools in relative mode by not requiring the user to completely remove the tool from hardware prox before repositioning. Traditionally only the cursor tool is used in relative mode, but there are also times that stylus/eraser might also be. This patch allows any relative tablet tool to make use of the feature. Ref: https://github.com/linuxwacom/input-wacom/issues/54 Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
| * Change wcmCursorProxoutDist from a common to a private propertyJason Gerecke2019-08-125-30/+30
| | | | | | | | | | | | | | | | | | | | Refactors wcmCursorProxoutDist and related variables so that the information is tracked on a per-tool basis rather than being considered a common property of the tablet. This is in preparation for a follow-up patch which will expose the proxout feature to tools other than the cursor/puck. Ref: https://github.com/linuxwacom/input-wacom/issues/54 Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
* | travis CI: rework and simplifyPeter Hutterer2019-07-311-15/+32
| | | | | | | | | | | | | | | | | | | | | | | | Does the same work, but it's a bit easier to understand now. The 'compiler' directive creates two jobs, gcc and clang. Those jobs use the global instrucitons. In addition we have the 'jobs' directive which adds the coverity job, broken up over multiple lines now to make live easier on our eyes. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Jason Gerecke <jason.gerecke@wacom.com>
* | Remove misplaced commentPeter Hutterer2019-07-311-1/+0
|/ | | | Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
* Merge pull request #67 from skomra/masterJason Gerecke2019-07-294-9/+4
|\ | | | | Remove and replace references to Sourceforge
| * Remove and replace references to SourceforgeAaron Armstrong Skomra2019-07-164-9/+4
| | | | | | | | | | | | The project has moved to Github. Signed-off-by: Aaron Armstrong Skomra <aaron.skomra@wacom.com>
* | Merge pull request #66 from ShapeShifter499/masterJason Gerecke2019-07-161-0/+18
|\ \ | |/ |/| Add support for Surface Go and Nuvision Solo 10 Draw