Synopsis
CtrlTab.js is a shortcut key bindings library with multiple keystroke detection.
Installation
npm
$ npm install @dwtechs/ctrltab
Yarn
$ yarn add @dwtechs/ctrltab
Usage
ES6
import { Keyboard } from "@dwtechs/ctrltab";
let keyboard = new Keyboard();
keyboard.addCmd("action0", null, [32], action0, {
preventDefault: true,
groupName: "group1",
repeat: true
});
keyboard.addCmd("action1", { ctrl: true }, ["G"], action1, {groupName: "group1"});
// set another key for action1
keyboard.setInputs(
"group1",
"action1",
{ ctrl: false, alt: false, shift: false },
["Z", "T"]
);
// Enable group1 commands
keyboard.watch("group1");
function action0(isKeyDown) {
if (isKeyDown) {
// do something;
}
}
function action1(isKeyDown) {
if (isKeyDown) {
// do something;
}
}
IIFE
var keyboard = new Krait.Keyboard();
keyboard.addCmd("action0", null, [32], action0, {
preventDefault: true,
groupName: "group1"
});
keyboard.addCmd("action1", { ctrl: true }, ["G"], action1, {groupName: "group1"});
// set another key for action1
keyboard.setInputs(
"group1",
"action1",
{ ctrl: false, alt: false, shift: false },
["Z", "T"]
);
// Enable group1 commands
keyboard.watch("group1");
function action0(isKeyDown) {
if (isKeyDown) {
// do something;
}
}
function action1(isKeyDown) {
if (isKeyDown) {
// do something;
}
}
API Reference
interface CtrlKeys {
ctrl?: boolean;
alt?: boolean;
shift?: boolean;
}
interface Options {
preventDefault?: boolean; // default to false
groupName?: string; // default to "default"
scope?: this;
repeat?: boolean; // default to false
}
addCmd(
name: string,
ctrlKeys: CtrlKeys | null,
keys: Array<string | number>,
callback: Function,
options: Options | null
): Command {}
setInputs(
groupName: string,
commandName: string,
ctrlKeys: CtrlKeys,
keys: Array<string | number>
): boolean {}
listen(groupName: string): boolean {} //start watching a group of commands
ignore(groupName: string): boolean {} //stop watching a group of commands
default(groupName: string, commandName: string): boolean {} //set command to default settings
getCmd(groupName: string, commandName: string): Command | null {}
Contributors
CtrlTab.js is still in development and we would be glad to get all the help you can provide. To contribute please read contributor.md for detailed installation guide.
Stack
Purpose | Choice | Motivation |
---|---|---|
repository | Github | hosting for software development version control using Git |
package manager | npm | default node.js package manager |
language | TypeScript | static type checking along with the latest ECMAScript features |
module bundler | Rollup.js | advanced module bundler for ES6 modules |
unit testing | Jest | delightful testing with a focus on simplicity |