https://github.com/daylilyfield/hotcakey
the cross-platform global shortcut (aka hotkey) module for node.js and electron
https://github.com/daylilyfield/hotcakey
electron global-shortcuts hotkey keyboard nodejs shortcut
Last synced: 12 months ago
JSON representation
the cross-platform global shortcut (aka hotkey) module for node.js and electron
- Host: GitHub
- URL: https://github.com/daylilyfield/hotcakey
- Owner: daylilyfield
- Created: 2021-09-25T10:57:04.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2021-11-03T09:38:37.000Z (over 4 years ago)
- Last Synced: 2025-06-27T13:18:53.263Z (about 1 year ago)
- Topics: electron, global-shortcuts, hotkey, keyboard, nodejs, shortcut
- Language: C++
- Homepage:
- Size: 531 KB
- Stars: 6
- Watchers: 1
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🥞 hotcakey 🥞
hotcaKey is the global shortcut (aka hotkey) module for node.js and electron.
hotcakey is now actively under deploment, so api may have breaking changes even in a short term.
## motivation
i need to detect global shortcut `keydown` and `keyup` events on electron platform. i found a few solution such as [iohook](https://github.com/wilix-team/iohook/). iohook is the excellent module but too powerfull for me. i want to know only key events which has the predetermined combination.
## feature
- detecting key combination globally even if your application does not have a focus.
- using [web-standard physical keycodes](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code/code_values)
- working with node.js and electron.
- working on macOS, windows. (and linux for near future)
## install
```sh
npm i hotcakey
```
if you use hotcakey with electron, you may need to run [electron-rebuild](https://github.com/electron/electron-rebuild).
## usage
```typescript
import hotcakey from 'hotcakey'
async function main() {
await hotcakey.activate()
hotcakey.register(['Shift', 'Space'], (event) => {
console.log('%s event at %d', event.type, event.time)
})
}
main()
```
## examples
please check out the [./examples](./examples) directory. you can find some examples for [node.js](./examples/node) and [electron](./examples/electron) there. if you would like to run examples on your computer, please clone this repository, open your terminal, and then input the commands below.
```sh
# run node.js example
npm run examples:node
# run electron example
npm run examples:electron
```
## available physical keycodes
hotcakey uses physical keycodes defiend in web standard. see type definitions [here](./src/index.ts) for detail.
## supported os
- [x] macOS 10.7 or higher
- [x] windows 10 or higher
- [ ] linux
## supported platform
- [x] node.js 14.14 or higher
- [x] electron 14 or higher