3.9 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 20210314-114017-04b7cedd) |
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
orDrag
event - The number of consecutive clicks within the click threshold (the click streak)
- The mouse button;
Left
,Right
, orMiddle
.
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.