Shortcuts
Super performant and feature rich shortcuts management library.
This library is just a thin wrapper over ShoSho
that provides a VSCode-like interface for managing shortcuts. Definitely check out ShoSho
, which provides more features and it may offer a lower-level but maybe more convenient API for your use case.
Install
npm install --save shortcuts
Usage
The following interface is provided:
type Descriptor = {
handler?: ( event?: Event ): boolean | void,
shortcut: string
};
type Disposer = {
(): void
};
type Options = {
capture?: boolean,
target?: Window | Document | HTMLElement | SVGElement | MathMLElement,
shouldHandleEvent?: ( event: Event ) => boolean
};
class Shortcuts {
constructor ( options: Options );
get (): Descriptor[];
add ( descriptor: Descriptor | Descriptor[] ): void;
register ( descriptor: Descriptor | Descriptor[] ): Disposer;
remove ( descriptor: Descriptor | Descriptor[] ): void;
reset (): void;
trigger ( shortcut: string ): boolean;
start (): void;
stop (): void;
}
This is how you'd use the library:
import {Shortcuts} from 'shortcuts';
const shortcuts = new Shortcuts ({
capture: true,
target: document,
shouldHandleEvent ( event ) {
return true;
}
});
const onCtrlB = () => {};
shortcuts.add ([
{
shortcut: 'Ctrl+A',
handler: () => {
return true;
}
},
{
shortcut: 'Ctrl+B',
handler: onCtrlB
},
{
shortcut: 'CmdOrCtrl+K Shift+B',
handler: () => {
return true;
}
},
{
shortcut: '-Ctrl+A'
}
]);
shortcuts.remove ({ shortcut: 'Ctrl+B', handler: onCtrlB });
shortcuts.remove ({ shortcut: 'Ctrl+A' });
shortcuts.start ();
shortcuts.stop ();
shortcuts.reset ();
Thanks
- Thanks to the people at Koding for providing me the
shortcuts
package name on NPM! If you're looking for the previous package published under that name you can find it here (v0.x
).
License
MIT © Fabio Spampinato