local wezterm = require("wezterm") local act = wezterm.action local act_callback = wezterm.action_callback local function kb(mods, key, action) return { mods = mods, key = key, action = action } end return { disable_default_key_bindings = true, keys = { -- tabs kb("SHIFT|CTRL", "t", act.SpawnTab("CurrentPaneDomain")), kb("SHIFT|CTRL", "q", act.CloseCurrentTab({ confirm = false })), kb("SHIFT|CTRL", "LeftArrow", act.ActivateTabRelative(-1)), kb("SHIFT|CTRL", "RightArrow", act.ActivateTabRelative(1)), -- panes kb("SHIFT|ALT", "w", act.SplitVertical({ domain = "CurrentPaneDomain" })), kb("SHIFT|ALT", "d", act.SplitHorizontal({ domain = "CurrentPaneDomain" })), kb("SHIFT|ALT", "q", act.CloseCurrentPane({ confirm = false })), kb("SHIFT|ALT", "UpArrow", act.ActivatePaneDirection("Up")), kb("SHIFT|ALT", "DownArrow", act.ActivatePaneDirection("Down")), kb("SHIFT|ALT", "LeftArrow", act.ActivatePaneDirection("Left")), kb("SHIFT|ALT", "RightArrow", act.ActivatePaneDirection("Right")), kb("", "PageUp", act.ScrollByLine(-1)), kb("SHIFT", "PageUp", act.ScrollByLine(-5)), kb("", "PageDown", act.ScrollByLine(1)), kb("SHIFT", "PageDown", act.ScrollByLine(5)), -- general kb( "CTRL", "c", act_callback(function(w, p) local has_selection = w:get_selection_text_for_pane(p) ~= "" if has_selection then w:perform_action(act.CopyTo("Clipboard"), p) else w:perform_action(act.SendKey({ mods = "CTRL", key = "c" }), p) end end) ), kb("CTRL", "v", act.PasteFrom("Clipboard")), kb("CTRL", "f", act.Search("CurrentSelectionOrEmptyString")), kb("SHIFT|CTRL", "l", act.ShowDebugOverlay), }, }