Repository navigation
v0.2.5
Edgepad 0.2.5 adds double tap gesture to touchpad edge zones.
What’s new
- Bind
direction = "double-tap"on any edge, including edges that also act as sliders. - Configure the sequence with
double_tap_timeout_msanddouble_tap_max_distancein TOML or the Home Manager module. - Combine
tapanddouble-tapon one edge without firing both actions: a completed pair emits onlydouble-tap; an unmatched first tap fires when its deadline expires. - Edges without a
double-tapbinding keep immediate single-tap behavior. - Tap recognition now has a maximum contact duration through
tap_max_duration_ms, preventing stationary holds from turning into taps.
Input correctness
The recognizer works with Type-B multitouch semantics, including slot reuse when the kernel omits unchanged coordinates. It cancels ambiguous sequences on overlapping contacts, excessive movement, long holds, slider steps, physical clicks, center passthrough, and SYN_DROPPED recovery. Pending taps also wake on an idle timer, so a single-tap action never waits for the next input event.
Config reload waits for active contacts and pending tap arbitration to settle, keeping one gesture sequence on one recognition profile.
Upgrade notes
- The default maximum tap duration is
180 ms. If deliberate holds previously counted as taps in your setup, raisetap_max_duration_ms. - The default double-tap gap is
300 ms, and the default normalized distance is0.04. - Double taps are single-finger sequences. Touching the pad with another finger cancels the pair rather than guessing across multi-touch input.
- When an edge has both bindings, its single-tap action can be delayed by up to the configured double-tap timeout. Other edges are unaffected.
The implementation is covered at the recognizer, replay, routing, config, Home Manager, action dispatch, reload, idle-deadline, and /dev/uinput integration layers.
Read the recognition design and exact input contract.
Full changelog: v0.2.4…v0.2.5