(emacs)Mouse Buttons

Next: Disabling Prev: Function Keys Up: Key Bindings

Rebinding Mouse Buttons

   Emacs uses Lisp symbols to designate mouse buttons, too.  The
ordinary mouse events in Emacs are "click" events; these happen when you
press a button and release it without moving the mouse.  You can also
get "drag" events, when you move the mouse while holding the button
down.  Drag events happen when you finally let go of the button.

   The symbols for basic click events are `mouse-1' for the leftmost
button, `mouse-2' for the next, and so on.  Here is how you can
redefine the second mouse button to split the current window:

     (global-set-key [mouse-2] 'split-window-vertically)

   The symbols for drag events are similar, but have the prefix `drag-'
before the word `mouse'.  For example, dragging the left button
generates a `drag-mouse-1' event.

   You can also define events that occur when a mouse button is pressed
down.  These events start with `down-' instead of `drag-'.  Such events
are generated only if they have key bindings.  When you get a
button-down event, a corresponding click or drag event will always

   If you wish, you can distinguish single, double, and triple clicks.
A double click means clicking a mouse button twice in approximately the
same place.  The first click generates an ordinary click event.  The
second click, if it comes soon enough, generates a double-click event
instead.  The event type for a double click event starts with
`double-': for example, `double-mouse-3'.

   This means that you can give a special meaning to the second click at
the same place, but it must act on the assumption that the ordinary
single click definition has run when the first click was received.

   This constrains what you can do with double clicks, but user
interface designers say that this constraint ought to be followed in
any case.  A double click should do something similar to the single
click, only "more so".  The command for the double-click event should
perform the extra work for the double click.

   If a double-click event has no binding, it changes to the
corresponding single-click event.  Thus, if you don't define a
particular double click specially, it executes the single-click command

   Emacs also supports triple-click events whose names start with
`triple-'.  Emacs does not distinguish quadruple clicks as event types;
clicks beyond the third generate additional triple-click events.
However, the full number of clicks is recorded in the event list, so you
can distinguish if you really want to.  We don't recommend distinct
meanings for more than three clicks, but sometimes it is useful for
subsequent clicks to cycle through the same set of three meanings, so
that four clicks are equivalent to one click, five are equivalent to
two, and six are equivalent to three.

   Emacs also records multiple presses in drag and button-down events.
For example, when you press a button twice, then move the mouse while
holding the button, Emacs gets a `double-drag-' event.  And at the
moment when you press it down for the second time, Emacs gets a
`double-down-' event (which is ignored, like all button-down events, if
it has no binding).

   The variable `double-click-time' specifies how long may elapse
between clicks that are recognized as a pair.  Its value is measured in
milliseconds.  If the value is `nil', double clicks are not detected at
all.  If the value is `t', then there is no time limit.

   The symbols for mouse events also indicate the status of the modifier
keys, with the usual prefixes `C-', `M-', `H-', `s-', `A-' and `S-'.
These always precede `double-' or `triple-', which always precede
`drag-' or `down-'.

   A frame includes areas that don't show text from the buffer, such as
the mode line and the scroll bar.  You can tell whether a mouse button
comes from a special area of the screen by means of dummy "prefix
keys."  For example, if you click the mouse in the mode line, you get
the prefix key `mode-line' before the ordinary mouse-button symbol.
Thus, here is how to define the command for clicking the left button in
a mode line to run `scroll-up':

     (global-set-key [mode-line mouse-1] 'scroll-up)

   Here is the complete list of these dummy prefix keys and their

     The mouse was in the mode line of a window.

     The mouse was in the vertical line separating side-by-side windows.

     The mouse was in a horizontal scroll bar.  This is the kind of
     scroll bar people normally use.

     The mouse was in a horizontal scroll bar.  Horizontal scroll bars
     do horizontal scrolling, and people don't use them often.

   You can put more than one mouse button in a key sequence, but it
isn't usual to do so.

automatically generated by info2www