• Stars
    star
    11,675
  • Rank 2,827 (Top 0.06 %)
  • Language
    JavaScript
  • License
    Apache License 2.0
  • Created over 12 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Simple library for handling keyboard shortcuts in Javascript

Mousetrap

CDNJS

Mousetrap is a simple library for handling keyboard shortcuts in Javascript.

It is licensed under the Apache 2.0 license.

It is around 2kb minified and gzipped and 4.5kb minified, has no external dependencies, and has been tested in the following browsers:

  • Internet Explorer 6+
  • Safari
  • Firefox
  • Chrome

It has support for keypress, keydown, and keyup events on specific keys, keyboard combinations, or key sequences.

Getting started

  1. Include mousetrap on your page before the closing </body> tag

    <script src="/path/to/mousetrap.min.js"></script>

    or install mousetrap from npm and require it

    var Mousetrap = require('mousetrap');
  2. Add some keyboard events to listen for

    <script>
        // single keys
        Mousetrap.bind('4', function() { console.log('4'); });
        Mousetrap.bind("?", function() { console.log('show shortcuts!'); });
        Mousetrap.bind('esc', function() { console.log('escape'); }, 'keyup');
    
        // combinations
        Mousetrap.bind('command+shift+k', function() { console.log('command shift k'); });
    
        // map multiple combinations to the same callback
        Mousetrap.bind(['command+k', 'ctrl+k'], function() {
            console.log('command k or control k');
    
            // return false to prevent default browser behavior
            // and stop event from bubbling
            return false;
        });
    
        // gmail style sequences
        Mousetrap.bind('g i', function() { console.log('go to inbox'); });
        Mousetrap.bind('* a', function() { console.log('select all'); });
    
        // konami code!
        Mousetrap.bind('up up down down left right left right b a enter', function() {
            console.log('konami code');
        });
    </script>

Why Mousetrap?

There are a number of other similar libraries out there so what makes this one different?

  • There are no external dependencies, no framework is required
  • You are not limited to keydown events (You can specify keypress, keydown, or keyup or let Mousetrap choose for you).
  • You can bind key events directly to special keys such as ? or * without having to specify shift+/ or shift+8 which are not consistent across all keyboards
  • It works with international keyboard layouts
  • You can bind Gmail like key sequences in addition to regular keys and key combinations
  • You can programatically trigger key events with the trigger() method
  • It works with the numeric keypad on your keyboard
  • The code is well documented/commented

Tests

Unit tests are run with mocha.

Running in browser

View it online to check your browser compatibility. You may also download the repo and open tests/mousetrap.html in your browser.

Running with Node.js

  1. Install development dependencies

    cd /path/to/repo
    npm install
  2. Run tests

    npm test

Documentation

Full documentation can be found at https://craig.is/killing/mice

More Repositories

1

rainbow

Simple syntax highlighting library written in javascript
JavaScript
3,296
star
2

chromephp

class for logging PHP variables to Google Chrome console
PHP
1,377
star
3

chromelogger

chrome extension for server side console logging
JavaScript
901
star
4

gator

Event delegation in Javascript
JavaScript
492
star
5

chromelogger-python

Python library for logging variables to Google Chrome console
Python
233
star
6

html-muncher

renames classes and ids in your css, javascript, and html to save bytes and obfuscate your code
Python
177
star
7

luna-testing

Simple, modern, opinionated JavaScript unit testing
JavaScript
151
star
8

mmlx

NES chiptune programming language
Python
86
star
9

sonic

fast, lightweight PHP 5.3 MVC framework
PHP
63
star
10

xtab

Chrome extension for limiting the total number of tabs you can have open at the same time
JavaScript
59
star
11

sublime-goto-window

Sublime Text plugin to quickly switch to any open window using a keyboard command
Python
41
star
12

nijikodo

Code syntax highlighting library written in PHP.
PHP
30
star
13

sublime-jsx

Simple Sublime Text 3 JSX implementation
25
star
14

sublime-smart-match

Sublime Text package to make parenthesis, bracket, and square bracket completions smarter
Python
17
star
15

aftershave

Compiled javascript templates
JavaScript
17
star
16

cloud-storage

Simple node js module for uploading and removing files from Google Cloud Storage
JavaScript
13
star
17

storm

Simple ORM for Tornado
Python
8
star
18

octopus

Simple asynchronous helpers
JavaScript
7
star
19

sonic-extensions

repository of official extensions for sonic framework
PHP
6
star
20

clapp

Command line app builder for go
Go
4
star
21

shift-voter-analysis

Script to analyze shift voting algorithms
JavaScript
2
star
22

show-missing-revs

Shows subversion revisions that have not been merged from one branch to another.
Shell
1
star
23

static-shuffle

Create a deterministic shuffle of an array given a seed
JavaScript
1
star