combokeys-context
v2.0.0-beta3
Published
Wrapper around Combokeys that provides support for context/scope.
Downloads
7
Maintainers
Readme
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
Basic Usage
var ComboKeys = require('combokeys');
var ComboKeysContext = require('combokeys-context');
var comboKeys = new ComboKeys(document);
var comboKeysContext = new ComboKeysContext(comboKeys);
// register a plugin
comboKeysContext.registerPlugin(new ComboKeysContext.plugins.TagCallbackFilter(['input']);
// define callbacks
var callbackGlobal = function(evt, key) {
// `this` is a reference to comboKeys
console.log('Global: ' + key);
}
var callbackContext = function(evt, key) {
console.log('Context A: ' + key);
}
// bind in the global context
comboKeysContext.bind('alt+a', callback);
comboKeysContext.bind('alt+b', callback);
// bind into a context
comboKeysContext.bind('alt+b', 'contextA', callback);
// alt-a press would result in Global: alt+a
// alt-b press would result in Global: alt+b
comboKeysContext.switchContext('contextA');
// alt-a press would result in Global: alt+a
// alt-b press would result in Context A: alt+b
// return to global only state
comboKeysContext.clearContext();
// unbind the global, leaving contextA along
comboKeysContext.unbind('alt+b');
// unbind contextA
comboKeysContext.unbind('alt+b', 'contextA');
// unbind all will remove global and all context bindings
comboKeysContext.unbindAll('alt+b');
// reset will remove all bindings, will also reset ComboKeys
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.