CtrlTab.js is a shortcut key bindings library with multiple keystroke detection.
$ npm install @dwtechs/ctrltab$ yarn add @dwtechs/ctrltabimport{Keyboard}from"@dwtechs/ctrltab";letkeyboard=newKeyboard();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 action1keyboard.setInputs("group1","action1",{ctrl: false,alt: false,shift: false},["Z","T"]);// Enable group1 commandskeyboard.watch("group1");functionaction0(isKeyDown){if(isKeyDown){// do something;}}functionaction1(isKeyDown){if(isKeyDown){// do something;}}varkeyboard=newKrait.Keyboard();keyboard.addCmd("action0",null,[32],action0,{preventDefault: true,groupName: "group1"});keyboard.addCmd("action1",{ctrl: true},["G"],action1,{groupName: "group1"});// set another key for action1keyboard.setInputs("group1","action1",{ctrl: false,alt: false,shift: false},["Z","T"]);// Enable group1 commandskeyboard.watch("group1");functionaction0(isKeyDown){if(isKeyDown){// do something;}}functionaction1(isKeyDown){if(isKeyDown){// do something;}}interfaceCtrlKeys{ctrl?: boolean;alt?: boolean;shift?: boolean;}interfaceOptions{preventDefault?: boolean;// default to falsegroupName?: 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 commandsignore(groupName: string): boolean{}//stop watching a group of commandsdefault(groupName: string,commandName: string): boolean{}//set command to default settingsgetCmd(groupName: string,commandName: string): Command|null{}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.
| 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 |