Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

jQuery Hotkeys lets you watch for keyboard events anywhere in your code supporting almost any key combination.

branch: master

This branch is 0 commits ahead and 0 commits behind master

Merge pull request #37 from rpocklin/master

Reviewed 'meta' key functionality for Mac and added 'hyper' keyboard shortcut and other missing keys
latest commit 4dbba5c13b
Robert Pocklington rpocklin authored
Octocat-spinner-32 test Reviewed 'meta' key functionality for Mac and added 'hyper' keyboard … February 24, 2014
Octocat-spinner-32 .gitignore Added more jasmine tests, grunt watch task and updated README. February 11, 2014
Octocat-spinner-32 .travis.yml Getting grunt to run in Travis-CI Environment. February 05, 2014
Octocat-spinner-32 Gruntfile.js Added more jasmine tests, grunt watch task and updated README. February 11, 2014
Octocat-spinner-32 README.md Reviewed 'meta' key functionality for Mac and added 'hyper' keyboard … February 24, 2014
Octocat-spinner-32 hotkeys.jquery.json Add in jQuery plugin manifest. January 17, 2013
Octocat-spinner-32 jquery-1.4.2.js Update jQuery to version 1.4.2. February 22, 2010
Octocat-spinner-32 jquery.hotkeys.js Reviewed 'meta' key functionality for Mac and added 'hyper' keyboard … February 24, 2014
Octocat-spinner-32 package.json Updated travis dependencies and build task. February 05, 2014
Octocat-spinner-32 test-static-01.html small syntax fix May 25, 2013
Octocat-spinner-32 test-static-02.html jQuery Hotkeys rewritten to work with jQuery 1.4.2. A bunch of old co… February 23, 2010
Octocat-spinner-32 test-static-03.html Update jQuery to version 1.4.2. February 22, 2010
Octocat-spinner-32 test-static-04.html jQuery Hotkeys rewritten to work with jQuery 1.4.2. A bunch of old co… February 23, 2010
Octocat-spinner-32 test-static-05.html Update jQuery to version 1.4.2. February 22, 2010
Octocat-spinner-32 test-static-06.html Reviewed 'meta' key functionality for Mac and added 'hyper' keyboard … February 24, 2014
Octocat-spinner-32 test-static-07.html Update jQuery to version 1.4.2. February 22, 2010
README.md

jQuery.Hotkeys Build Status

About

jQuery Hotkeys is a plug-in that lets you easily add and remove handlers for keyboard events anywhere in your code supporting almost any key combination.

This plugin is based off of the plugin by Tzury Bar Yochay: jQuery.hotkeys

The syntax is as follows:

$(expression).bind(types, keys, handler);
$(expression).unbind(types, handler);

$(document).bind('keydown', 'ctrl+a', fn);

// e.g. replace '$' sign with 'EUR'
$('input.foo').bind('keyup', '$', function(){
  this.value = this.value.replace('$', 'EUR');
});

Syntax when wanting to use jQuery's on()/off methods:

$(expression).on(types, null, keys, handler);
$(expression).off(types, handler);

$(document).on('keydown', null, 'ctrl+a', fn);

// e.g. replace '$' sign with 'EUR'
$('input.foo').on('keyup', null, '$', function(){
  this.value = this.value.replace('$', 'EUR');
});     

Example

Example

Event Types

Supported types are 'keydown', 'keyup' and 'keypress'

jQuery Compatibility

Works with jQuery 1.4.2 and newer.

It is known to be working with all the major browsers on all available platforms (Win/Mac/Linux)

  • IE 6/7/8+
  • FF 1.5/2/3+
  • Opera-9+
  • Safari-3+
  • Chrome-0.2+

Notes

Modifiers are not case sensitive (Ctrl == ctrl == cTRL)

If you want to use more than one modifier (e.g. alt+ctrl+z) you should define them by an alphabetical order e.g. alt+ctrl+shift

Hotkeys aren't tracked if you're inside of an input element (unless you explicitly bind the hotkey directly to the input). This helps to avoid conflict with normal user typing.

You can use namespacing by adding a suffix to the event type (e.g. keyup.toggle)

Meta and Hyper Keys

Meta and hyper keys don't register on keyup in any browser tested.

Chrome 33.0.1750.117

Meta key registers on keydown event. Hyper key registers on keydown event.

Firefox 27.0.1 and Safari 7.0.1

Meta key registers on keydown and keypress events. Hyper key registers on keydown and keypress events.

Opera 19.0

Meta key doesn't register at all :( Hyper key registers on keydown and keypress events.

TL;DR

Bind to keydown event for meta and hyper keys, but meta key does not work in Opera ;)

Addendum

Firefox is the most liberal one in the manner of letting you capture all short-cuts even those that are built-in in the browser such as Ctrl-t for new tab, or Ctrl-a for selecting all text. You can always bubble them up to the browser by returning true in your handler.

Others, (IE) either let you handle built-in short-cuts, but will add their functionality after your code has executed. Or (Opera/Safari) will not pass those events to the DOM at all.

So, if you bind Ctrl-Q or Alt-F4 and your Safari/Opera window is closed don't be surprised.

Something went wrong with that request. Please try again.