Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pranesh239/use-key-capture
Makes listening to key press event easy.
https://github.com/pranesh239/use-key-capture
custom-hook hacktoberfest keyboard-events react react-hooks
Last synced: about 2 months ago
JSON representation
Makes listening to key press event easy.
- Host: GitHub
- URL: https://github.com/pranesh239/use-key-capture
- Owner: pranesh239
- License: mit
- Created: 2020-01-06T17:20:43.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-04-23T02:07:42.000Z (8 months ago)
- Last Synced: 2024-04-23T05:45:01.519Z (8 months ago)
- Topics: custom-hook, hacktoberfest, keyboard-events, react, react-hooks
- Language: JavaScript
- Homepage: https://use-key-capture.netlify.com/
- Size: 4.14 MB
- Stars: 24
- Watchers: 2
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-react-components - useKeyCapture - A custom hook to ease the key-press listeners of a target/global. (UI Utilities / Device Input)
- fucking-awesome-react-hooks - `useKeyCapture`
- awesome-react - useKeyCapture - A custom hook to ease the key-press listeners of a target/global. ![](https://img.shields.io/github/stars/pranesh239/use-key-capture.svg?style=social&label=Star) (UI Components / Device Input/User Action)
- awesome-react-hooks-cn - `useKeyCapture`
- awesome-react-components - useKeyCapture - A custom hook to ease the key-press listeners of a target/global. (UI Utilities / Device Input)
- awesome-react-hooks - `useKeyCapture`
- fucking-awesome-react-components - useKeyCapture - A custom hook to ease the key-press listeners of a target/global. (UI Utilities / Device Input)
- awesome-react-hooks - `useKeyCapture`
README
![Downloads](https://img.shields.io/bundlephobia/minzip/use-key-capture?style=plastic)
use-key-capture ⌨️A custom hook to ease the key-press listeners of a target/global.
> Check the
> [demo](https://use-key-capture.netlify.com/demo)
> here
## The problem
Listening for key-press might be tedious when it comes to listening for combination keys such as Ctrl + Shift + A 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: Ctrl + Shift + A - `useKeyCapture` gives
```js
{
key: 'A',
isCaps: true,
isWithCtrl: true,
isWithShift: true
}
```## installation
**npm**
```bash
npm i use-key-capture
```**yarn**
```bash
yarn add use-key-capture
```## Usage
This same working demo is [here](https://use-key-capture.netlify.com/demo).
```jsx
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 (
Type QWERTY in the input element below. If the focus is outside the
target, we won't see any change.
{displayKeys.map(key => {
return (
{key}
);
})}
);
};export default TargetEventComponent;
```## Props
### keyData
It will be the most used props from `useKeyCapture`. It gives the key/key varient/key combinations pressed.
| Property | Type |
| ------------------ | ------- |
| key | String |
| isEnter | Boolean |
| isBackspace | Boolean |
| isEscape | Boolean |
| isCapsLock | Boolean |
| isTab | Boolean |
| isSpace | Boolean |
| isArrow | Boolean |
| isArrowRight | Boolean |
| isArrowLeft | Boolean |
| isArrowUp | Boolean |
| isArrowDown | Boolean |
| isWithShift | Boolean |
| isWithCtrl | Boolean |
| isWithMeta | Boolean |
| isWithAlt | Boolean |
| isCaps | Boolean |
| isSmall | Boolean |
| isNumber | Boolean |
| isSpecialCharacter | Boolean |### 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.