The following change in udev seems to incorrectly identify the virtual
pointer as a 'tablet pad'.
https://github.com/systemd/systemd/commit/0855ce6772#diff-e3c18b2fc4f50acbb9f2d66a1daf229fde99a5c8785f17aa6f69e6a9c41ae2c7R261
This patch removes the BTN_[0-9] capability from the virtual pointer (which is
presently unused) to avoid the issue. It is unclear if this behaviour should
be considered pathological in udev, since I can't find any documentation which
suggests it is illegitimate for non tablet devices to make use of these codes.
Swap now applies exclusively to keys associated with the layer in which the
swap binding is contained. The corresponding swap target is now computed from
layer data associated with each depressed key instead of using the
most recent key which activated a layer. This makes the action more
consistent with the documented behaviour.
Disabling specific keys is likely to be something people will want to do,
however, the documentation doesn't emphasize that functionality. Add an example
about disabling keys with the 'noop' keyword to the documentation to make it
easier for users to figure out how to do that.
Closes#359
Eager layer activation seems to be more desirable for non time-based
overloading. In addition to facilitating modifier clicking for non-managed
mice, it appears some applications (E.g i3) care about isolated modifier down
events.
Treat each chord as a virtual key that is released
after all constituents are released. Constituent keys
may be used in conjunction with the active chord
after they have been released.
Make the device table globally accessible to avoid redundant bookkeeping in
daemon.c. The pointers held in the daemon device list were invalidated
by evloop code shifting the table around and causing a segfault.