From 97b90cd1af35e99b745ba08218b0d255bdbc71fd Mon Sep 17 00:00:00 2001 From: Vftdan Date: Sun, 18 Aug 2024 18:53:10 +0200 Subject: [PATCH] Basic quadtap -> left_click + right_click config --- quadtap-both-click.cfg | 119 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 quadtap-both-click.cfg diff --git a/quadtap-both-click.cfg b/quadtap-both-click.cfg new file mode 100644 index 0000000..4cca652 --- /dev/null +++ b/quadtap-both-click.cfg @@ -0,0 +1,119 @@ +enums = { + namespaces: ["clickpad"]; +}; + +predicates = { + is_evdev = { + type = "code_ns"; + min = "namespaces.clickpad"; + max = "namespaces.clickpad"; + }; + key_event = { + type = "and"; + args = ( + "is_evdev", + { + type = "code_major"; + min = "event_type.KEY"; + max = "event_type.KEY"; + } + ); + }; + syn_event = { + type = "and"; + args = ( + "is_evdev", + { + type = "code_major"; + min = "event_type.SYN"; + max = "event_type.SYN"; + } + ); + }; + btn_quadtap_event = { + type = "and"; + args = ( + "key_event", + { + type = "code_minor"; + min = "button_event.TOOL_QUADTAP"; + max = "button_event.TOOL_QUADTAP"; + } + ); + }; +}; + +nodes = { + clickpad = { + type = "evdev"; + options = { + file = "/dev/input/event7"; + namespace = "namespaces.clickpad"; + }; + }; + select_interesting_events = { + type = "router"; + options = { + predicates = ["syn_event", "btn_quadtap_event"]; + }; + }; + quadtap_subst_seq = { + type = "tee"; + }; + morph_left_click = { + type = "assign"; + options = { + minor = "button_event.LEFT"; + }; + }; + morph_right_click = { + type = "assign"; + options = { + minor = "button_event.RIGHT"; + }; + }; + merge = { + type = "tee"; + }; + virtual_out = { + type = "uinput"; + options = { + name = "Quadtap gesture"; + enabled_codes = ( + {major: "event_type.KEY"; minor: "button_event.LEFT"} + , + {major: "event_type.KEY"; minor: "button_event.RIGHT"} + , + {major: "event_type.KEY"; minor: "button_event.MIDDLE"} + ); + }; + }; +}; + +channels = ({ + from: ("clickpad", 0); + to: ("select_interesting_events", 0); +}, { + from: ("select_interesting_events", 0); // EV_SYN + to: ("merge", 0); +}, { + from: ("select_interesting_events", 1); // BTN_TOOL_QUADTAP + to: ("quadtap_subst_seq", 0); +}, { + from: ("quadtap_subst_seq", 0); + to: ("morph_left_click", 0); +}, { + from: ("quadtap_subst_seq", 1); + to: ("morph_right_click", 0); +}, { + from: ("morph_left_click", 0); + to: ("merge", 1); +}, { + from: ("morph_right_click", 0); + to: ("merge", 2); +}, { + from: ("merge", 0); + to: ("virtual_out", 0); +}); + +// vim: ft=libconfig