1
1
mirror of https://github.com/wez/wezterm.git synced 2024-12-19 11:21:39 +03:00
wezterm/docs/config/mouse.md
2021-03-06 11:32:15 -08:00

3.8 KiB

Mouse bindings are configurable.

The assignments are based around a triggering mouse event which may be combined with a set of modifier keys to produce an action.

Default Mouse Assignments

In the table below, Triple Left Down means that the left mouse button is being triple clicked and that the event matches the downstroke of the third quick consecutive press. Triple Left Up matches the subsequent release event of that triple click, so for a triple click both SelectTextAtMouseCursor="Line" and CompleteSelection will be triggered in that order.

Event Modifiers Action
Triple Left Down NONE SelectTextAtMouseCursor="Line"
Double Left Down NONE SelectTextAtMouseCursor="Word"
Single Left Down NONE SelectTextAtMouseCursor="Cell"
Single Left Down SHIFT ExtendSelectionToMouseCursor={}
Single Left Up NONE CompleteSelectionOrOpenLinkAtMouseCursor="PrimarySelection"
Double Left Up NONE CompleteSelection="PrimarySelection"
Triple Left Up NONE CompleteSelection="PrimarySelection"
Single Left Drag NONE ExtendSelectionToMouseCursor="Cell"
Double Left Drag NONE ExtendSelectionToMouseCursor="Word"
Triple Left Drag NONE ExtendSelectionToMouseCursor="Line"
Single Middle Down NONE PasteFrom="PrimarySelection"
Single Left Drag SUPER StartWindowDrag (since nightly)
Single Left Drag `CTRL SHIFT`

If you don't want the default assignments to be registered, you can disable all of them with this configuration; if you chose to do this, you must explicitly register every binding.

return {
  disable_default_mouse_bindings = true,
}

Configuring Mouse Assignments

since: 20200607-144723-74889cd4

You can define mouse actions using the mouse_bindings configuration section:

local wezterm = require 'wezterm';

return {
  mouse_bindings = {
    -- Right click sends "woot" to the terminal
    {
      event={Down={streak=1, button="Right"}},
      mods="NONE",
      action=wezterm.action{SendString="woot"}
    },

    -- Change the default click behavior so that it only selects
    -- text and doesn't open hyperlinks
    {
      event={Up={streak=1, button="Left"}},
      mods="NONE",
      action=wezterm.action{CompleteSelection="PrimarySelection"},
    },

    -- and make CTRL-Click open hyperlinks
    {
      event={Up={streak=1, button="Left"}},
      mods="CTRL",
      action="OpenLinkAtMouseCursor",
    },
  },
}

The action and mods portions are described in more detail in the key assignment information below.

The event portion has three components;

  • Whether it is a Down, Up or Drag event
  • The number of consecutive clicks within the click threshold (the click streak)
  • The mouse button; Left, Right, or Middle.

A double click is a down-up-down sequence where either the second button down is held for long enough or is released and no subsequent down event occurs within the click threshold. When recognized, it emits a Down event with streak=2. If the mouse is moved while the button is held, a Drag event with streak=2 is generated. When the mouse button is released an Up event with streak=2 is generated.

The mouse event recognizer supports an arbitrary click streak, so if you wanted quadruple-click bindings you can specify streak=4.

Event Lua Representation
Triple Left Down event={Down={streak=3, button="Left"}}
Double Left Up event={Up={streak=2, button="Left"}}
Single Left Drag event={Drag={streak=1, button="Left"}}

Available Actions

See the KeyAssignment reference for information on available actions.