need to be cautious about including "pckbd.h". This has the side-effect
that ports using pckbd but not defining __HAVE_NWSCONS will now get pckbd
attached as console if they call pckbport_cnattach(), but I don't think
any such ports exist.
- struct timeval time is gone
time.tv_sec -> time_second
- struct timeval mono_time is gone
mono_time.tv_sec -> time_uptime
- access to time via
{get,}{micro,nano,bin}time()
get* versions are fast but less precise
- support NTP nanokernel implementation (NTP API 4)
- further reading:
Timecounter Paper: http://phk.freebsd.dk/pubs/timecounter.pdf
NTP Nanokernel: http://www.eecis.udel.edu/~mills/ntp/html/kern.html
standard scheme:
if (<configured> != <wildcard> && <configured> != <real>)
then fail
else
ask device match function
This is handled by config_stdsubmatch() now.
explicitely by a plain integer array
the length in now known to all relevant parties, so this avoids
duplication of information, and we can allocate that thing in
drivers without hacks
The __UNCONST macro is now used only where necessary and the RW macros
are gone. Most of the changes here are consumers of the
sysctl_createv(9) interface that now takes a pair of const pointers
which used not to be.
keyboard is detected the pckbd keyboard is not used as the console.
Previously the pckbd keyboard was used as the console as soon as the
kernel had it configured into the kernel. This is far from ideal on a
machine that has no PS/2 keyboard, but a USB keyboard attached since the
(non-existant) PS/2 keyboard becomes the console instead of the USB keyboard.
For now this option will be off by default to be backwards compatible.
on "options PMS_SYNAPTICS_TOUCHPAD" in the kernel config file. See
the PR for details on why this is necessary.
While here, defflag PMS_DISABLE_POWERHOOK.
prompted by jittery and/or random movement during tap gestures, lack
of edge motion, and a general desire to make use of the extra features
available with the native protocol.
- Ditch the kernel thread; it was overkill for the small amount of
processing required to deal with touchpad events.
- If we fail to probe a Synaptics touchpad, issue a RESET command
to ensure that whatever device is out there is left in a sane
state (thanks to Reinoud Zandijk for the hint).
- Completely re-write gesture support.
- Put the touchpad in 80 packets per second mode and count them so
they can be used to time gesture durations (instead of using
mono_time).
- Enhance up/down button support with options to use them to emulate
the middle button or Z-axis events (like a traditional wheel mouse).
- Add 'edge motion'. If a drag gesture is in progress, and the reported
finger position moves to the touchpad's border region, continue
to report movement events at a fixed rate as if the finger carried
on moving in the same direction. This restores some functionality
usually provided by the touchpad's firmware in PS/2 mode.
- Filter successive movement events to reduce jitter. When scaling
movement events, fold the remainder into the next event to prevent
loss of information during slow/small finger movements. Pointer
movement is now much more refined.
- Add support for touchpads which can report more than one finger on
the pad simultaneously. Optionally use this feature for middle/right
button emulation (i.e. tap two fingers to emulate middle button).
This feature is disabled by default (for now) to avoid surprise
pasting of clipboard text. ;-)
all keymaps except the US english one can be removed from the kernel
with this option, which results in a space gain of about 10kB.
XXX it would be nice if we could strip down more kernel facilities
-convert submatch() style functions (passed to config_search() or
config_found_sm()) to the locator passing variants
-pass interface attributes in some cases
-make submatch() functions look uniformly as far as possible
-avoid macros which just hide cfdata members, and reduce dependencies
on "locators.h"
drivers that attach to it. This allows for other host interface chips
that use the same keyboards and mice, such as the ones in the ARM
IOMD20, ARM7500, and SA-1111. The PC-compatible driver is still
called pckbc(4), and the new abstraction layer is "pckbport", so the
child devices have moved from sys/dev/pckbc to sys/dev/pckbport, which
also contains some code shared between all host controllers. To avoid
incompatibility, pckbdreg.h is still installed in
/usr/include/dev/pckbc.
In theory, this shouldn't cause any behavioural changes in the drivers
concerned. Thy just use rather more function pointers than before. Tested
on i386 and (with a new host driver) acorn32. Compiled on several other
affected architectures.