Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.


Version 2.1.5

Keypress is a robust keyboard input capturing Javascript utility focused on input for games. For details and documentation, please visit

If you're using Keypress with Meteor, see the Meteor notes.

Copyright 2016 David Mauro
released under the Apache License, version 2.0

What's new





  • Added some simple jQuery proofing so you can pass in the result of a jQuery selector into the Listener's constructor. Thanks to mallocator for the request. Issue #89
  • Changed the default behavior of how sequence combos behavior. Most people probably would have considered this a bug, so I'm not considering this API breaking. Thanks to ronnyek for pointing the problem out in Issue #68.
  • Bower file cleaned up thanks to kkirsche. Pull request #97
  • Keys in FF/Gecko - and = fixed thanks to deanputney. Pull request #95




  • Fixed a bug unregistering combos using arrays of keys
  • Added ie8 compatibility shim. Thanks to barrkel. Issue #41
  • Fixed a bug targetting the semicolon key in Firefox. Thanks to mikekuehn.
  • Added commonJS module support. Issue #45


  • Fixed a bug that prevented combos from unregistering, and updated the docs for how to unregister properly. Thanks to pelly and g00fy-. Issue # 34.
  • Added AMD support. Issue #37.


  • Fixed a big ole bug with meta/cmd combos. Thanks to lexey111. Issue #29.
  • Fixed a bug with the Windows key being released on Windows systems. Issue #27.


  • Keypress now has a listener class that must be instantiated. The functions that were previously in the global window.keypress object are now public methods of the window.keypress.Listener class.
  • Each instance of a Keypress listener can be bound to a DOM element by passing in the element to the listener's constructor.
  • Combos now default to being ordered (the property is now called is_unordered and is false by default).
  • Combos' handlers preventDefault unless the handler returns true.
  • The "combo" public method is now called "simple_combo".
  • The basic combo helpers for simple, counting and sequence combos no longer have a third prevent_default optional parameter.
  • Debugging console logs can be enabled by setting keypress.debug to true.
  • All key event callbacks send a third argument specifying whether the event is firing again automatically because the key has remained pressed down.


  • Fix escape key bug. Issue #17.
  • Fix unregister bug. Issue #24.


  • Ensure that on_release is called for all combos, not just counting combos.
  • Fix bug that was causing is_ordered to be ignored.
  • Fixed an edge case for a counting combo's count not being reset.
  • Improve how key events are bound


  • Fixed combo matching to prevent performance issues as more keys are pressed.


  • Fixed a bug with exclusive combos not properly excluding each other in some cases.
  • Feature added to allow for combos that do not fire if unrelated keys are also pressed ("is_solitary" boolean).


  • Put negative edge in sequences.
  • See if we can do away with keyup_fired and count properties.