The definitive source of the best
JavaScript libraries, frameworks, and plugins.

  • ×


    A keyboard input capturing utility in which any key can be a modifier key.
    Filed under 

    • 🔾58%Overall
    • 3,192
    • 37.9 days
    • 🕩322
    • 👥19


    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.
    Show All