New Features
New argument: --withhold
When you use a --hook
to trigger an action on a certain key combination, the --withhold
argument can be used to prevent that key combination from reaching the output device.
For example, with the following arguments, you can run a command on pressing Ctrl+A, and the key:a
events will be dropped from the event stream if and only if they were used to trigger that command:
--hook key:leftctrl key:a exec-shell="echo Hello, world!" sequential \
--withhold key:a
The --hook
argument accepts more flags/clauses
The --hook
argument now accepts the following additional flags/clauses: send-key=...
, sequential
, period=...
and breaks-on=...
.
The send-key=...
clause is useful for pressing a key whenever a combination of other keys gets pressed.
The flags/clauses sequential
, period=...
and breaks-on=...
put additional restrictions on when the hook can trigger, and are mostly useful for fine-tuning the behaviour of the new --withhold
argument.
New argument: --delay
The --delay
argument removes events from the event stream and adds them back a fixed amount of time later, effectively delaying events by a fixed amount of time.
Key format extended: event type/code elision
It is now possible to elide the event code or both the event type and code in some places. For example, the filter key::1
will match any key event with value 1, and the filter ::0
will match any event with value 0.
Key format extended: new special values
The special value x
has been added, which is a placeholder for the value of the source event. For example, --map rel ::2x
will double the value of any EV_REL
event, mapping e.g. rel:x:5
to rel:x:10
and mapping rel:y:-4
to rel:y:-8
.
Affine combinations of special values are now allowed as well. For example, if you know that your abs:y
axis takes values in the range [0, 255], then you can use --map abs:y abs:y:255-x
to invert the y axis.
Bugfix / Behaviour Changed
- Whenever a single event is mapped to multiple events, the output devices will now insert an
EV_SYN
synchronisation report between all generated events. Previously the output devices only synchronised when the input devices did. - Trying to use a key with too many colons such as
key:a:1:2
will now give an error. Previously, the:2
part was silently ignored.