User Details
- User Since
- Jun 25 2016, 8:16 AM (436 w, 6 d)
Dec 22 2018
Most changes has been committed with r487789
Oct 12 2017
Small fix
Evdev headers now are downloaded from torvalds/linux github repository not from libevdev port
PR/196678 is excluded as it should be the part of future xorg-server update proposed by mrezny@. (I hope it will happen, better sooner than later)
devel/libevdev, devel/py-evdev, devel/evemu & x11/libinput versions are bumped
PR/219264 (x11/libwacom: install the profiles of tablets) is leaked into the patch, but it can be removed if necessary
Jun 2 2017
IMO it is far beyond accepted level of uglyness. Making high-profile API depend on the compiler settings does not make the API usable. Also, does this trick work for C++ ? The union vs. padding either would not work or require even more magic for big endian arches.
I did not changed type of udata, the later would cause serious API incompatibilities.
May 23 2017
Abandoned in favour of D10265
Finally I found out how to abandon revision after some googling. It is not very intuitive.
May 17 2017
May 16 2017
IMO, this driver can be written in generic way
May 14 2017
Change is obsolete.
After some discussion with bde@ (on arch@ and private) it is turned out that nothing but Giant can be used to serialize access to I8042 ports currently.
Although it is possible to move psm softc from Giant to private mutex that would complicate things as all calls to I8042 should be done with Giant taken so psm mutex should be released at this time.
Change is obsolete.
After some discussion with bde@ (on arch@ and private) it is turned out that nothing but Giant can be used to serialize access to I8042 ports currently.
May 13 2017
Giant-locked version of the patch.
After some discussion with bde@ (on arch@ and private) it is turned out that nothing but Giant can be used to serialize access to I8042 ports currently.
This version obsoletes part1 and part2 and can be applied to unmodified CURRENT (and 11STABLE as well).
May 5 2017
could you email link to this review to freebsd-arch@
May 3 2017
"evdev support part 4" -> "evdev support part 0". Part 3 is dependent on some of these changes.
Apr 19 2017
Device names and product IDs of supported touchpads and trackpoints are updated to match Linux
Device names and product IDs of supported touchpads and trackpoints are updated to match Linux
Apr 16 2017
Reduce default synaptics touch sensitivity to make libinput tap detection more reliable.
Remove extraneous checks for relative motion events with value = 0. It is already done inside evdev.ko
Apr 3 2017
Changes are not independent (evdev depends on psm that depends on atkbdc), but there should be no errors at each step if they are applied one by one in ascending order
I had split them and created following reviews: https://reviews.freebsd.org/D10263, https://reviews.freebsd.org/D10264, https://reviews.freebsd.org/D10265 and https://reviews.freebsd.org/D10266
Last (10266) change is not split on independent parts yet. I will do that ASAP.
Mar 30 2017
I will broadcast CFT of this change on current- and mobile- lists in couple of days
Feb 21 2017
Yep, I was basing this change off of another driver that had a TODO there. I can actually parse it out though.
We do not provide some of ioctls (EVIOCGMASK & EVIOCSMASK) in kernel but
- There is userspace evdev implementation in ports tree (multimedia/webcamd) that handles them
- libevdev has some built in runtime features checks, e.g. it can query uinput protocol version (4 or 5) at runtime and choose appropriate ioctls. It currently do not have checks for EVIOC*MASK as do not wrap these services yet.
- libevdev usually wants recent headers to compile and tries to do #2 to work on older kernels
- Newer versions of headers contains newer event codes definitions that can be used with older kernels.
- If some software does want check supported ioctls at compile time it always possible to replace #include <linux/input.h> with #include <dev/evdev/input.h> in sources
I suggest to change headers ports name from libevdev-headers to just evdev-headers to clear this confusion
These headers are not library interface, but a kernel one. I extract them from libevdev not from linux kernel because libevdev is main consumer, always contains updated version and have relatively small filesize.
FreeBSD have native versions of these headers located in /usr/include/dev/evdev/ but as evdev interface evolves faster than our release cycle, they have limited usage in ports system.
Do you have sample of description of absolute device obtained on Linux with evemu-record or similar tool?
Feb 20 2017
PR/217248 - devel/libevdev: update to 1.5.6, fix outdated and broken evdev headers (https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=217248) has been created
Feb 19 2017
Move sed scripts for patching evdev headers to devel/libevdev and remove Mk/Uses/evdev.mk
Chase for xorg-server 1.18.4 update
Jan 24 2017
Jan 18 2017
Ports versions updated.
Diff rebased to current ports tree.
Not very extensively tested.
Nov 20 2016
Full-context diff
Nov 3 2016
Oct 30 2016
Do not report leds and repeat settings changes if kern.evdev.rcpt_mask sysctl value forbids that
Oct 29 2016
Oct 16 2016
Copy serial line configuration black magic from xf86-input-keyboard driver to xorg-server console configuration routine.
This allows prevent interference between terminal and xorg-server screen output when xorg is configured for evdev rather than terminal keyboard input.
Sep 21 2016
For reasons unclear to me FreeBSD does not use const modifier in similar cases. Grep sources for e.g. struct fileops, struct vop_vector, struct cdevsw, struct filterops declarations.
Sep 19 2016
ukbd(4): D7957
Sep 18 2016
- Remove webcamd from patch as it has been commited already
- libevdev 1.5.2->1.5.4
- Make multimedia/v4l_compat not depending on devel/libevdev-headers. Fix couple (all?) of ports to be compileable with this change.
Sep 14 2016
Sep 13 2016
I thought of it but was stopped every time at sysmouse support as it is part of sc/vt and can not be kldloaded thus making evdev always loaded.
But I didn`t think about making sysmouse evdev support as module itself till now.
Thanks for pointing that out.
Sep 12 2016
Sep 7 2016
Diff updated. It would be nice to commit https://reviews.freebsd.org/D7588 as well to allow multimedia/webcamd coexistence. 11-servers/xorg-server change can be postponed if someone thinks it too radical
Fix compiling with INVARIANTS disabled
Fix EVIOCGKEYCODE* ioctls direction
Split input.h on input.h(ioctls) and input-event-codes.h(event codes) like Linux did
Clear uinput device state after UI_DEV_DESTROY ioctl
Declare uinput as kernel module. Not kldload-able yet.
Reduce KPI(evdev.h) on API (input.h) dependence through removing struct input_absinfo from evdev_support_abs() arguments
This revision fails to compile with INVARIANTS disabled. I fixed that in my repo and I`m going to update diff in this review in hour or two with couple others minor fixes
Aug 29 2016
Evdev ports support is submitted for review here: https://reviews.freebsd.org/D7588
Aug 27 2016
Mk/Uses/evdev.mk evdev ARGS comments reworded
multimedia/webcamd updated to 4.8.0.4
Aug 23 2016
Aug 22 2016
If you want to test above changes "in hardware" I can try to make webcamd patch to workaround "missing usb serial number" issue so it will be possible to attach webcamd to usb keyboards and mouses. Webcamd interface should exactly match its in-kernel counterpart since v.4.8.0.2
Aug 21 2016
Remove leaked file
Aug 19 2016
Aug 15 2016
Thank you!
Aug 13 2016
Aug 12 2016
Aug 8 2016
Aug 7 2016
Ooops. Forgot to attach evdev_private.h
- split evdev.h header on public and private parts
- make debug messages configurable on config stage as Adrian suggested
- uinput locking reworked (userspace calls are fully serialized now)
- some small fixes like EV_EOF/POLLHUP on revoked/detached device
Jul 4 2016
Yes it does wakeup and than returns ENODEV on every file operation like Linux does
Case I false-reported happened with cuse-backed devices not with uinput ones
Jul 2 2016
Done
Implements passing events from user to userspace drivers like webcamd via uinput interface
Jun 30 2016
Jun 29 2016
Thank you too. I tried it and it found it working (after some fixes).
Jun 28 2016
Could you try following patch? http://195.170.219.74/webcamd-20160628.patch
It is compile tested only due to lack of webcam-supported hardware so it can do something other than intended. It should create both cuse-cdev as /dev/input/webcamdXX and its uinput alter-ego as /dev/input/eventXX
Best solution is to use uinput interface instead of cuse
It tries to choose next device unit number if make_dev returned EEXISTS but real coexistence has not been tested
Is webcamd able to create dummy event device? Is webcamd supports a case when /dev/input/ already populated?
and the V4L linux compat files?
Both (reviewed and v4linux) headers can not be #included at one time, but they are compatible.
Really, I use patched V4L linux compat headers for userland evdev stack parts to ease of porting not headers from this review:
http://195.170.219.74/evdev-ports-20160628.diff
Jun 27 2016
Remove some leaked lines