keysme

1.0.9 • Public • Published

KeysMe 😘

License: MIT Known Vulnerabilities Build Status code style: prettier

KeysMe is a tiny-tiny (note the double-tiny which makes it tiny * .5) library to handle keyboard interaction and super-complex hotkeys in a line.

  • 1Kb gzipped
  • ZERO dependencies (optional dependency on react to use the useHotkey hook)
  • 100% test coverage

...by design.

Exported as a ES module, can work with any JS project + has a beautiful React hook for even more enjoyment.

Installation

npm install --save keysme

Usage

Pure function

As a pure function it can be used to perform simple checks against a KeyboardEvent-like object and a hotkey (string):

// checkHotkey(KeyboardEvent-like, hotkey);
 
// Example
 
import {checkHotkey} from "keysme";
 
myInput.addEventListener('keyup', e => 
    // works in a focused input
    checkHotkey(e, 'Shift-Ctrl-A') && doSomething()
);
 
body.addEventListener('keyup', e =>
    // works on the entire page 
    checkHotkey(e, 'Meta-Space') && doSomething()
);
 

Global event registerer

It can register and deregister global events for you (those that are listened on the body):

// registerHotkey(hotkey, f);
// deregisterHotkey(hotkey, f);
// deregisterHotkey(hotkey);
 
// Example
 
import {registerHotkey, deregisterHotkey} from "keysme";
 
registerHotkey('Shift-Ctrl-A', doSomething);
deregisterHotkey('Shift-Ctrl-A', doSomething);
deregisterHotkey('Shift-Ctrl-A');

React hook

As a hook it works easily with React functional components:

import {useHotkey} from 'keysme/react';
 
const Component = props => {
    useHotkey('Shift-Ctrl-A', doSomething, dependencies);
    return <div>I am amazing</div>
};

As a hook it will take care of registering and deregistering for you. Internally it will operate something like:

// ...
useEffect(() => {
    registerHotkey(options.hotkey, option.f);
    return () => {
        deregisterHotkey(options.hotkey, options.f)
    };
}, options.deps);
// ...

Please fork and contribute.

Package Sidebar

Install

npm i keysme

Weekly Downloads

6

Version

1.0.9

License

MIT

Unpacked Size

22.4 kB

Total Files

16

Last publish

Collaborators

  • oaxoa