Since `/etc/keyd/` `/usr/bin/` etc. are root filesystems and are already available,
the following are not required:
Requires=local-fs.target
After=local-fs.target
In addition, make the unit a dependency of multi-user.target instead of
sysinit.target:
WantedBy=sysinit.target
The lintian utility (Debian's package lint tool) complains if a
utility's man page doesn't start with a "NAME" section.
While I'm here, rename "USAGE" to "SYNOPSIS" and "OVERVIEW" to
"DESCRIPTION" to match man-pages(7).
Adds support for KEY_VOICECOMMAND and drops support for
KEY_ALTERASE to keep keycodes within byte range. A cursory grep
of the kernel sources suggests ALTERASE is not used by any modern
input driver anyway.
REL_WHEEL_HI_RES and REL_HWHEEL_HI_RES are not present
in some older kernels. Since they are presently unhandled,
remove them to allow old (< 2018) kernels to build.
overload() and timeout() rely on being able to store and execute descriptors
without tying them to specific key states. To achieve idempotence, oneshot()
currently neutralizes the upstroke of the activating key if the layer in
question is already active. This can yield an activation asymmetry in the rare
event that the oneshot descriptor is not associated with a physical key and is
activated while the associated layer is already active.
To fix this, we activate the layer for each oneshot depression and keep track
of the oneshot activation depth.
Presently macro_sequence_timeout is strictly an inter-sequence timeout
which does not admit a pause between intra-sequence modifiers. This
patch applies such a pause to accommodate broken input stacks.