Home

Awesome

Melpa Status Melpa Stable Status <a href="https://www.patreon.com/sanityinc"><img alt="Support me" src="https://img.shields.io/badge/Support%20Me-%F0%9F%92%97-ff69b4.svg"></a>

Disable the mouse in Emacs

Want to force yourself to use the keyboard in Emacs, and you don't have a cat available to obstruct your trackpad? Use this local or global minor mode to suppress the default mouse behaviours, as an alternative to using a cat (see picture below).

You might also consider the inhibit-mouse package instead, which uses a more elaborate approach that better handles certain modes like evil, and the built-in tab-bar.

Cat disabling trackpad by lying across it while the author tries to continue working

Installation

Manual

Ensure disable-mouse.el is in a directory on your load-path, and add the following to your ~/.emacs or ~/.emacs.d/init.el:

(require 'disable-mouse)
(global-disable-mouse-mode)

If you use Evil, this may be insufficient, since the keymaps for Evil's individual states will contain bindings for mouse events. disable-mouse provides a function disable-mouse-in-keymap which you can use to neutralise any keymap, so Evil users might use a snippet like the following in addition to that above:

(mapc #'disable-mouse-in-keymap
  (list evil-motion-state-map
        evil-normal-state-map
        evil-visual-state-map
        evil-insert-state-map))

Note that you won't be able to restore those Evil mouse bindings by turning off disable-mouse-mode. You'll need to restart Emacs instead.

(As noted above, Evil users are likely to prefer the inhibit-mouse package.)

MELPA

If you're an Emacs 24 user or you have a recent version of package.el you can install disable-mouse from the MELPA repository. The version of disable-mouse there will always be up-to-date.

Enable global-disable-mouse-mode with M-x global-disable-mouse-mode, by using the customisation interface, or by adding code such as the following to your emacs startup file:

(global-disable-mouse-mode)

If you want to only disable the mouse in only a certain mode, add disable-mouse-mode to that mode's hook.

Related packages

After writing this, I found handoff, which has a similar goal, but aims for more annoyance and frivolity.

inhibit-mouse provides only a global mode, but it works by using input-decode-map, which gives better results overall, particularly for evil users. These days you should probaby prefer that package to this one.

About

Author: Steve Purcell <steve at sanityinc dot com>

Homepage: https://github.com/purcell/disable-mouse

This little library was extracted from the author's full Emacs configuration, which readers might find of interest.

<hr>

💝 Support this project and my other Open Source work

💼 LinkedIn profile

✍ sanityinc.com