Home

Awesome

Downloads

<h1 align="center"> use-key-capture ⌨️ </h1> <p align="center" style="font-size: 1.2rem;">A custom hook to ease the key-press listeners of a target/global.</p>

Check the demo here

<hr />

The problem

Listening for key-press might be tedious when it comes to listening for combination keys such as <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>A</kbd> or the entered letter is a caps or small varient or a number.

The Solution

use-key-capture is a custom hook which will lets you not to worry about the key-press event. Just plugin in use-key-capture hook to the target you want to listen for key press event or by default it can listen for key-press event globally.It gives simple API, which helps you listen for complex key combinations with ease.

Example: <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>A</kbd> - useKeyCapture gives

{
    key: 'A',
    isCaps: true,
    isWithCtrl: true,
    isWithShift: true
}

installation

npm

npm i use-key-capture

yarn

yarn add use-key-capture

Usage

This same working demo is here.

import React from 'react';
import useKey from 'use-key-capture';
import './styles.css';

const displayKeys = ['Q', 'W', 'E', 'R', 'T', 'Y', 'Backspace'];

const TargetEventComponent = () => {
  /* 
    keyData - gives the data of pressed key, i.e) isCaps, isNumber, isWithShift. 
    getTargetProps - a prop getter to be given if a target (input, textarea) have 
    to be listened for key-press.
    */
  const { keyData, getTargetProps } = useKey();

  const getIsActive = key => (keyData.key === key ? 'active' : '');

  return (
    <div className="container-target">
      <div className="message">
        Type QWERTY in the input element below. If the focus is outside the
        target, we won't see any change.
      </div>
      <input {...getTargetProps()} />
      <div className="container">
        {displayKeys.map(key => {
          return (
            <div key={key} className={`box ${getIsActive(key)}`}>
              {key}
            </div>
          );
        })}
      </div>
    </div>
  );
};

export default TargetEventComponent;

Props

keyData

It will be the most used props from useKeyCapture. It gives the key/key varient/key combinations pressed.

PropertyType
keyString
isEnterBoolean
isBackspaceBoolean
isEscapeBoolean
isCapsLockBoolean
isTabBoolean
isSpaceBoolean
isArrowBoolean
isArrowRightBoolean
isArrowLeftBoolean
isArrowUpBoolean
isArrowDownBoolean
isWithShiftBoolean
isWithCtrlBoolean
isWithMetaBoolean
isWithAltBoolean
isCapsBoolean
isSmallBoolean
isNumberBoolean
isSpecialCharacterBoolean

getTargetProps

type: function({})

A prop getter to be given if a target (input, textarea) have to be listened for key-press.

resetKeyData

type: function({})

It will reset all the values in keyData props to the initial values.