History log of /freebsd-11-stable/sys/dev/evdev/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
366883 20-Oct-2020 hselasky

MFC r366533:
Allow evdev's rcpt_mask and sysmouse_t_axis parameters to be specified in
/boot/loader.conf .

Sponsored by: Mellanox Technologies // NVIDIA Networking

362598 25-Jun-2020 wulf

MFC r362260:

evdev: Add AT translated set1 scancodes for 'Eisu' & 'Kana' keys.

PR: 247292
Submitted by: Yuichiro NAITO <naito.yuichiro@gmail.com>

362207 15-Jun-2020 wulf

MFC r360624:

[evdev] Add AT translated set1 scancodes for F-unlocked F1-12 keys.

"F lock" is a switch between two sets of scancodes for function keys F1-F12
found on some Logitech and Microsoft PS/2 keyboards [1]. When "F lock" is
pressed, then F1-F12 act as function keys and produce usual keyscans for
these keys. When "F lock" is depressed, F1-F12 produced the same keyscans
but prefixed with E0.
Some laptops use [2] E0-prefixed F1-F12 scancodes for non-standard keys.

[1] https://www.win.tue.nl/~aeb/linux/kbd/scancodes-6.html
[2] https://reviews.freebsd.org/D21565

MFC r360625:

[evdev] Sync event codes with Linux kernel 5.6

360352 26-Apr-2020 wulf

MFC r359905:

[evdev] Use proper mutex reference in autorepeat callout initialization.

This fixes panic occuring when evdev key autorepeat is enabled by driver
which initializes evdev with external mutex.

360185 22-Apr-2020 delphij

MFC r360104: Use LIST_FOREACH_SAFE instead of LIST_FOREACH as we are
removing elements in the middle.

This fixes a panic when detaching USB mouse.

PR: 245732
Reviewed by: wulf

359907 13-Apr-2020 wulf

MFC r359428:
evdev: Add COMPAT_FREEBSD32 support for amd64 arch

Incompatibility between i386 and amd64 evdev ABIs was caused by presence of
'struct timeval' in evdev protocol. Replace it with 'struct timeval32' for
32 bit binaries.

Big-endian platforms may require additional work due to bitstr_t (array of
unsigned longs) usage in ioctl interface.

MFC r359429:
evdev: return error rather than zero-length data on blocked read()
if blocked process has been woken up by evdev device destruction.

344986 10-Mar-2019 wulf

Fix build breakage caused by r344984

This is a direct commit to stable/11

344984 10-Mar-2019 wulf

MFC r344494,r344495:

evdev: export event device properties through sysctl interface

A big security advantage of Wayland is not allowing applications to read
input devices all the time. Having /dev/input/* accessible to the user
account subverts this advantage.

libudev-devd was opening the evdev devices to detect their types (mouse,
keyboard, touchpad, etc). This don't work if /dev/input/* is inaccessible.
With the kernel exposing this information as sysctls (kern.evdev.input.*),
we can work w/o /dev/input/* access, preserving the Wayland security model.

Submitted by: Greg V <greg@unrelenting.technology>
Reviewed by: wulf, imp
Differential Revision: https://reviews.freebsd.org/D18694

343160 18-Jan-2019 wulf

MFC r340926:

evdev: Fix pause key release event in AT keyboard set 1 to evdev xlat-or.

337290 04-Aug-2018 wulf

MFC r334555:

[evdev] Sync event codes with Linux kernel 4.16

326543 04-Dec-2017 wulf

MFC r325295:

evdev: Lock Giant around keyboard ioctls
This fixes turning ukbd(4) LEDs on/off with evdev interface as well

MFC r325296:

evdev: Take driver's lock in cdev write handler if necessary

MFC r325297:

sysmouse(4): Fix ums(4)-style T-axis reporting via evdev protocol

- Do not report T-axis wheel events as button presses
- Reverse T-axis to match Linux
- Remove wrong comment. T-axis buttons state should be checked by level not
by edge to allow continuous wheel tilt reporting

MFC r325298:

evdev: Disable value normalization and state filtering for SND events.

Some events can take sound pitch as a value so can not be represented
as binary on/off events. Tracking for on/off state is left in place
as it is a part of the evdev API.

MFC r325299:

evdev: Do not start/stop softrepeat callout if no clients attached

Approved by: gonzo (mentor)

326541 04-Dec-2017 wulf

MFC r325269:

evdev: Translate KEY_102ND in evdev_scancode2key()

MFC r326020:

Fix evdev codes for slash and asterisk numpad keys of AT-keyboards

MFC r326021:

evdev: change USB scancode 0x54 from KEY_SLASH to KEY_KPSLASH

Submitted by: dumbbell (r325269, r326021)
Approved by: gonzo (mentor)

326540 04-Dec-2017 wulf

MFC r325294:

evdev: Hide "kern.evdev.rcpt_mask" sysctl if kernel is compiled
w/o EVDEV_SUPPORT as it's value has no meaning in this case.

MFC r326019:

evdev: Export EVDEV_SUPPORT kernel option through feature facility

Approved by: gonzo (mentor)

324768 19-Oct-2017 wulf

MFC r321397-r321399

r321397:
evdev: style(9), sort headers alphabetically

r321398:
evdev: Macroize common locking sequences

r321399:
Change my email address to wulf@FreeBSD.org in copyright headers.

Approved by: gonzo (mentor)

317989 08-May-2017 gonzo

MFC r315176-r315178

r315176:
[evdev] Do not ignore result evdev_register in UI_DEV_CREATE handler

Make sure that uinput state field reflects actual state by checking
evdev_register result for errors

Submitted by: Vladimir Kondratiev <wulf@cicgroup.ru>
Differential Revision: https://reviews.freebsd.org/D9320

r315177:
[evdev] Fix race condition between client's event queue reading and dropping

Submitted by: Vladimir Kondratiev <wulf@cicgroup.ru>
Differential Revision: https://reviews.freebsd.org/D9320

r315178:
[evdev] Fix Right Alt and Keypad Enter event codes for atkbd(4) and kbdmux(4) drivers

Submitted by: Vladimir Kondratiev <wulf@cicgroup.ru>
Differential Revision: https://reviews.freebsd.org/D9320

311571 07-Jan-2017 gonzo

MFC r310612:

[evdev] Fix build for older versions of clang

There was report of stable/11 build failure on older versions of
FreeBSD. The problem was a reference to static variable in inline
function. Although fairly recent versions of clang can cope with this
situation just fine there is no strict requirement to make functions
in question inline, they're not in any time-critical codepath. So to
keep HEAD and 11-STABLE buildable on older FreeBSDs some of the util
functions were converted from inline to normal.

Reported by: hselasky

310431 22-Dec-2016 gonzo

MFC r309823:

[evdev] Adds evdev support to sysmouse(4) driver

For horizontal (T-axis) wheel reporting which is not supported by
sysmouse protocol kern.evdev.sysmouse_t_axis sysctl is introduced.
It can take following values:

0 - no T-axis events (default)
1 - T-axis events are originated in ums(4) driver.
2 - T-axis events are originated in psm(4) driver.

Submitted by: Vladimir Kondratiev <wulf@cicgroup.ru>
Differential Revision: https://reviews.freebsd.org/D8597

308388 06-Nov-2016 gonzo

MFC r307804-r307805

r307804:
EVDEV: Add shortcut functions for event types

Add wrappers around generic evdev_push_event for specific event types:
EV_KEY/EV_REL/EV_ABS etc...

Submitted by: Vladimir Kondratiev <wulf@cicgroup.ru>

r307805:
EVDEV: ums evdev support improvements: locking and event reporting

- Use ums lock as evdev lock
- Do not cap axes values to sysmouse limits for evdev reports
- Do not map T-axis events to buttons for evdev reports
- Use shortcuts for event reporting

Submitted by: Vladimir Kondratiev <wulf@cicgroup.ru>
MFC after: 1 week

307777 22-Oct-2016 gonzo

MFC r306647, r306855, r306857

r306647:
const-ify struct evdev_methods

Submitted by: Vladimir Kondratiev <wulf@cicgroup.ru>
Suggested by: hselasky

r306855:
Allow using of driver's mutex instead internal one for evdev locking.

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>

r306857:
Implement EVDEV_FLAG_MT_AUTOREL flag (autorelease touchpoints)

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>

307775 22-Oct-2016 gonzo

MFC r306530, r306531, r306532, r306579:

r306530:
Declare a module for evdev and add dependency to ukbd(4) and ums(4)

Prepare for making evdev a module. "Pure" evdev device drivers (like
touchscreen) and evdev itself can be built as a modules regardless of
"options EVDEV" in kernel config. So if people does not require evdev
functionality in hybrid drivers like ums and ukbd they can, for instance,
kldload evdev and utouchscreen to run FreeBSD in kiosk mode.

r306531:
Add dependency to evdev module (if required)

r306532:
Add dependency to evdev module

r306579:
Modularize evdev

- Convert "options EVDEV" to "device evdev" and "device uinput", add
modules for both new devices. They are isolated subsystems and do not
require any compile-time changes to general kernel subsytems
- For hybrid drivers that have evdev as an optional way to deliver input
events add option EVDEV_SUPPORT. Update all existing hybrid drivers
to use it instead of EVDEV
- Remove no-op DECLARE_MODULE in evdev, it's not required, MODULE_VERSION
is enough
- Add evdev module dependency to uinput

Submitted by: Vladimir Kondratiev <wulf@cicgroup.ru>

307766 22-Oct-2016 gonzo

MFC r306578:

Fix gcc compilation error

input_absinfo.code is unsigned so condition is always false

307760 22-Oct-2016 gonzo

MFC r305706, r305749, r306274

r305706:
Add evdev protocol implementation

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

r305749:
Remove semicolon from the end of the macro definition

Reported by: hans

r306274:
Handle NULL argument in evdev_free

Add check for evdev argument of evdev_free being NULL. This is valid
value and should not cause crash. In this case evdev_free does nothing

Submitted by: Vladimir Kondratiev <wulf@cicgroup.ru>

305706 11-Sep-2016 gonzo

Add evdev protocol implementation

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