ComboKeys Context

This is a light wrapper about ComboKeys that provides context aware key
bindings.
Version 1.x Info
For the current stable version, please see the v1.x branch. The
master branch is for the work in the upcoming version 2 which will have plugin support as well as a more powerful context
system.
Compatibility
Tested against the latest version of Google Chrome, latest Firefox, and Internet Explorer 9, 10 and 11. Should work with all
browsers that works with ComboKeys as long as Object.keys
is polyfilled where needed.
Install
npm install combokeys-context
Documentation
Full API Docs
ComboKeys Context JSDocs
Basic Usage
var ComboKeys = require('combokeys');
var ComboKeysContext = require('combokeys-context');
var comboKeys = new ComboKeys(document);
var comboKeysContext = new ComboKeysContext(comboKeys);
comboKeysContext.registerPlugin(new ComboKeysContext.plugins.TagCallbackFilter(['input']);
var callbackGlobal = function(evt, key) {
console.log('Global: ' + key);
}
var callbackContext = function(evt, key) {
console.log('Context A: ' + key);
}
comboKeysContext.bind('alt+a', callback);
comboKeysContext.bind('alt+b', callback);
comboKeysContext.bind('alt+b', 'contextA', callback);
comboKeysContext.switchContext('contextA');
comboKeysContext.clearContext();
comboKeysContext.unbind('alt+b');
comboKeysContext.unbind('alt+b', 'contextA');
comboKeysContext.unbindAll('alt+b');
comboKeysContext.reset();
ComboKeys Compatibility
This library modifies ComboKeys.stopCallback
to add support for
plugins. By default this library will not stop a callback in input
tags or respond to the combokeys
class on an element. To add this
support you can use the TagCallbackFilter
, ElementAttributeFilter
and the ClassNameFilter
plugins.
var comboKeysContext = new ComboKeysContext(new ComboKeys());
var options = {
stopPropagation: ComboKeysContext.STOP_CALLBACK
};
comboKeysContext.registerPlugin(
new TagCallbackFilter(['input', 'select', 'textarea'], options)
);
comboKeysContext.registerPlugin(
new ClassNameFilter(['combokeys'], options)
);
comboKeysContext.registerPlugin(new ElementAttributeFilter({
isContentEditable: 'true'
}, options));
License
Combokeys Context is released under the ISC license. See LICENSE.