There is presently no way to revert to the 'default' (no) layout.
This patch makes setlayout(main) functionally equivalent to clearing
the applied layout (if present).
Add support for Gnome 45, which breaks backward extension
compatibility. We now ship and maintain two extensions :/.
The main change in Gnome seems to be the switch from a custom
import implementation to 'standard' ES6 style imports.
The init method also seems to have inexplicably
been swapped out in favour of extending a magic
class.
This patch takes the opportunity to clean up some residual cruft
and move the extension code out of the mapper script.
Specifically:
- Ship distinct extensions for Gnome 42-44 and Gnome 45 in /usr/local/share/keyd
- Move the named pipe to XDG_RUNTIME_DIR
- Initialize the pipe inside the extension instead of the script
to avoid potential race conditions during initialization.
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.