diff --git a/hosts/common/programs/sane-input-handler/default.nix b/hosts/common/programs/sane-input-handler/default.nix index b3bc17cc..25729c34 100644 --- a/hosts/common/programs/sane-input-handler/default.nix +++ b/hosts/common/programs/sane-input-handler/default.nix @@ -36,29 +36,11 @@ let in assert terminal -> events == []; events; # trigger ${button}_hold_N every `holdTime` ms until ${button} is released - recurseHold = button: { count ? 1, maxHolds ? 5, prefix ? "", holdTime ? 750, ... }@opts: lib.optionalAttrs (count <= maxHolds) { + recurseHold = button: { count ? 1, maxHolds ? 3, holdTime ? 1000 }@opts: lib.optionalAttrs (count <= maxHolds) { "${button}_released".terminal = true; # end the hold -> back to root state - timeout = { - ms = holdTime; - trigger = "${prefix}${button}_hold_${builtins.toString count}"; - } // (recurseHold button (opts // { count = count+1; })); - }; - - # trigger volup_tap_N or voldown_tap_N on every tap. - # if a volume button is held, then switch into `recurseHold`'s handling instead - volumeActions = { count ? 1, maxTaps ? 5, prefix ? "", timeout ? 600, ... }@opts: lib.optionalAttrs (count != maxTaps) { - volup_pressed = (recurseHold "volup" opts) // { - volup_released = { - trigger = "${prefix}volup_tap_${builtins.toString count}"; - timeout.ms = timeout; - } // (volumeActions (opts // { count = count+1; })); - }; - voldown_pressed = (recurseHold "voldown" opts) // { - voldown_released = { - trigger = "${prefix}voldown_tap_${builtins.toString count}"; - timeout.ms = timeout; - } // (volumeActions (opts // { count = count+1; })); - }; + ms = holdTime; + trigger = "${button}_hold_${builtins.toString count}"; + timeout = recurseHold button (opts // { count = count+1; }); }; in { @@ -163,12 +145,13 @@ in power_pressed.voldown_pressed.trigger = "power_and_voldown"; # map: volume taps and holds - volup_pressed = (volumeActions {}).volup_pressed // { - trigger = "volup_start"; - }; - voldown_pressed = (volumeActions {}).voldown_pressed // { - trigger = "voldown_start"; - }; + volup_pressed.trigger = "volup_start"; + volup_pressed.volup_released.trigger = "volup_tap_1"; + volup_pressed.timeout = recurseHold "volup" {}; + + voldown_pressed.trigger = "voldown_start"; + voldown_pressed.voldown_released.trigger = "voldown_tap_1"; + voldown_pressed.timeout = recurseHold "voldown" {}; }); sane.programs.sway.config.extra_lines = lib.mkIf cfg.enabled (