hotkey-listener

0.0.6 • Public • Published

hotkey-listener

A modest js library that dispatches low-level keyboard events in the form of CustomEvents.

Issues

Hotkey listener is 5.99kb according to Unpkg. https://unpkg.com/browse/hotkey-listener/

Hotkey Listener is 2.6kb GZipped according to Bundlephobia. https://bundlephobia.com/result?p=hotkey-listener@0.0.3

Hotkey Listener can only be registered on HTMLElement's that implement the "KeyboardEvent" interface.

For example: window, document

Installation

npm install hotkey-listener
 
## OR 
 
yarn add hotkey-listener

Usage

// index.js
 
hotkeyListener.register({
  element: window,
  keys: [
    "f5",
    "ctrl+d"
  ],
  eventOptions: {
    // Required to preventDefault() in chrome
    cancelable: true
  }
})
 
window.addEventListener("keydown:f5", (event) => {
  // Prevent window refresh
  event.preventDefault()
  console.log("f5 pushed")
  console.log(event.cancelable)
})
 
window.addEventListener("keydown:ctrl+d", (event) => {
  event.preventDefault()
  console.log(`${event.detail.key} pushed`) // ctrl+d pressed
})

Hotkey listener creates custom keyup:<keystroke> and keydown:<keystroke> events.

Events also record the key that was pressed via event.detail.key

API Reference

hotkeyListener.register({
  element: <HTMLElement>, // Default is window
  keys: <String[]>,
 
  // https://github.com/jaywcjlove/hotkeys#option
  // element, keyup, and keydown are already predefined
  hotkeyOptions: {
    scope: <String>,
    splitKey <String>
  },
 
  // https://developer.mozilla.org/en-US/docs/Web/API/Event/Event
  // https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent
  eventOptions: {
    bubbles: <Boolean>, // default false
    cancelable: <Boolean>, // default false
    composed: <Boolean>, // default false
    detail: { key: "<key pressed>" }
    // Detail is an Object you can attach other [key: value] pairs to
  },
})

Hotkeys API

Should you need more finely grained tuning of hotkeys, you can communicate with the hotkeys API directly. For example, to enable hotkeys on input, textarea, etc, you can do the following:

import hotkeyListener from "hotkey-listener"
 
hotkeyListener.hotkeys.filter(() => true)

https://github.com/jaywcjlove/hotkeys#filter

How it works?

Hotkey-Listener under the hood uses the hotkeys library to dispatch CustomEvents to the client.

Contributors

Readme

Keywords

none

Package Sidebar

Install

npm i hotkey-listener

Weekly Downloads

12

Version

0.0.6

License

MIT

Unpacked Size

136 kB

Total Files

17

Last publish

Collaborators

  • paramagicdev