summaryrefslogtreecommitdiff
path: root/sys/dev/evdev/evdev_mt.c
AgeCommit message (Collapse)Author
2023-08-16sys: Remove $FreeBSD$: two-line .h patternWarner Losh
Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/
2021-09-15evdev: Add parentheses around '-' expression in operand of '&'.John Baldwin
This fixes a -Wparentheses error with GCC 9. Reviewed by: wulf Differential Revision: https://reviews.freebsd.org/D31947
2021-09-02evdev: Do not export multitouch functions which are unused outside evdevVladimir Kondratyev
2021-08-25evdev: Add support for automatic MT protocol type A to type B conversion.Vladimir Kondratyev
MFC after: 2 weeks
2021-08-25evdev: Add implicit mode for touch tracking.Vladimir Kondratyev
In implicit mode assignment of slot number and tracking id is performed automatically on each synchronization requested by device driver. This is done with creation of intermediate buffer for multitouch events. This buffer holds untracked events until synchronization is requested by device driver. It is needed as touch assigment requires knowledges of all touch positions pushed in current and previous reports. MFC after: 2 weeks
2021-08-25evdev: Import support for touch-tracking.Vladimir Kondratyev
Touch tracking is a process of assignment of unique trackingID to each initiated contact on the surface. Keeping the trackingIDs persistent across multitouch reports requires solving of so called Euclidian Bipartite Matching problem. This commit imports EBM-solver implementation based on Dinitz-Kronrod algorithm to find minimum cost matching between contacts listed in two consecutive reports. Obtained from: OpenBSD MFC after: 2 weeks
2021-08-25evdev: Make MT tracking IDs monotonically increasing sequence.Vladimir Kondratyev
MFC after: 2 weeks
2021-08-25evdev: Give short aliases to items of evdev_mt_slot arrayVladimir Kondratyev
with using of unioned anonymous structure. Access to the same data by using different members of union generally works despite it is not supported by C specs. Also add helper function to report entire slot state. MFC after: 2 weeks
2021-08-25evdev: Normalize width and pressure of single touch compat eventsVladimir Kondratyev
to match Synaptics touchpad reporting range. MFC after: 2 weeks
2021-08-25evdev: force no fuzz for autogenerated single touch compat events.Vladimir Kondratyev
As fuzz has already been applied on multitouch event processing. This allows to remove existing workaround for double fuzz procesing. MFC after: 2 weeks
2021-08-25evdev: Send first active rather than 0-th slot state as ST reportVladimir Kondratyev
MFC after: 2 weeks
2021-08-25evdev: Use bitsets to track active touches and slots changed in current reportVladimir Kondratyev
Obtained from: OpenBSD MFC after: 2 weeks
2021-08-25evdev: Multitouch code style changes.Vladimir Kondratyev
1. Move touch count reporting helpers to utils. They are not multitouch. 2. Use evdev_mt prefix for private multitouch support routines. 3. Use int instead of int32_t where fixed size is not required. 4. Export some internal functions. This change should be no-op. MFC after: 2 weeks
2021-01-08evdev: Remove useless "initial value" parameter from evdev_support_abs()Vladimir Kondratyev
It can not be used for setting of state of multitouch events. If necessary, use evdev_push_event() instead of it.
2017-07-23Change my email address to wulf@FreeBSD.org in copyright headers.Vladimir Kondratyev
Approved by: gonzo (mentor) MFC after: 2 weeks Notes: svn path=/head/; revision=321399
2017-07-23evdev: Macroize common locking sequencesVladimir Kondratyev
Reviewed by: gonzo Approved by: gonzo (mentor) MFC after: 2 weeks Notes: svn path=/head/; revision=321398
2017-07-23evdev: style(9), sort headers alphabeticallyVladimir Kondratyev
Pointed out by: bde Reviewed by: gonzo Approved by: gonzo (mentor) MFC after: 2 weeks Notes: svn path=/head/; revision=321397
2016-10-08Implement EVDEV_FLAG_MT_AUTOREL flag (autorelease touchpoints)Oleksandr Tymoshenko
Automaticaly release (send ABS_MT_TRACKING_ID = -1) MT-slots that has not been listed in current MT protocol type B report. Slot is counted as listed if corresponding ABS_MT_SLOT event has been sent regardless of other MT events. Events are sent on SYN_REPORT event. Submitted by: Vladimir Kondratiev <wulf@cicgroup.ru> Notes: svn path=/head/; revision=306857
2016-10-08Allow using of driver's mutex instead internal one for evdev locking.Oleksandr Tymoshenko
Add new API call: evdev_register_mtx which takes lock argument that should be used instead of internal one for evdev locking. Useful for cases if evdev_push_event() is always called with driver's lock taken and reduces amount of lock aquisitions. This allows to avoid LOR between ev_open/ev_close invocations and evdev_push_event() Such LOR can happen when ev_open/ev_close methods acquire driver lock and evdev_push_event() is called with this lock taken. Submitted by: Vladimir Kondratiev <wulf@cicgroup.ru> Notes: svn path=/head/; revision=306855
2016-09-11Add evdev protocol implementationOleksandr Tymoshenko
evdev is a generic input event interface compatible with Linux evdev API at ioctl level. It allows using unmodified (apart from header name) input evdev drivers in Xorg, Wayland, Qt. This commit has only generic kernel API. evdev support for individual hardware drivers like ukbd, ums, atkbd, etc. will be committed later. Project was started by Jakub Klama as part of GSoC 2014. Jakub's evdev implementation was later used as a base, updated and finished by Vladimir Kondratiev. Submitted by: Vladimir Kondratiev <wulf@cicgroup.ru> Reviewed by: adrian, hans Differential Revision: https://reviews.freebsd.org/D6998 Notes: svn path=/head/; revision=305706