A common problem is that users will have devices which split their functionality
between several device nodes (e.g laptop keyboards). It is often desirable to
only remap a subset of these device nodes so that some of them can operate
unintercepted by keyd (e.g touchpads) or be assigned to a different config.
This patch moves away from vendor/product id pairs by introducing unique identifiers.
To maintain backward compatibility, prefix matching is used and the old identifiers
are valid substrings of the new ones.
As a byproduct of this, a new bug/feature is born. <vendor id> in
isolation will now also match any device with the given vendor id.
Woe betide the user that makes use of this.
Add support for plasma5 which uses a marginally different dbus and scripting
API (ugh). We also use the window class instead of the app id, which appears
to yield a more consistent result).
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.