# ray-hotkeys

> ray hotkeys, keycode

Latest version **1.0.4** (published 2022-12-12) · MIT license · 0 weekly downloads

## Install

```sh
npm install ray-hotkeys
pnpm add ray-hotkeys
yarn add ray-hotkeys
bun add ray-hotkeys
```

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.4 |
| Published | 2022-12-12 |
| First published | 2022-12-12 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 21.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | ilex |
| Maintainers | ilex.h |

## Links

- npm: https://www.npmjs.com/package/ray-hotkeys
- npm.io page: https://npm.io/package/ray-hotkeys

## Recent versions

- 1.0.4 (latest) — 2022-12-12
- 1.0.3 — 2022-12-12
- 1.0.2 — 2022-12-12
- 1.0.1 — 2022-12-12
- 1.0.0 — 2022-12-12

## README

# ray-hotkeys

hot key

## install

npm i --save ray-hotkeys

## usage

```js
import { keymap, utils, getEventKey } from 'ray-hotkeys';

utils.isDel(e);
utils.isSave(e);

const keycode = getEventKey(event);

keycode === keymap.ESC
keycode === keymap.DEL
keycode === keymap.ENTER
keycode === keymap.SHIFT
...

```

## other api

* KeyCode: `import KeyCode from 'ray-hotkeys/lib/KeyCode'`;

* disableZoom: `import disableZoom from 'ray-hotkeys/keytools/disableZoom'`;

### shortcutKey

shortcutKey 执行时机：由 `keyup and keydown` 事件唤起。

```js
import { shortcutKey } from 'ray-hotkeys';
// define short of 'a'
shortcutKey('a', function(){ alert('you pressed a!') });

// returning false stops the event and prevents default browser events
shortcutKey('ctrl+r', function(){ alert('stopped reload!'); return false });

// 绑定多个快捷键
shortcutKey('⌘+r, ctrl+r', function(event, handler){
  console.log(handler.shortcut, handler.scope); // "ctrl+r", "all"
});

// 判断当前按下的键
if(shortcutKey.shift) {
  alert('shift is pressed!');
}
shortcutKey('shift+m, ctrl+m', function () {
  alert('绑定多个快捷键');
  // 判断当前按下的键
  if(shortcutKey.shift) {
    alert('shift is pressed!');
  }
});

// 键盘 keyCode
if(shortcutKey.isPressed("M")) {
  alert('M key is pressed');
}
// 键盘 code 值
if(shortcutKey.isPressed(77)) {
  alert('M key is pressed');
}

// 获取当前按下的所有键
shortcutKey.getPressedKeyCodes();

// 设置不同的 scope，用于页面不同区域定制快捷键
// define shortcuts with a scope
shortcutKey('o, enter', 'my', function(){ /* do something */ });
shortcutKey('o, enter', 'you', function(){ /* do something else */ });

// 设置 scope (只有 'all' and 'my' 下的 shortcuts 将会被触发)
shortcutKey.setScope('my'); // default scope is 'all'

// 重置 filter
// 返回 false，则不执行 shortcut
shortcutKey.filter = function(event){
  const tagName = (event.target || event.srcElement).tagName;
  shortcutKey.setScope(/^(INPUT|TEXTAREA|SELECT)$/.test(tagName) ? 'input' : 'other');
  return true;
}

// 重置
const myKey = shortcutKey.reset();
myKey('a', function() { /* ... */ });

shortcutKey(); // --> TypeError: 'undefined' is not a function

// 解绑
// unbind 'a' handler
shortcutKey.unbind('a');

// unbind a key only for a single scope
// when no scope is specified it defaults to the current scope (shortcutKey.getScope())
shortcutKey.unbind('o, enter', 'my');
shortcutKey.unbind('o, enter', 'you');
```

## Lecense

MIT

---
_Source: https://npm.io/package/ray-hotkeys · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
